2012-02-20 70 views
2

X11有一個屏幕保護程序機制,可以通過xset命令進行控制。無需調用外部命令來禁用或心跳屏幕保護程序,從我的X11應用程序中,我如何心跳屏幕保護程序機制,以防止它關閉顯示器?如何檢測X11屏幕保護程序?

回答

3

如果在現代Linux系統上,首選的FreeDesktop方法是根據您的需要ping DBus接口,特別是org.freedesktop.ScreenSaver.SimulateUserActivity()或另一部分暴露接口。

+0

還有一個設置DBus(我相信)專門禁止屏保;例如圖騰設置了這一點。 – BRFennPocock 2012-02-20 23:00:02

+0

是的,我相信'org.freedesktop.ScreenSaver.Throttle(string appName,string localizedReason)',返回一個cookie。 'UnThrottle(int cookie)'然後將用於重新啓用屏幕保護程序(如果應用程序退出,它也會恢復)。 – Kitsune 2012-02-20 23:08:16

+0

試圖運行'$ qdbus org.freedesktop.ScreenSaver/ScreenSaver'告訴我「Service'org.freedesktop.ScreenSaver'不存在。」這並不是說我知道我在做什麼,因爲我沒有真正意識到這個DBus的東西,但似乎這個接口在我的系統中不可用。我的系統是新的,Linux Mint 12(基於Ubuntu 11.10)。哪些流程應該提供這些服務? – lvella 2012-02-22 00:49:55

0

以及@Kitsune建議的D-Bus解決方案。您也可以採取一些媒體播放器的做法,並定期模擬按鍵(例如Alt)。

這段代碼在圖騰:http://git.gnome.org/browse/totem/tree/lib/totem-scrsaver.c被設計爲投進你的代碼庫(這是LGPL 2.1版),並同時使用d-bus接口,還可以使用XTest合成按Alt鍵每隔30s。

相關問題