]>
code.delx.au - mediapc-tools/blob - xfdesktop-focus-fix
b620932c19aad46b8375b6a3d573453fcb91cda3
9 display
= Xlib
.display
.Display()
10 root
= display
.screen().root
11 NET_ACTIVE_WINDOW
= display
.intern_atom('_NET_ACTIVE_WINDOW')
14 root
.change_attributes(event_mask
=Xlib
.X
.PropertyChangeMask
)
16 handle_active_window_change()
19 event
= display
.next_event()
20 if is_active_window_change(event
):
21 handle_active_window_change()
23 def is_active_window_change(event
):
25 event
.type == Xlib
.X
.PropertyNotify
and
26 event
.atom
== NET_ACTIVE_WINDOW
29 def handle_active_window_change():
30 if is_running_media_wrap():
33 window_id
= get_active_window_id()
37 def is_running_media_wrap():
38 return os
.path
.isfile(os
.path
.expanduser("~/.mediawrap.lock"))
40 def get_active_window_id():
41 prop
= root
.get_full_property(NET_ACTIVE_WINDOW
, Xlib
.X
.AnyPropertyType
)
42 if prop
and prop
.value
:
45 def try_with_sleep(fn
):
46 def wrapper(*args
, **kwargs
):
50 return fn(*args
, **kwargs
)
53 print("Failed finally")
55 print("Failed, will retry")
61 def focus_xfdesktop():
62 print("Focusing xfdesktop")
63 subprocess
.check_output([
67 '--class', 'xfdesktop',
71 if __name__
== '__main__':