화면이 잠기거나 잠금 해제될 때 스크립트를 실행하는 방법은 무엇입니까?

화면이 잠기거나 잠금 해제될 때 스크립트를 실행하는 방법은 무엇입니까?

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

관련 정보