wmctrl -l
によって生成されたIDを指定すると、ウィンドウIDにリンクされたプロセスを強制終了できるようになります。
あなたはそれをどのように提案しますか?」
Florian DieschとSergによる他の回答で説明されているようにPIDをリストする以外に、-ic
オプションを使用してウィンドウを直接閉じることができます。
$ wmctrl -ic 0x02e00085
wmctrl -lp
を使用する場合、PIDは3列目にあります。
指定されたウィンドウIDに対して使用できます
kill $(wmctrl -lp | awk '/^WID/ {print $3}')
(WIDをウィンドウIDに置き換えます)
wmctrl
には、PIDをリストするための別のフラグ-p
が実際にあります。
bash-4.3$ wmctrl -lp
0x0380000a 0 4410 eagle Desktop
0x04800006 0 4275 eagle XdndCollectionWindowImp
0x04800009 0 4275 eagle unity-launcher
0x0480000c 0 4275 eagle unity-panel
0x0480000f 0 4275 eagle unity-dash
0x04800010 0 4275 eagle Hud
これがわかれば、そのウィンドウのPIDを抽出してkill
に渡すという簡単な作業です。
wmctrl -lp | awk '/Window Title/{print $3}' | xargs kill
xkill -id [id]
を使用することもできます。 xkill ユーティリティは、他の回答とは異なる動作をします。ウィンドウを閉じたり、プロセスを直接強制終了したりするのではなく、ウィンドウを作成したクライアントを切断するようXサーバーに指示します。これは通常、リモートプロセスに対してもプロセスを終了させる効果があります。
各アプローチの長所と短所:
wmctrl -c
は、ウィンドウマネージャーの閉じるボタンを自分でクリックしたかのように、ウィンドウを "優雅に"閉じます。アプリケーションがウィンドウを閉じたくない、またはフリーズしている場合、これはプロセスを強制終了することはできず、ウィンドウを閉じることさえできません。
wmctrl -lp
からkill
でpidを使用すると、プロセスが強制終了されますが、プロセスが別のマシンで実行されている場合は、余分な作業が必要になるか、まったく機能しません。
xkill
は、Xサーバーのクラッシュまたはネットワーク接続の喪失から回復できるように設計されている場合、プロセスを終了しない可能性がありますが、ほとんどのアプリケーションはこれらの状況で単にクラッシュします。いずれにせよ、ウィンドウはなくなります。また、リモートプロセスとローカルプロセスは同じように処理されます。
xkill
を使用します。端末にxkill
と入力して、必要なウィンドウをクリックします。
xkill