開いているすべてのウィンドウを終了するには?

開いているすべてのウィンドウを終了するには?

デスクトップに表示されるすべてのウィンドウを閉じたいです。そうするか考えもしてみたがpkill、一度に一人ずつだけ殺すことができるが、それは私が望むものではない。最終的な目標は、これをキオスクを実行するスクリプトに配置することです。その後、キオスクソフトウェアが実行されているかどうかを検出し(この部分は見つけました)、それ以外の場合は開いているすべてのウィンドウを終了してコンピュータを再起動します。キオスクソフトウェア。

答え1

最も簡単な使い方xdotool:

xdotool search "" windowkill %@

xdotool search ""各ウィンドウを一覧表示します。windowkill %@それらすべてを殺す。%@おすすめ以前の検索のすべての結果です。

あなたは使用することを好むことができます--maxdepth 1オプションsearch選択したウィンドウを最上位ウィンドウに制限します。

答え2

これは少なくともkdeとxfceで動作します(gnomeではテストされていませんが、動作する可能性があります)。

1) wmctrl をインストールします。

2) 次に、次のスクリプトを作成しますclose_windows.sh

# close all open windows gracefully without closing the Desktop environment
WIN_IDs=$(wmctrl -l | grep -vwE "Desktop$|xfce4-panel$" | cut -f1 -d' ')
for i in $WIN_IDs; do wmctrl -ic "$i"; done
# Keep checking and waiting until all windows are closed (you probably don't need this section)
while test $WIN_IDs; do 
    sleep 0.1; 
    WIN_IDs=$(wmctrl -l | grep -vwE "Desktop$|xfce4-panel$" | cut -f1 -d' ')
done 

3)実行可能にしなさい。chmod +x ./close_windows.sh

3) [スタート] メニューに close_windows スクリプトを指すエントリを作成します。

4)このトピックでclose_windowsスクリプトを実行します。

源泉:https://forum.manjaro.org/index.php?topic=4412.0:

答え3

マイケル・ホーマーそしてグイド・ヴァンスティンすべてのウィンドウを終了する方法が表示されました。バックグラウンドプロセス(存在する場合)は終了しません。ウィンドウは消えたが、まだユーザーインターフェイスなしで実行されている競合プログラムは終了しません。したがって、プロセスを終了することをお勧めします。

kill -9 -1非rootユーザーとして実行して、そのユーザーとして実行されているすべてのプロセスを終了できます。キオスクアプリケーションを専用ユーザーとして実行し(セキュリティ上の理由からキオスクの標準である)、セッション内のすべてのプロセスが停止した場合は、キオスクインタフェースが再起動されることを確認する必要があります。堅牢性のためのキオスク)。

答え4

コマンドとの組み合わせ/解決方法を使用killall processNameして、潜在的に実行されているアプリケーションのセットに適用することもできます。

例えば。すべての端末を終了し、killall bashすべてのChromeウィンドウを終了して、意図したkillall chromeアプリケーションプロセスの組み合わせを閉じます。

関連情報