使用 C++ 代码禁用自动睡眠并关闭监视器

使用 C++ 代码禁用自动睡眠并关闭监视器

我开发了 [基于 Qt 的跨平台 C++] 应用程序,该应用程序使用 libVLC 播放视频。当我长时间观看视频时,我的显示器将根据电源管理设置关闭。我想禁用视频播放时的自动关闭功能,就像 Totem、VLC 媒体播放器和其他 Ubuntu 媒体播放器一样。但我找不到如何使用 Ubuntu 库从 C++ 代码中执行此操作。

例如,在 Windows 下我可以使用以下命令执行此操作:

SetThreadExecutionState( ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS );

我发现有关 Linux/Ubuntu 的所有信息都是关于如何修补一些配置文件。我无法通过代码做到这一点:

  1. 运行应用程序的用户显然可能没有编辑配置的权限
  2. 视频停止时必须恢复电源设置,但如果我的应用程序突然崩溃,则不会发生这种情况
  3. 不同的 Ubuntu 版本可能有不同的配置文件和条目

我的问题是:

  • 是否有一些 Ubuntu(或 Qt 和 libVLC)库函数可以抑制显示器关闭和系统睡眠?
  • 流行的 Ubuntu 视频播放器是如何实现这种行为的?

答案1

我建议您看一下 xset 的代码,它是 X.org 的一部分,或者任何其他可以执行您想要执行的这些操作的程序(您可以使用xset -dpms+禁用屏幕关闭xset s off)。

对于 xset,您将找到源代码这里,或者当该链接过期时:

http://www.x.org/releases/current/
-> Source Tar Files for X11RX.Y
-> app/
-> xset-x.y.z.tar.{bz2,gz}

相关内容