制御アプリケーションを強制終了せずに、コマンドラインから特定のウィンドウを閉じるにはどうすればよいですか?
明確にするための例に基づく質問:
私は最近、大混乱を実行し、多くのfirefox
- windowsを開くアプリケーションを持っていました。 firefox
を終了せずにそれらを閉じる必要がありました(これはfirefox
のセッション復元を介してウィンドウを復元するだけなので)。閉じるボタンを押すように、シェルからウィンドウを「閉じる」にはどうすればよいですか?
簡単に試してください
wmctrl -c firefox
From wmctrl
man page :EWMH/NetWM互換のXウィンドウマネージャーと対話します。
-F
オプションを使用すると、より厳密にすることができます:
-F
ウィンドウ名の引数()は、大文字と小文字が区別される正確なウィンドウタイトルとして扱われます。このオプションがないと、ウィンドウタイトルは、ウィンドウ全体のタイトルの大文字と小文字を区別しないサブ文字列と見なされます。
wmctrl -l
でリストしてから、wmctrl -ic ID
で閉じます。また答えた ここ 。
xlsw
と xdotool
の組み合わせでうまくいきます。
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」を区別するために機能させることはできませんでした。
あなたがAskUbuntuのユーザーであることに気づいたので、Ubuntuのシェルから開いているウィンドウを選択して閉じるために使用する方法を共有します。同じ方法は、他の多くのLinuxディストリビューションでも機能します。
wmctrl -mlpx
は、開いているウィンドウをウィンドウIDと各ウィンドウの説明とともに一覧表示します。 Firefoxの場合、説明はフォーカスのあるタブのタイトルであり、ポップアップウィンドウは個別のウィンドウとして一覧表示されます。
wmctrl -ic <window-id>
は、ターミナルからid = window-id
のウィンドウを閉じます。
Wmctrlをインストールしていない場合は、GitHubの他のソフトウェアをインストールしなくても、現在サポートされているすべてのバージョンのUbuntuにSudo apt install wmctrl
を使用してインストールできます。 Fedoraパッケージデータベースにはwmctrlの.rpmもあります。