如何判断全屏应用程序是否正在运行?

Alv*_*Row 6 python linux x11

是否有可能在python中判断linux上的全屏应用程序是否正在运行?我觉得有可能使用Xlib,但我找不到办法.

编辑:全屏我的意思是整个屏幕除了应用程序,如全屏游戏.

Ale*_*lli 5

如果您有兴趣运行的所有窗口管理器都支持EWMH(扩展窗口管理器提示标准),则有一些优雅的方法可以执行此操作(例如,通过 ctypes 与 Xlib 对话)。_NET_ACTIVE_WINDOW根窗口的属性(见这里)告诉你哪个窗口是活动的(如果有的话);_NET_WM_STATE活动窗口的属性是描述其状态的原子列表,其中包括_NET_WM_STATE_FULLSCREEN该窗口是否为全屏。(如果您有多个显示器,当然其中一个窗口可以全屏显示而不处于活动状态;我相信可能存在其他情况,其中窗口可能全屏而不处于活动状态——我认为没有任何方法可以覆盖它们但是,所有这些都没有本质上检查_NET_WM_STATE每个窗口)。


Alv*_*Row 3

找到了解决办法:

import Xlib.display

screen = Xlib.display.Display().screen()
root_win = screen.root

num_of_fs = 0
for window in root_win.query_tree()._data['children']:
    window_name = window.get_wm_name()
    width = window.get_geometry()._data["width"]
    height = window.get_geometry()._data["height"]

    if width == screen.width_in_pixels and height == screen.height_in_pixels:
        num_of_fs += 1

print num_of_fs
Run Code Online (Sandbox Code Playgroud)

这会打印出全屏窗口的数量,对我来说通常是一个。玩全屏游戏时为 2。