У меня есть крон, который запускает скрипт каждый час, он использует уведомление - посылают за уведомлением на рабочем столе Ubuntu 18.04 (Gnome), после того как он запускается.
Что может я добавлять к сценарию к:
Ответ ниже приводит меня к в зависимости от среды:
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
$ qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
$ qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
Существует установка для сокрытия уведомлений, в то время как экран блокировки включен:
Можно также изменить эту установку через командную строку:
gsettings set org.gnome.desktop.notifications show-in-lock-screen false
Но, так как Вы спросили, можно также использовать gdbus
на командной строке с --session
параметр и org.gnome.ScreenSaver
определить, заблокирован ли экран.
qdbus
скажет Вам, если экранная заставка (используемый Экраном Блокировки) будет активна. Сначала необходимо знать, какую среду Вы используете: Gnome, Единица, KDE, и т.д.
В этом примере Единица активна, пока Gnome и KDE не:
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
false
$ qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive
Error: org.freedesktop.DBus.Error.UnknownMethod
No such interface 'org.gnome.ScreenSaver' on object at path /ScreenSaver
$ qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive
Service 'org.kde.screensaver' does not exist.
Для рабочего стола Gnome возвратится вторая опция false
и сообщение об ошибке появится для первых и третьих опций.