Awesome WMで正常に再起動/終了するには?

Awesome WMで正常に再起動/終了するには?

私のもの現在の構成使用

kdesu shutdown -[rh] now

再起動/終了。フルシャットダウンプロセスは約1〜2秒かかります。しかしFirefoxは発売後毎回早期終了したと明らかにしたが、これはFirefoxが休息を取るよりは残酷に殺されたことを意味する可能性が大きい。 「通常の」WMシャットダウン手順を設定する方法(に似ていますkill -SIGTERM && sleep 10 && kill -SIGKILLが、使用する方が良い)既存ツール)素晴らしいWMで?

GDM関連の問題。

ベストアンサー1

wmctrl役に立つかもしれません(パッケージ名wmctrl)。

wmctrlEWMH/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

おすすめ記事