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