This may ease development, because development environment will be probably already on python3. Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
#!/usr/bin/python3 -Es
|
|
|
|
from __future__ import print_function
|
|
import os
|
|
import Xlib
|
|
|
|
from Xlib import X, display, Xatom
|
|
|
|
dpy = display.Display()
|
|
|
|
def loop():
|
|
|
|
atoms = {}
|
|
wm_active_window = dpy.get_atom('_NET_ACTIVE_WINDOW')
|
|
|
|
screens = dpy.screen_count()
|
|
for num in range(screens):
|
|
screen = dpy.screen(num)
|
|
screen.root.change_attributes(event_mask=X.PropertyChangeMask)
|
|
|
|
while True:
|
|
ev = dpy.next_event()
|
|
if ev.type == X.PropertyNotify:
|
|
if ev.atom == wm_active_window:
|
|
data = ev.window.get_full_property(ev.atom, 0)
|
|
id = int(data.value.tolist()[0])
|
|
|
|
hidden = []
|
|
showed = []
|
|
if id != 0:
|
|
for num in range(screens):
|
|
root = dpy.screen(num).root
|
|
for win in root.get_full_property(dpy.get_atom('_NET_CLIENT_LIST'), 0).value.tolist():
|
|
window = dpy.create_resource_object('window', win)
|
|
if window.get_full_property(dpy.get_atom('_NET_WM_STATE'), Xatom.WINDOW) is None:
|
|
continue
|
|
if dpy.get_atom("_NET_WM_STATE_HIDDEN") in window.get_full_property(dpy.get_atom('_NET_WM_STATE'), 0).value.tolist():
|
|
if not win in hidden:
|
|
hidden.append(win)
|
|
else:
|
|
if not win in showed:
|
|
showed.append(win)
|
|
print("Showed:", showed)
|
|
print("Minimized:", hidden)
|
|
|
|
if __name__ == '__main__':
|
|
loop()
|