Как определить, запущено ли полноэкранное приложение? - PullRequest
6 голосов
/ 31 августа 2009

Можно ли в python узнать, запущено ли полноэкранное приложение на linux? Я чувствую, что это возможно с помощью Xlib, но я не нашел пути.

РЕДАКТИРОВАТЬ: Под полным экраном я подразумеваю ВЕСЬ экран только приложение, такое как полноэкранная игра.

Ответы [ 2 ]

4 голосов
/ 31 августа 2009

Если все оконные менеджеры, которые вас интересуют, работают с поддержкой EWMH , стандартными советами для расширенного оконного менеджера, есть элегантные способы сделать это (например, поговорить с Xlib через ctypes). Свойство _NET_ACTIVE_WINDOW корневого окна (см. здесь ) указывает, какое окно активно (если оно есть); тогда свойство _NET_WM_STATE активного окна представляет собой список атомов, описывающих его состояние, которое будет включать _NET_WM_STATE_FULLSCREEN, если это окно полноэкранное. (Если у вас есть несколько мониторов, конечно, окно может быть полноэкранным на одном из них, не будучи активным; я полагаю, что могут существовать другие случаи, когда окно может быть полноэкранным, не будучи активным - я не думаю, что есть какой-либо способ покрыть их все же без проверки _NET_WM_STATE для каждого окна).

3 голосов
/ 01 сентября 2009

Нашли решение:

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

Это распечатывает количество полноэкранных окон, которое для меня обычно одно. Когда играешь в полноэкранный режим игры, его 2.

...