Gnome-screensaver は、何かが起こったときに dbus でいくつかのシグナルを発します。
ここにドキュメント (いくつかの例を含む) があります。
以下を実行するスクリプトを作成できます:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
これでいつでも必要なことができます dbus-monitor
画面のロック/ロック解除に関する行を出力します。
必要なことを行うための bash コマンドは次のとおりです。
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean true"*) echo SCREEN_LOCKED;;
*"boolean false"*) echo SCREEN_UNLOCKED;;
esac
done
echo SCREEN_LOCKED
を置き換えるだけです と echo SCREEN_UNLOCKED
ubuntu 14.04 では、画面ロックのロック解除の DBus イベントが変更され、画面ロックおよびロック解除イベントにバインドする新しいスクリプトは次のようになります
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
while true; do
read X
if echo $X | grep "desktop-lock" &> /dev/null; then
SCREEN_LOCKED;
elif echo $X | grep "desktop-unlock" &> /dev/null; then
SCREEN_UNLOCKED;
fi
done
)
最近は LockedHint
を聴いたほうがいいと思います スクリーンセーバー メッセージではなく。そうすれば、スクリーンセーバーの実装に縛られません。
これを行うための簡単なスクリプトを次に示します。
gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint
これを与えます:
/org/freedesktop/login1/session/_32: org.freedesktop.DBus.Properties.PropertiesChanged ('org.freedesktop.login1.Session', {'LockedHint': <true>}, @as [])
/org/freedesktop/login1/session/_32: org.freedesktop.DBus.Properties.PropertiesChanged ('org.freedesktop.login1.Session', {'LockedHint': <false>}, @as [])