From ccf7401f71757cb0fa172049b8d9f28155bbc903 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Fri, 1 May 2026 16:05:04 +0000 Subject: [PATCH] fix: anti-idle uses mouse jiggle instead of Shift key Mouse movement works universally on any remote OS (Windows, Ubuntu, RED OS, Astra). Alternates between (960,540) and (961,541) every 30s inside xfreerdp window via xdotool mousemove --window. --- rdp-proxy/manager.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/rdp-proxy/manager.py b/rdp-proxy/manager.py index 9f07c2c..a5a8bb5 100644 --- a/rdp-proxy/manager.py +++ b/rdp-proxy/manager.py @@ -71,8 +71,9 @@ def _monitor_loop(): threading.Thread(target=_monitor_loop, daemon=True).start() def _anti_idle_loop(): - """Send Shift key every 30s while xfreerdp is connected to prevent screen lock.""" + """Move mouse inside xfreerdp window every 30s — works on any remote OS.""" env = {**os.environ, "DISPLAY": DISPLAY} + toggle = False while True: time.sleep(30) with _lock: @@ -86,17 +87,16 @@ def _anti_idle_loop(): ) win_id = r.stdout.decode().strip().splitlines()[0] if r.stdout.strip() else "" if win_id: + # Чередуем позицию — tiny mouse jiggle внутри окна xfreerdp + x, y = (960, 540) if toggle else (961, 541) subprocess.run( - ["xdotool", "key", "--window", win_id, "--clearmodifiers", "shift"], + ["xdotool", "mousemove", "--window", win_id, str(x), str(y)], env=env, capture_output=True, timeout=5, ) - log.debug("anti_idle shift sent window=%s", win_id) + toggle = not toggle + log.debug("anti_idle mousemove window=%s pos=%s,%s", win_id, x, y) else: - subprocess.run( - ["xdotool", "mousemove", "--sync", "960", "540"], - env=env, capture_output=True, timeout=5, - ) - log.debug("anti_idle mousemove fallback") + log.debug("anti_idle: xfreerdp window not found") except Exception as e: log.debug("anti_idle error: %s", e)