
您可以透過以下方式偵測使用者的螢幕保護程式是否處於活動狀態:
gnome-screensaver-command -q
我正在嘗試創建一個守護進程來在用戶不活動時執行操作,但我發現此命令在不從用戶會話內部運行時始終返回 false。例如,這些變體都報告螢幕保護程式處於非活動狀態,即使它處於活動狀態:
sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q
為什麼會這樣?
答案1
我知道現在有點晚了,但也許其他人現在可以閱讀答案。
問題出在 dbus 上。您需要在運行之前導出正確的變數gnome-screensaver-command
。
首先你需要知道用戶的uid。我還匯出了DISPLAY
用戶的。您可以使用命令來取得其值w
sudo -u myuser DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_OF_MYUSER/bus DISPLAY=:0 gnome-screensaver-command --query
這適用於 Debian 9 和gnome-screensaver-command 3.6.1