Gnomeセッションがロックされているかロック解除されている場合は、スクリプトを実行したいと思います。
デスクトップがロックされているかロック解除されているときにこの動作を傍受していくつかの操作を実行する方法はありますか?
答え1
何かが起こると、Gnome-screensaverはいくつかの信号をdbusに送ります。
ここ文書(いくつかの例を含む)
次のように実行されるスクリプトを作成できます。
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
dbus-monitor
これは、画面がロックまたはロック解除されるたびに1行を印刷する必要性を満たします。
必要な操作を実行する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
答え2
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 [])
答え3
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
)
答え4
Kubuntu を使用する場合、または KDE/Plasma をデスクトップ環境として使用する場合は、インターフェイスを受信する必要があるため、org.freedesktop.ScreenSaver
そのイベントを受信するスクリプトは次のとおりです。
dbus-monitor --session "type='signal',interface='org.freedesktop.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean true"*) echo SCREEN_LOCKED;;
*"boolean false"*) echo SCREEN_UNLOCKED;;
esac
done