【发布时间】:2020-10-30 13:12:39
【问题描述】:
问题
有没有一种方法可以防止 X 会话启动屏幕保护程序、进入省电模式或从代码中执行屏幕空白?
我在做什么
语言:C/C++ 图形界面框架:GTK3 硬件:树莓派 3B 软件:Raspbian 10 - Buster
我的程序需要在没有用户交互的情况下运行 GUI 长时间(最长 12 小时)在屏幕上运行。 GUI 充当现场系统的状态监视器(如果屏幕变黑,说明出现问题)。
我知道的
GTK3 可以判断屏保是否开启
GTK3 有一个布尔属性来报告系统的屏幕保护程序是否处于活动状态(请参阅here),但文档中没有其他参考。
Raspbian 使用屏幕消隐
Raspbian 没有安装xscreensaver 或其他包来控制屏幕关闭时间。相反,它主要依靠 X 来“黑屏”。这可以作为超级用户使用xset 命令进行管理。在特定于硬件的 Stack Exchange (here) 中报告了执行此操作的规范方法。
不能信任最终用户
就我而言,该程序将由几乎不具备计算机知识的人使用。结果必须是用户友好的,并且不希望用户触摸终端,更不用说对X 的启动配置进行永久更改。虽然一种选择是将程序作为定制的 Raspbian 磁盘映像分发,但我想探索其他选择。
我需要看一个例子
虽然有一些地方可以开始使用this question,但实施它们是有问题的。当我尝试使用带有和不带有注释行的以下 MWE 时,什么都没有发生。我无法模拟屏幕空白功能。
#include <X11/extensions/scrnsaver.h>
int main() {
// XScreenSaverSuspend;
XForceScreenSaver;
usleep(1000000);
return 0;
}
【问题讨论】: