helios-remote/crates/client
Helios 04527ae1bf
feat(client): implement Windows client (Phase 2)
- Persistent shell session (cmd.exe) preserving cd state between commands
- Screenshot capture via Windows GDI (BGRA→RGBA→PNG→Base64)
- Mouse click via SendInput with absolute screen coordinates
- Text input via SendInput with Unicode (UTF-16) key events
- Auto-reconnect with exponential backoff (max 30s)
- Config stored in %APPDATA%/helios-remote/config.json
- All Windows APIs under #[cfg(windows)] for cross-compile safety
- CI: add Windows cross-compile job (x86_64-pc-windows-gnu) with artifact upload
2026-03-02 18:32:55 +01:00
..
src feat(client): implement Windows client (Phase 2) 2026-03-02 18:32:55 +01:00
Cargo.toml feat(client): implement Windows client (Phase 2) 2026-03-02 18:32:55 +01:00
README.md Add logo assets and update README 2026-03-02 18:16:05 +01:00

helios-client (Phase 2 — not yet implemented)

This crate will contain the Windows remote-control client for helios-remote.

Planned Features

  • Connects to the relay server via WebSocket (wss://)
  • Sends a Hello message on connect with an optional display label
  • Handles incoming ServerMessage commands:
    • ScreenshotRequest → captures the primary display (Windows GDI or windows-capture) and responds with base64 PNG
    • ExecRequest → runs a shell command in a persistent cmd.exe / PowerShell session and returns stdout/stderr/exit-code
    • ClickRequest → simulates a mouse click via SendInput Win32 API
    • TypeRequest → types text via SendInput (virtual key events)
  • Persistent shell session so cd C:\Users persists across exec calls
  • Auto-reconnect with exponential backoff
  • Configurable via environment variables or a client.toml config file

Planned Tech Stack

Crate Purpose
tokio Async runtime
tokio-tungstenite WebSocket client
serde_json Protocol serialization
windows / winapi Screen capture, mouse/keyboard input
base64 PNG encoding for screenshots

Build Target

cargo build --target x86_64-pc-windows-gnu

App Icon

The file assets/logo.ico in the repository root is the application icon intended for the Windows .exe. It can be embedded at compile time using a build script (e.g. via the winres crate).