{"id":36955142,"url":"https://github.com/ansh-info/move-mouse-macos","last_synced_at":"2026-01-13T13:01:48.960Z","repository":{"id":328024758,"uuid":"1113982595","full_name":"ansh-info/move-mouse-macOS","owner":"ansh-info","description":"macOS utility that keeps remote/VM sessions awake by gently moving the mouse until you touch it, with configurable delays and intervals.","archived":false,"fork":false,"pushed_at":"2025-12-10T18:57:29.000Z","size":13,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-11T06:02:32.364Z","etag":null,"topics":["accessibility","automation","cli","cursor","idle-prevention","keepalive","macos","macos-automation","mouse","mouse-jiggler","python","remote-desktop","vm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansh-info.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-10T18:24:57.000Z","updated_at":"2025-12-10T20:48:37.000Z","dependencies_parsed_at":"2025-12-11T08:00:57.736Z","dependency_job_id":null,"html_url":"https://github.com/ansh-info/move-mouse-macOS","commit_stats":null,"previous_names":["ansh-info/move-mouse-macos"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ansh-info/move-mouse-macOS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansh-info%2Fmove-mouse-macOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansh-info%2Fmove-mouse-macOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansh-info%2Fmove-mouse-macOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansh-info%2Fmove-mouse-macOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansh-info","download_url":"https://codeload.github.com/ansh-info/move-mouse-macOS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansh-info%2Fmove-mouse-macOS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28385806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T12:01:30.995Z","status":"ssl_error","status_checked_at":"2026-01-13T12:00:09.625Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","automation","cli","cursor","idle-prevention","keepalive","macos","macos-automation","mouse","mouse-jiggler","python","remote-desktop","vm"],"created_at":"2026-01-13T13:01:48.553Z","updated_at":"2026-01-13T13:01:48.951Z","avatar_url":"https://github.com/ansh-info.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Mouse mover for macOS\n\nPython helper that jiggles the cursor so a remote/VM session stays awake. It ignores user input during an initial delay window, then moves the mouse in small random steps until it sees real user input, at which point it stops immediately.\n\n### How it works\n\n- Waits for `--start-delay` seconds (defaults to 10) and ignores any mouse activity during that window so setup clicks don't stop it.\n- Spawns an event tap via Quartz to monitor real mouse/trackpad activity. Events from other processes are treated as user activity; events sourced from this script are ignored.\n- On each cycle, it randomly offsets the cursor by up to `--max-jitter` pixels on both axes, sleeps a random interval between `--min-interval` and `--max-interval`, and logs every move with timestamps.\n- Stops when:\n  - Mouse/trackpad input is detected from another PID (you moved it), or\n  - You hit `Ctrl+C`.\n\n### Requirements\n\n- macOS (tested on Apple Silicon)\n- Python 3.12+\n- Accessibility permission for the terminal running the script (System Settings -\u003e Privacy \u0026 Security -\u003e Accessibility)\n- Quartz bindings (managed via uv by default)\n\n### Install (preferred: uv)\n\n1. Clone the repo and enter it.\n2. Sync dependencies: `uv sync`\n3. If Quartz is missing, add it: `uv add pyobjc-framework-Quartz`\n\n### Install (optional: pip)\n\nIf you prefer pip/venv:\n\n- `python -m venv .venv \u0026\u0026 source .venv/bin/activate`\n- `pip install pyobjc-framework-Quartz`\n\n### Run (uv)\n\n```\nuv run main.py --start-delay 10 --min-interval 3 --max-interval 7 --max-jitter 120\n```\n\nWith plain python:\n\n```\npython main.py --start-delay 10 --min-interval 3 --max-interval 7 --max-jitter 120\n```\n\nFlags:\n\n- `--start-delay`: wait time before cursor movement begins (seconds).\n- `--min-interval` / `--max-interval`: range for random sleep between moves (seconds).\n- `--max-jitter`: max pixels to move from the current cursor position on each axis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansh-info%2Fmove-mouse-macos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansh-info%2Fmove-mouse-macos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansh-info%2Fmove-mouse-macos/lists"}