![锁屏/屏保全屏检测算法](https://linux22.com/image/1103643/%E9%94%81%E5%B1%8F%2F%E5%B1%8F%E4%BF%9D%E5%85%A8%E5%B1%8F%E6%A3%80%E6%B5%8B%E7%AE%97%E6%B3%95.png)
我正在研究跨 Linux 全屏检测算法,用于检测锁屏和屏幕保护程序。
这是我目前所拥有的:
- 检查是否支持 _NET_WM_STATE_FULLSCREEN,如果支持,则获取窗口上的 _WM_STATE 原子并查找 _NET_WM_STATE_FULLSCREEN 原子
- 如果不支持 _NET_WM_STATE_FULLSCREEN,那么它会使用
XGetWindowRect
并将宽度和高度(rect[2] 和 rect[3])压缩为通过宏获得的屏幕宽度和WidthOfScreen
高度HeightOfScreen
。
问题在于,当我的脚本检查“nux 输入窗口”的锁屏 WM_NAME 时,它发现_NET_WM_STATE_FULLSCREEN
原子受支持,但在获取的 _NET_WM_STATE 原子中找不到这个原子,获取的状态原子是:
- 298 删除文件
- 296 _NET_WM_STATE_SKIP_TASKBAR
- 297 _NET_WM_STATE_SKIP_PAGER
- 315 删除文件
我们看到 291 的全屏原子不存在。但我们发现 window_rect 的宽度和高度等于屏幕的宽度和高度。
为什么全屏原子没有显示“nux 输入窗口”,即锁屏?