Мне интересно, есть ли какой-нибудь способ обнаружить общесистемные события в Linux, такие как:
Мне это нужно для проекта Qt, где я программно реагирую на такие события, но я не уверен, как и с чего начать. Может быть, есть API, который я еще не знаю.
Есть намеки? Буду признателен за любую помощь!
gnome-screensaver-command
предоставит вам информацию о событиях блокировки экрана
gnome-screensaver-command -q | grep "is active"
, если команда возвращает какой-либо результат, экран блокируется. Вы можете заблокировать экран с помощью gnome-screensaver-command -l
Не иметь никакой информации о состоянии приостановки
Вы можете использовать dbus API для отслеживания этой информации.
См. Некоторые примеры, в которых используется команда dbus-monitor
: Как измерить использование компьютера с помощью экранной заставки в активное / неактивное время? - Спросите Ubuntu .
Например:
dbus-monitor 'path=/org/gnome/ScreenSaver, member=ActiveChanged'
Это также можно сделать напрямую из c ++, в программе на python и т. Д., Используя напрямую dbus API.