Compare commits
No commits in common. "fabb975dd90b5afa8c73f2e7d54fe36ef8a026b2" and "ffa32bf0983115d8ec43c23a71355ed0ad883908" have entirely different histories.
fabb975dd9
...
ffa32bf098
66
main.py
66
main.py
@ -21,7 +21,6 @@ logging.basicConfig(
|
|||||||
)]
|
)]
|
||||||
)
|
)
|
||||||
log = logging.getLogger("rich")
|
log = logging.getLogger("rich")
|
||||||
log.setLevel("DEBUG")
|
|
||||||
|
|
||||||
|
|
||||||
# Vars
|
# Vars
|
||||||
@ -54,70 +53,6 @@ log.debug(f"Printing environment vars ...")
|
|||||||
log.debug(os.environ)
|
log.debug(os.environ)
|
||||||
|
|
||||||
|
|
||||||
def x_focus_window(window_id: str) -> bool:
|
|
||||||
log.debug(f"Focusing window ID {window_id} ...")
|
|
||||||
try:
|
|
||||||
subprocess.run(
|
|
||||||
["xdotool", "windowfocus", window_id],
|
|
||||||
check=True,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
encoding="utf-8")
|
|
||||||
log.info(f"Two 'sddm-greeter' windows detected one of which had focus, changed focus to the other one.")
|
|
||||||
return True
|
|
||||||
except subprocess.CalledProcessError as x_focus_window_error:
|
|
||||||
log.warning(f"Failed to focus window ID {window_id}, we'll not try again")
|
|
||||||
log.warning(x_focus_window_error)
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def sddm_greeter_window_ids() -> list:
|
|
||||||
log.debug(f"Checking if an 'sddm-greeter' window exists ...")
|
|
||||||
try:
|
|
||||||
dm_windows = subprocess.run(
|
|
||||||
["xdotool", "search", "--onlyvisible", "--classname", "sddm-greeter"],
|
|
||||||
check=True,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
encoding="utf-8")
|
|
||||||
return dm_windows.stdout.splitlines()
|
|
||||||
except subprocess.CalledProcessError as xdotool_error:
|
|
||||||
log.debug(f"No 'sddm-greeter' window exists, doing nothing")
|
|
||||||
log.debug(xdotool_error)
|
|
||||||
return []
|
|
||||||
|
|
||||||
|
|
||||||
def sddm_change_focus_if_two_windows() -> bool:
|
|
||||||
dm_windows = sddm_greeter_window_ids()
|
|
||||||
if not dm_windows:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
log.debug(f"Checking if 'sddm-greeter' window has focus ...")
|
|
||||||
try:
|
|
||||||
x_window_focus = subprocess.run(
|
|
||||||
["xdotool", "getwindowfocus"],
|
|
||||||
check=True,
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
encoding="utf-8")
|
|
||||||
x_window_id_has_focus = x_window_focus.stdout.splitlines()[0]
|
|
||||||
if x_window_id_has_focus in dm_windows:
|
|
||||||
log.debug(f"An 'sddm-greeter' window has focus")
|
|
||||||
if len(dm_windows) > 1:
|
|
||||||
if len(dm_windows) == 2:
|
|
||||||
log.debug(f"We're assuming we have to focus the other one")
|
|
||||||
log.debug(f"From list of 'sddm-greeter' window IDs ({dm_windows}) remove the one that has "
|
|
||||||
f"focus ({x_window_id_has_focus})")
|
|
||||||
dm_windows.remove(x_window_id_has_focus)
|
|
||||||
x_focus_window(dm_windows[0])
|
|
||||||
else:
|
|
||||||
log.warning(f"Number of 'sddm-greeter' windows ({len(dm_windows)}) is unexpected, not doing "
|
|
||||||
f"anything")
|
|
||||||
else:
|
|
||||||
log.debug(f"No other 'sddm-greeter' windows exist, no need to focus anything")
|
|
||||||
except subprocess.CalledProcessError as xdotool_error:
|
|
||||||
log.warning(f"Unable to get ID of focused window")
|
|
||||||
log.warning(xdotool_error)
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def propagate_keypress(cec_key_id: int) -> None:
|
def propagate_keypress(cec_key_id: int) -> None:
|
||||||
log.info(f"""Key press '{xdo_map[cec_key_id]["human_readable"]}' detected (CEC key ID '{cec_key_id}')""")
|
log.info(f"""Key press '{xdo_map[cec_key_id]["human_readable"]}' detected (CEC key ID '{cec_key_id}')""")
|
||||||
subprocess.run(["xdotool", "key", xdo_map[cec_key_id]["xdo"]], check=True)
|
subprocess.run(["xdotool", "key", xdo_map[cec_key_id]["xdo"]], check=True)
|
||||||
@ -200,7 +135,6 @@ cec.add_callback(keypress_handler, cec.EVENT_KEYPRESS)
|
|||||||
cec.add_callback(log_handler, cec.EVENT_LOG)
|
cec.add_callback(log_handler, cec.EVENT_LOG)
|
||||||
log.debug(f"Event handlers active")
|
log.debug(f"Event handlers active")
|
||||||
log.info(f"Open for business on adapter '{use_adapter}'!")
|
log.info(f"Open for business on adapter '{use_adapter}'!")
|
||||||
sddm_change_focus_if_two_windows()
|
|
||||||
|
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user