web-dev-qa-db-ja.com

特定のXウィンドウを強制終了するにはどうすればよいですか

wmctrl -lによって生成されたIDを指定すると、ウィンドウIDにリンクされたプロセスを強制終了できるようになります。

あなたはそれをどのように提案しますか?」

9
user123456

Florian DieschとSergによる他の回答で説明されているようにPIDをリストする以外に、-icオプションを使用してウィンドウを直接閉じることができます。

$ wmctrl -ic 0x02e00085
10
Nykakin

wmctrl -lpを使用する場合、PIDは3列目にあります。

指定されたウィンドウIDに対して使用できます

kill $(wmctrl -lp | awk '/^WID/ {print $3}')

(WIDをウィンドウIDに置き換えます)

9
Florian Diesch

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
8

xkill -id [id]を使用することもできます。 xkill ユーティリティは、他の回答とは異なる動作をします。ウィンドウを閉じたり、プロセスを直接強制終了したりするのではなく、ウィンドウを作成したクライアントを切断するようXサーバーに指示します。これは通常、リモートプロセスに対してもプロセスを終了させる効果があります。

各アプローチの長所と短所:

  • wmctrl -cは、ウィンドウマネージャーの閉じるボタンを自分でクリックしたかのように、ウィンドウを "優雅に"閉じます。アプリケーションがウィンドウを閉じたくない、またはフリーズしている場合、これはプロセスを強制終了することはできず、ウィンドウを閉じることさえできません。

  • wmctrl -lpからkillでpidを使用すると、プロセスが強制終了されますが、プロセスが別のマシンで実行されている場合は、余分な作業が必要になるか、まったく機能しません。

  • xkillは、Xサーバーのクラッシュまたはネットワーク接続の喪失から回復できるように設計されている場合、プロセスを終了しない可能性がありますが、ほとんどのアプリケーションはこれらの状況で単にクラッシュします。いずれにせよ、ウィンドウはなくなります。また、リモートプロセスとローカルプロセスは同じように処理されます。

6
Random832

xkillを使用します。端末にxkillと入力して、必要なウィンドウをクリックします。

xkill