GNU/Linux >> Linux の 問題 >  >> Linux

画面のロック/ロック解除でスクリプトを実行する方法は?

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 [])

Linux
  1. Linux –画面上でスクリプトを実行する方法ロック/ロック解除?

  2. 「find-exec{};?」を実行する方法

  3. スクリプトをルートとして遡及的に実行する方法は?

  1. スクリプトを実行する方法??

  2. シェルからPythonスクリプトを実行する方法

  3. Linuxでユーザーをロックおよびロック解除する方法

  1. 画面をロックする方法は?

  2. 再開後および画面のロック解除後にスクリプトを実行するにはどうすればよいですか?

  3. スクリプトでユーザーの操作をバイパスする方法は?