Linux 如何检测全屏?

Linux 如何检测全屏?,linux,x11,Linux,X11,目前,我检查窗口管理器是否支持全屏。如果是这样,那么我使用XGetWindowProperty来获取原子的_NET_WM_状态数组。如果它是全屏的原子,那么我知道它是全屏的 但是在许多窗口上,比如桌面WM_NAME窗口,它没有这个atom。事实上,使用XGetWindowProperty执行_NET_WM_STATE获取失败,我认为这是因为当窗口没有焦点时_NET_WM_STATE被删除了?文档说,当窗口被取消映射时,它将被删除 我使用XGetWindowRect测试了桌面的宽度和高度,并使用屏

目前,我检查窗口管理器是否支持全屏。如果是这样,那么我使用XGetWindowProperty来获取原子的_NET_WM_状态数组。如果它是全屏的原子,那么我知道它是全屏的

但是在许多窗口上,比如桌面WM_NAME窗口,它没有这个atom。事实上,使用XGetWindowProperty执行_NET_WM_STATE获取失败,我认为这是因为当窗口没有焦点时_NET_WM_STATE被删除了?文档说,当窗口被取消映射时,它将被删除

我使用XGetWindowRect测试了桌面的宽度和高度,并使用屏幕宽度和高度的宏将其与屏幕宽度和高度进行了比较。屏幕和桌面的宽度和高度与全屏宽度和高度匹配。原子不见了是怎么回事?有没有可靠的方法来检测全屏


谢谢

你为什么要知道_NET_WM_状态反映应用程序和WM之间约定的windows状态。应用程序可以决定让窗口覆盖整个桌面,而无需与WM就此达成协议。如果要检查窗口是否跨越整个屏幕,可以只检查该条件。顺便说一句,全屏窗口不一定像X11屏幕对象那样横跨整个屏幕,它实际上横跨一个监视器或一组监视器。哦,有趣的东西。谢谢@n.m.我用这个作为检测锁屏/屏幕保护程序的测试:为什么不问问dbus?qdbus org.freedesktop.ScreenSaver/ScreenSaver org.freedesktop.ScreenSaver.GetActive或其他什么。应该可以在任何现代桌面上使用,但不一定与xscreensaver一起使用。我实际上指的是由jwz编写的名为xscreensaver的软件。它不使用dbus。它可能会在你的链接中使用xscreensaver API,我不确定。