Этот вопрос в Unix & amp; Документ Linux использует альтернативный подход с использованием сообщений dbus:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while true; do read X; if echo $X | grep "boolean true" &> /dev/null; then SCREEN_LOCKED; elif echo $X | grep "boolean false" &> /dev/null; then SCREEN_UNLOCKED; fi done )
(Замените SCREEN_LOCKED и SCREEN_UNLOCKED действия, которые вы хотите выполнить.)
Используя xrandr 1>/dev/null 2>1 как действие при разблокировке исправлена моя проблема, что разрешения / позиции монитора не были правильно восстановлены при разблокировке экрана (xrandr, похоже, вызывает повторное считывание настроек экрана). Я добавил эту строку в качестве фоновой задачи в моем .bash_profile (строго это может быть лучше, как файл рабочего стола в ~ / .config / autostart, поскольку это работает только при запуске gnome):
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while true; do read X; if echo $X | grep "boolean false" &> /dev/null; then xrandr 1>/dev/null 2>1; fi done ) &
Дополнительную информацию о API-интерфейсе gnome-screensaver можно найти в . Этот вопрос в Unix & amp; Сайт Linux и на мониторе dbus здесь.