|
@@ -72,7 +72,7 @@ def x_wait_for_event(xdisplay, timeout_seconds):
|
|
|
|
|
|
class ExtendedControls:
|
|
class ExtendedControls:
|
|
|
|
|
|
- def __init__(self, primary_engine_pid,
|
|
|
|
|
|
+ def __init__(self, primary_engine_pid, primary_engine_window_name=None,
|
|
toggle_keysym_name=EXTENDED_CONTROLS_DEFAULT_TOGGLE_KEYSYM_NAME):
|
|
toggle_keysym_name=EXTENDED_CONTROLS_DEFAULT_TOGGLE_KEYSYM_NAME):
|
|
if not psutil:
|
|
if not psutil:
|
|
raise Exception('\n'.join([
|
|
raise Exception('\n'.join([
|
|
@@ -91,6 +91,7 @@ class ExtendedControls:
|
|
'\t$ pip3 install --user xlib',
|
|
'\t$ pip3 install --user xlib',
|
|
]))
|
|
]))
|
|
self._primary_engine_pid = primary_engine_pid
|
|
self._primary_engine_pid = primary_engine_pid
|
|
|
|
+ self._primary_engine_window_name = primary_engine_window_name
|
|
self._xdisplay = Xlib.display.Display()
|
|
self._xdisplay = Xlib.display.Display()
|
|
self._toggle_keysym = XK.string_to_keysym(toggle_keysym_name)
|
|
self._toggle_keysym = XK.string_to_keysym(toggle_keysym_name)
|
|
if self._toggle_keysym == X.NoSymbol:
|
|
if self._toggle_keysym == X.NoSymbol:
|
|
@@ -149,6 +150,13 @@ class ExtendedControls:
|
|
data=[os.getpid()],
|
|
data=[os.getpid()],
|
|
mode=X.PropModeReplace,
|
|
mode=X.PropModeReplace,
|
|
)
|
|
)
|
|
|
|
+ if self._primary_engine_window_name:
|
|
|
|
+ self._primary_engine_window.set_wm_name(
|
|
|
|
+ self._primary_engine_window_name,
|
|
|
|
+ )
|
|
|
|
+ print("INFO Changed engine's window name to {!r}".format(
|
|
|
|
+ self._primary_engine_window_name,
|
|
|
|
+ ))
|
|
if not self.enabled:
|
|
if not self.enabled:
|
|
keysym_name = XK.keysym_to_string(self._toggle_keysym)
|
|
keysym_name = XK.keysym_to_string(self._toggle_keysym)
|
|
print("INFO Extended Controls are currently disabled."
|
|
print("INFO Extended Controls are currently disabled."
|
|
@@ -224,9 +232,13 @@ class ExtendedControls:
|
|
self.primary_engine_window.ungrab_key(keycode, X.AnyModifier)
|
|
self.primary_engine_window.ungrab_key(keycode, X.AnyModifier)
|
|
|
|
|
|
def find_engine_windows(self):
|
|
def find_engine_windows(self):
|
|
|
|
+ controls_xprop = self.xdisplay.intern_atom(
|
|
|
|
+ EXTENDED_CONTROLS_PID_XPROPERTY_NAME,
|
|
|
|
+ )
|
|
return x_find_window(
|
|
return x_find_window(
|
|
self.xdisplay.screen().root,
|
|
self.xdisplay.screen().root,
|
|
- lambda w: w.get_wm_name() == TOONTOWN_WINDOW_NAME,
|
|
|
|
|
|
+ lambda w: w.get_wm_name() == TOONTOWN_WINDOW_NAME
|
|
|
|
+ or w.get_full_property(controls_xprop, X.AnyPropertyType),
|
|
)
|
|
)
|
|
|
|
|
|
@property
|
|
@property
|