是否有可能在python中判断linux上的全屏应用程序是否正在运行?我觉得有可能使用Xlib,但我找不到办法.
编辑:全屏我的意思是整个屏幕除了应用程序,如全屏游戏.
如果您有兴趣运行的所有窗口管理器都支持EWMH(扩展窗口管理器提示标准),则有一些优雅的方法可以执行此操作(例如,通过 ctypes 与 Xlib 对话)。_NET_ACTIVE_WINDOW根窗口的属性(见这里)告诉你哪个窗口是活动的(如果有的话);_NET_WM_STATE活动窗口的属性是描述其状态的原子列表,其中包括_NET_WM_STATE_FULLSCREEN该窗口是否为全屏。(如果您有多个显示器,当然其中一个窗口可以全屏显示而不处于活动状态;我相信可能存在其他情况,其中窗口可能全屏而不处于活动状态——我认为没有任何方法可以覆盖它们但是,所有这些都没有本质上检查_NET_WM_STATE每个窗口)。
找到了解决办法:
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。
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |