ベストアンサー1
wmctrl
役に立つかもしれません(パッケージ名wmctrl
)。
wmctrl
EWMH/NetWM 互換 X Window Manager と対話するのに役立ちます。 AwesomeWMがこの説明に合っているかどうかはわかりませんが、もしそうなら、この答えはうまくいきます。
$ wmctrl -l
0x0100002d 1 stewbian arch linux - How to reboot/shut down gracefully in Awesome WM? - Unix & Linux Stack Exchange — Mozilla Firefox
0x01200007 0 stewbian ~ : bash — Konsole
$ wmctrl -c 0x01200007
wmctrl -l
すべてのウィンドウをリストし()、リストを繰り返し、各ウィンドウを閉じる()スクリプトを作成できますwmctrl -c
。完了したら閉じます。
#!/bin/bash
wmctrl -l | awk '{ print $1 }' | while read -r windowid; do
wmctrl -c $windowid
done
shutdown -h now
それでも機能しない場合は、 wmctrl
親プロセスのPIDを取得してkill
各PIDに信号()を送信できます。
#!/bin/bash
pids=$(wmctrl -lp | awk '{print $3}')
kill -SIGTERM $pids
sleep 2
pids=$(wmctrl -lp | awk '{print $3}')
kill -SIGKILL $pids
sleep 2
shutdown -h now
プロセスごとに分割することもできます。タイトルバーにFirefoxがあるウィンドウにSIGTERMを送信できますが、SIGINTをQtCreatorのインスタンスに送信してから、SIGABRTをFirefoxやQtCreator(まだ存在する場合)を含む他のすべてのアイテムに送信できます。
#!/bin/bash
pids=$(wmctrl -lp | awk '/Firefox/{print $3}')
kill -SIGTERM $pids
pids=$(wmctrl -lp | awk '/Qt Creator/{print $3}')
kill -SIGINT $pids
sleep 10
pids=$(wmctrl -lp | awk '{print $3}')
kill -SIGABRT $pids
shutdown -h now