Gnome 세션이 잠겨 있거나 잠금 해제된 경우 스크립트를 실행하고 싶습니다.
데스크탑이 잠겨 있거나 잠금 해제되어 있을 때 이 동작을 가로채서 일부 작업을 수행할 수 있는 방법이 있습니까?
답변1
어떤 일이 발생하면 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
답변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
우분투 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