Как запустить команду или скрипт при блокировке / разблокировке экрана?

Я ищу способ сохранить время блокировки / разблокировки экрана.

A=$(date)
echo $A >> $HOME/time_xprofile

Что я попробовал:

$HOME/.bashrc
$HOME/.bash_logout
$HOME/.bash_prompt
$HOME/.xprofile

Затем я заблокировал экран и проверил, появляется ли файл и происходит ли каждый раз сбой. Как я могу проверить время, чем?

19
задан 5 March 2014 в 13:32

2 ответа

Следующий сценарий запишет, блокируют/разблокируют время в файле time_xprofile в Вашем доме.

#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
( while true
    do read X
    if echo $X | grep "boolean true" &> /dev/null; then
        echo "locking at $(date)" >> $HOME/time_xprofile
    elif echo $X | grep "boolean false" &> /dev/null; then
        echo "unlocking at $(date)" >> $HOME/time_xprofile
    fi
    done )

сохраняют сценарий. Дайте ему разрешение выполнения.

chmod +x script.sh

, Как работать

./script.sh &

Примечание , которое сценарий должен выполнить в задней земле. Не уничтожайте его. Если Вы поворачиваетесь, Ваш экран блокируют/разблокируют, в то время как сценарий работает в фоне, Ваше время блокируют/разблокируют, будет зарегистрирован в time_xprofile файл в Вашем доме. можно использовать, это для выполнения некоторой команды или сценария в экране блокирует/разблокирует.

Мышление, что при закрытии текущего терминала сценарий будет уничтожен. Можно использовать

nohup ./script.sh &

Тогда, это продолжит работать даже за закрытием терминала.

, Как уничтожить сценарий

Для уничтожения процесса, использование в терминале

ps ax| grep "[s]cript.sh" | cut -d' ' -f2 | xargs kill

Выше сценария вдохновлено этот ответ

0
ответ дан 5 March 2014 в 13:32

В человечности 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
)

Замена SCREEN_LOCKED и SCREEN_UNLOCKED с тем, что необходимо сделать.

0
ответ дан 5 March 2014 в 13:32

Другие вопросы по тегам:

Похожие вопросы: