From 336f601d12265c83d99d446ca375a66b187c1c7e Mon Sep 17 00:00:00 2001 From: NicoM1 <6273562+NicoM1@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:14:57 -0800 Subject: [PATCH] Add option for (forcibly) stopping reMarkable UI while using remouse --- remarkable_mouse/remarkable_mouse.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/remarkable_mouse/remarkable_mouse.py b/remarkable_mouse/remarkable_mouse.py index 599de0c..3c5cfe6 100755 --- a/remarkable_mouse/remarkable_mouse.py +++ b/remarkable_mouse/remarkable_mouse.py @@ -128,9 +128,11 @@ def use_key(key): log.debug("Detected {type(rm).__name__}") log.debug(f'Pen:{rm.pen_file}\nTouch:{rm.touch_file}\nButton:{rm.button_file}') - return rm + return rm, client def main(): + client = None + ui_stopped = False try: parser = argparse.ArgumentParser(description="use reMarkable tablet as a mouse input") parser.add_argument('--debug', action='store_true', default=False, help="enable debug messages") @@ -146,6 +148,7 @@ def main(): parser.add_argument('--region', action='store_true', default=False, help="Use a GUI to position the output area. Overrides --monitor") parser.add_argument('--threshold', metavar='THRESH', default=600, type=int, help="stylus pressure threshold (default 600)") parser.add_argument('--evdev', action='store_true', default=False, help="use evdev to support pen pressure (requires root, Linux only)") + parser.add_argument('--stopui', action='store_true', default=False, help="forcibly stop reMarkable UI when connecting (DOES NOT SAVE OPEN DOCUMENTS)") args = parser.parse_args() @@ -157,13 +160,20 @@ def main(): # ----- Connect to device ----- - rm = connect_rm( + rm, client = connect_rm( address=args.address, key=args.key, password=args.password, ) print("Connected to", args.address) + if args.stopui: + print("--stopui argument passed. Forcibly stopping reMarkable UI...") + print("UI will be restarted when remarkable_mouse is exited.") + print("If connection is lost before UI restarts, hold the reMarkable power button for 10 seconds, wait 5 seconds, then hold for 2 seconds, to reboot the device.") + ui_stopped = True + client.exec_command('systemctl stop xochitl') + # ----- Handle events ----- if args.evdev: @@ -189,6 +199,10 @@ def main(): pass except EOFError: pass + finally: + if ui_stopped: + print("Restarting reMarkable UI...") + client.exec_command('systemctl start xochitl') if __name__ == '__main__': main()