防止 ChromeOS 在不同的 tty 上工作时屏幕空白

防止 ChromeOS 在不同的 tty 上工作时屏幕空白

我在 chroot 中运行 Archlinux,并在 chromebook 上运行 Chrome OS。原来的项目是那里,我的叉子是这里(大部分相似)。

问题在于,Chrome 操作系统的显示电源管理仅考虑 Chrome 操作系统 X 在 tty1 上进行的触摸板和键盘输入,以重置屏幕消隐倒计时。因此,如果我在 chroot、tty3(控制台)或 tty4(Arch 自己的 X 服务器)上工作,背光会在 5 分钟后关闭,无论我是空闲还是活动。然后我必须返回 tty1 在那里注册一些输入并通电以重新激活背光。

我不想在 Chrome 操作系统中停用 powerd,也不想延长默认超时(这是原作者或 chroot 设置脚本所做的)。我只是希望屏幕背光在几分钟不活动后关闭,并在 chroot 环境或 Chrome 操作系统中处于活动状态时保持打开状态。此外,我希望对 Chrome 操作系统进行最小程度的修改,因为它经常更新,并且我希望保持 chroot 重新安装脚本简单。

所以,我的想法是编写几个守护进程。守护进程 A 在 chroot 中运行并检测我是否在 Arch 中进行键盘或鼠标输入。守护进程 C 在 Chrome 操作系统中运行,检查守护进程 A 的输出,并执行最合适的操作来重置屏幕消隐和省电计数器。

但是,如果可以确定 chroot 中的用户活动正在读取某些 /dev 节点,则不需要守护程序 A。chroot 中最后一个用户活动的年龄(在 /dev/tty3 和 /dev/tty4 上)是否可以通过读取某些 /dev 文件或通过任何其他方式推断出来没有chroot?

其次,诸如此类的命令setterm -blank poke似乎在 chroot 内工作,因此如果守护进程 A 可以单独重置屏幕消隐倒计时,则守护进程 C 可能不是必需的。因此,第二个问题:chroot 中最后一次用户活动的年龄(在 /dev/tty3 和 /dev/tty4 上)是否可以通过读取某些 /dev 文件或通过任何其他方式推断出来之内chroot?

如果您认为重置计数器需要守护进程 A 和 C 都存在并进行通信:现代 IPC 在实践中是如何在 GNU/Linux 中实现的?系统V? POSIX? /proc 文件读写?对于我的情况,什么最有效?

最后,除了 之外,您还知道setterm -blank poke看门狗程序应该用来保持背光源的其他东西吗?

抱歉问了这么长的问题,我希望您不必阅读全部内容:)

答案1

只是关于如何(可能)与电源守护进程对话的一些指示。

看看铬操作系统 来源(不知道这与 Chrome 操作系统有多大不同),你会发现power_manager来源这可能会有所帮助:

README解释了人们可以在那里找到什么,其中包括:

  • powerd( powerd.cc) 上层电源管理器。根据用户是否空闲和开机状态调整设备状态窗口管理器中的视频活动指示器。该守护进程负责根据用户空闲情况调暗背光或关闭屏幕,并负责根据用户输入和环境光条件调整背光强度。该守护程序还监视插头状态(交流电或电池)和电池充电状态。
  • xidle-example( examples/xidle_example.cc) 在用户空闲和空闲时打印控制台通知。

所以也许你可以通过以下方式进行干预XIdlexidle_example.cc可能会有帮助。

另一件可能有用的事情是RootPowerManager.conf告诉你哪个D总线地址它监听,org.chromium.RootPowerManager...也许你可以在那里寻找一些东西,我还没有找到任何接口规范(但 D-Bus 应该能够告诉你)。

grep idle可能也有帮助,它让我看看activity_detector_interface.h,如果这是 D-Bus 导出的,您可以使用它,即当您的 Arch 系统检测到活动等时禁用 Chrome 操作系统的活动检测。)

相关内容