web-dev-qa-db-ja.com

シェルから特定のX11ウィンドウを閉じる方法は?

制御アプリケーションを強制終了せずに、コマンドラインから特定のウィンドウを閉じるにはどうすればよいですか?

明確にするための例に基づく質問:

私は最近、大混乱を実行し、多くのfirefox- windowsを開くアプリケーションを持っていました。 firefoxを終了せずにそれらを閉じる必要がありました(これはfirefoxのセッション復元を介してウィンドウを復元するだけなので)。閉じるボタンを押すように、シェルからウィンドウを「閉じる」にはどうすればよいですか?

3
Golar Ramblar

簡単に試してください

wmctrl -c firefox

From wmctrl man page :EWMH/NetWM互換のXウィンドウマネージャーと対話します。

  • -Fオプションを使用すると、より厳密にすることができます:

    -Fウィンドウ名の引数()は、大文字と小文字が区別される正確なウィンドウタイトルとして扱われます。このオプションがないと、ウィンドウタイトルは、ウィンドウ全体のタイトルの大文字と小文字を区別しないサブ文字列と見なされます。

  • 特定のウィンドウを強制終了するには、ウィンドウをwmctrl -lでリストしてから、wmctrl -ic IDで閉じます。

また答えた ここ

2
Pablo A

xlswxdotool の組み合わせでうまくいきます。

xlswはウィンドウをタイトルとタイプ別にリストし、xdotoolはウィンドウに対してアクションを実行します。原則として、xdotoolはウィンドウの名前も検索できますが、ポップアップウィンドウを見逃していました。

bash

xlsw | grep 'Firefox/Popup' | awk '{print $1}' | \
  while read _windowID; do xdotool windowclose "${_windowID}"; done

説明:

xlswは、追加情報とともにウィンドウIDのリストを出力します。出力は次のようになります。

[...]
0x04800001  u--  Pale moon/pale moon  Pale Moon
0x04800092  uio  NA           Pale Moon
0x04800093  u-o  Pale moon/palemoon  Pale Moon
0x04800099  u-o  Pale moon/palemoon  Pale Moon
0x04828D21  u-o  Pale moon/Popup  Pale Moon
0x0489C5D6  u-o  Pale moon/Popup  Pale Moon
0x03600001  ui-  NA           NA
0x04604E77  --o  Claws-mail/claws-mail  claws-mail
0x04604EAC  --o  Claws-mail/claws-mail  claws-mail
0x04604F22  --o  Claws-mail/claws-mail  claws-mail
0x05C00001  uio  NA           NA
0x05E00001  u--  NA           NA
0x05200007  ui-  NA           NA
0x05E00002  u--  Wine/Explorer.exe  
[...]

次に、grep-コマンドを使用して、firefoxのポップアップウィンドウを選択します(上記の例では、すべて消えています)。 awkは、ウィンドウIDである最初のエントリを出力し、次にxdotool windowcloseは、制御アプリケーションを強制終了せずにウィンドウを閉じます(like閉じるボタンを押す)。 (xdotool windowkillはアプリケーションを強制終了します。)

xdotoolには検索機能も組み込まれています:xdotool search 'firefox' windowcloseも、タイトルに「firefox」が含まれるすべてのウィンドウを閉じますが、「Popup」を区別するために機能させることはできませんでした。

2
Golar Ramblar

あなたがAskUbuntuのユーザーであることに気づいたので、Ubuntuのシェルから開いているウィンドウを選択して閉じるために使用する方法を共有します。同じ方法は、他の多くのLinuxディストリビューションでも機能します。

  • wmctrl -mlpxは、開いているウィンドウをウィンドウIDと各ウィンドウの説明とともに一覧表示します。 Firefoxの場合、説明はフォーカスのあるタブのタイトルであり、ポップアップウィンドウは個別のウィンドウとして一覧表示されます。

  • wmctrl -ic <window-id>は、ターミナルからid = window-idのウィンドウを閉じます。

Wmctrlをインストールしていない場合は、GitHubの他のソフトウェアをインストールしなくても、現在サポートされているすべてのバージョンのUbuntuにSudo apt install wmctrlを使用してインストールできます。 Fedoraパッケージデータベースにはwmctrlの.rpmもあります。

2
karel