Skip to main content

Cross-platform idle activity simulator with AnyDesk integration

Project description

Desk Awake

Cross-platform idle activity simulator with a web control panel. Keeps your session active over AnyDesk by generating mouse movements and keyboard actions.

Features:

  • Auto-detects OS (macOS/Linux/Windows) and uses appropriate keys and commands
  • Web dashboard — control run/pause/stop and AnyDesk connections from any browser
  • Connection monitoring — detects AnyDesk drops, auto-reconnects, sends alerts
  • Notifications — Slack, Discord, or generic webhook alerts on connection issues
  • Multi-day scheduling — run daily on a schedule until an end date
  • Expose via ngrok for remote control from anywhere

Installation

pip install desk-awake

# On macOS, include optional mac dependencies
pip install "desk-awake[mac]"

Usage

Web Dashboard Mode (recommended)

Start the control panel:

desk-awake serve
desk-awake serve --port 8080

Then open http://localhost:5000 in your browser. From the dashboard you can:

  • Run / Pause / Stop the activity simulator
  • Connect to AnyDesk by entering a remote address
  • Monitor connection health — auto-reconnects on drops
  • Set webhook URL for Slack/Discord alerts
  • View live logs

To access remotely via ngrok:

# In another terminal
ngrok http 5000

Headless Mode (no web UI)

# Run until a specific time
desk-awake run --until "18:30"

# Multi-day: run 09:00–18:30 daily until a date
desk-awake run -u "18:30" -s "09:00" -e "2026-06-15"

# Skip sleep on exit
desk-awake run -u "18:30" --no-sleep

Exit behavior flags (headless mode)

Flag Description
--close-anydesk Close AnyDesk when done (default)
--no-close-anydesk Don't close AnyDesk when done
--sleep Put machine to sleep when done
--no-sleep Don't sleep when done

OS-specific defaults

OS Close AnyDesk Sleep
macOS
Linux
Windows

Connection Monitoring

When running in web dashboard mode with an AnyDesk address configured:

  • Checks connection every 15 seconds
  • On disconnect: attempts up to 5 reconnections
  • Sends webhook notification on connection loss and recovery
  • If all reconnect attempts fail, stops and sends a final alert

Webhook Notifications

Set a webhook URL in the dashboard settings to receive alerts:

  • Slack: https://hooks.slack.com/services/...
  • Discord: https://discord.com/api/webhooks/...
  • Any endpoint accepting JSON POST with title and message fields

Running without installing

python -m desk_awake serve
python -m desk_awake run --until "18:30"

Requirements

  • Python 3.8+
  • pynput (installed automatically)
  • flask (installed automatically)
  • On macOS: pyobjc packages (install with pip install "desk-awake[mac]")
  • On Linux: may need xdotool or X11 libs depending on your display server

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

desk_awake-1.3.1.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

desk_awake-1.3.1-py3-none-any.whl (27.1 kB view details)

Uploaded Python 3

File details

Details for the file desk_awake-1.3.1.tar.gz.

File metadata

  • Download URL: desk_awake-1.3.1.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for desk_awake-1.3.1.tar.gz
Algorithm Hash digest
SHA256 df7ac91c344803f9759c8652b2f9cabb3b73cee7c662c6928749a11f568c9ca4
MD5 8755083dc06703082c0dc5a45ec85ba0
BLAKE2b-256 1c73d57cdfc84d64e220ec54049b8f39db02237f9a5fde27d579ea07478bff8a

See more details on using hashes here.

File details

Details for the file desk_awake-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: desk_awake-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 27.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for desk_awake-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5b14b45e5c82a49670bfa522e0107ac59a04c2df8a0e2a21a199a1a5795e8907
MD5 b10b09f27c7883d754e2dfa71d636daa
BLAKE2b-256 d677c09d8eda5d630396810c9b00c28d5d18a68fd522862eca978a28d1327db3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page