在 C 或 C++ 程序中,连接到计算机上所有 X 显示器的最佳方式是什么?我想检查每个显示器的 X 空闲时间,以确定计算机是否在所有显示器上都处于空闲状态。
我目前的做法是打开文件系统监视来/tmp/.X11-unix
检测新的 X 套接字。当检测到新的显示器时,它会等待几秒钟,然后尝试连接到它。通常,这会失败,因为该进程没有访问显示的权限。因此,为了解决这个问题,我添加了xhost +SI:localuser:root
GDM presession 脚本(LightDM 的显示设置脚本)。这似乎在大多数情况下都有效。
然而,这个方法经常失败,我不知道为什么。我猜这是因为xhost
命令不可靠。我正在考虑从每个单独的显示器中提取 Xauthority cookie,但我找不到任何可靠/可移植的方法来执行此操作。