]>
code.delx.au - mediapc-tools/blob - xfdesktop-focus-fix
8 display
= Xlib
.display
.Display()
9 root
= display
.screen().root
10 NET_ACTIVE_WINDOW
= display
.intern_atom('_NET_ACTIVE_WINDOW')
13 root
.change_attributes(event_mask
=Xlib
.X
.PropertyChangeMask
)
15 handle_active_window_change()
18 event
= display
.next_event()
19 if is_active_window_change(event
):
20 handle_active_window_change()
22 def is_active_window_change(event
):
24 event
.type == Xlib
.X
.PropertyNotify
and
25 event
.atom
== NET_ACTIVE_WINDOW
28 def handle_active_window_change():
29 window_id
= get_active_window_id()
33 def get_active_window_id():
34 prop
= root
.get_full_property(NET_ACTIVE_WINDOW
, Xlib
.X
.AnyPropertyType
)
35 if prop
and prop
.value
:
38 def try_with_sleep(fn
):
39 def wrapper(*args
, **kwargs
):
43 return fn(*args
, **kwargs
)
46 print("Failed finally")
48 print("Failed, will retry")
54 def focus_xfdesktop():
55 print("Focusing xfdesktop")
56 subprocess
.check_output([
60 '--class', 'xfdesktop',
64 if __name__
== '__main__':