Compare commits

..

No commits in common. "29e9f39dafe7729cf8729c2625df6d042ef892b4" and "fabb975dd90b5afa8c73f2e7d54fe36ef8a026b2" have entirely different histories.

3 changed files with 39 additions and 76 deletions

48
main.py
View File

@ -6,14 +6,12 @@ import sys
import time
import cec
import logging
import inflect
from rich import traceback
from rich.console import Console
from rich.logging import RichHandler
from inotify_simple import INotify, flags
traceback.install()
console = Console()
p = inflect.engine()
FORMAT = "%(message)s"
@ -73,26 +71,15 @@ def x_focus_window(window_id: str) -> bool:
def sddm_greeter_window_ids() -> list:
sddm_check_attempt = 1
sddm_check_attempts_max = 2
sddm_check_sleep = 2
while sddm_check_attempt <= sddm_check_attempts_max:
log.debug(f"Checking if 'sddm-greeter' window exists "
f"({sddm_check_attempt} of {sddm_check_attempts_max}) ...")
log.debug(f"Checking if an 'sddm-greeter' window exists ...")
try:
dm_windows = subprocess.run(
["xdotool", "search", "--onlyvisible", "--classname", "sddm-greeter"],
check=True,
capture_output=True,
stdout=subprocess.PIPE,
encoding="utf-8")
return dm_windows.stdout.splitlines()
except subprocess.CalledProcessError as xdotool_error:
if sddm_check_attempt < sddm_check_attempts_max:
log.debug(f"No 'sddm-greeter' window, checking again in "
f"""{sddm_check_sleep} {p.plural("second", sddm_check_sleep)} ...""")
sddm_check_attempt += 1
time.sleep(sddm_check_sleep)
else:
log.debug(f"No 'sddm-greeter' window exists, doing nothing")
log.debug(xdotool_error)
return []
@ -103,19 +90,12 @@ def sddm_change_focus_if_two_windows() -> bool:
if not dm_windows:
return False
else:
sddm_focus_attempt = 1
sddm_focus_attempt_max = 2
sddm_focus_sleep = 2
sddm_window_count_attempt = 1
sddm_window_count_attempt_max = 2
while sddm_focus_attempt <= sddm_focus_attempt_max:
log.debug(f"Checking if 'sddm-greeter' window has focus "
f"({sddm_focus_attempt} of {sddm_focus_attempt_max}) ...")
log.debug(f"Checking if 'sddm-greeter' window has focus ...")
try:
x_window_focus = subprocess.run(
["xdotool", "getwindowfocus"],
check=True,
capture_output=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:
@ -127,24 +107,12 @@ def sddm_change_focus_if_two_windows() -> bool:
f"focus ({x_window_id_has_focus})")
dm_windows.remove(x_window_id_has_focus)
x_focus_window(dm_windows[0])
return True
else:
log.warning(f"Number of 'sddm-greeter' windows ({len(dm_windows)}) unexpected, "
f"not doing anything")
return False
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, checking again ...")
sddm_window_count_attempt += 1
if sddm_window_count_attempt == sddm_window_count_attempt_max:
log.debug(f"No other 'sddm-greeter' windows exist, no need to focus anything")
return False
except subprocess.CalledProcessError as xdotool_error:
if sddm_focus_attempt < sddm_focus_attempt_max:
log.debug(f"Unable to get ID of focused window, checking again in "
f"""{sddm_focus_sleep} {p.plural("second", sddm_focus_sleep)} ...""")
sddm_focus_attempt += 1
time.sleep(sddm_focus_sleep)
else:
log.warning(f"Unable to get ID of focused window")
log.warning(xdotool_error)
return False
@ -198,7 +166,6 @@ def signal_handler(rx_signal: int, frame) -> None:
def set_xauth_env(file_abs_path: str) -> None:
os.environ["XAUTHORITY"] = file_abs_path
log.debug(f"""Env variable 'XAUTHORITY' set to '{os.environ["XAUTHORITY"]}'""")
sddm_change_focus_if_two_windows()
signal.signal(signal.SIGINT, signal_handler)
@ -223,9 +190,9 @@ xdo_map = {
}
set_xauth_env(xauth_abs_path)
os.environ["DISPLAY"] = ":0"
log.debug(f"""Env variable 'DISPLAY' set to '{os.environ["DISPLAY"]}'""")
set_xauth_env(xauth_abs_path)
log.debug(f"Activating event handlers ...")
@ -233,6 +200,7 @@ cec.add_callback(keypress_handler, cec.EVENT_KEYPRESS)
cec.add_callback(log_handler, cec.EVENT_LOG)
log.debug(f"Event handlers active")
log.info(f"Open for business on adapter '{use_adapter}'!")
sddm_change_focus_if_two_windows()
while True:

View File

@ -1,4 +1,3 @@
cec
inotify_simple
rich
inflect

View File

@ -10,10 +10,6 @@ colorama==0.4.4
# via rich
commonmark==0.9.1
# via rich
inflect==5.4.0
# via -r requirements.in
inotify-simple==1.3.5
# via -r requirements.in
pygments==2.11.2
# via rich
rich==11.2.0