锁屏/屏保全屏检测算法

锁屏/屏保全屏检测算法

我正在研究跨 Linux 全屏检测算法,用于检测锁屏和屏幕保护程序。

这是我目前所拥有的:

  1. 检查是否支持 _NET_WM_STATE_FULLSCREEN,如果支持,则获取窗口上的 _WM_STATE 原子并查找 _NET_WM_STATE_FULLSCREEN 原子
  2. 如果不支持 _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 输入窗口”,即锁屏?

相关内容