Commit graph

62 commits

Author SHA1 Message Date
e392ba1055 Rewrite X11 backend to drop xcap
Use x11rb directly for screenshot capture and window metadata so the Linux build no longer drags in Wayland build dependencies.

Co-authored-by: Codex <noreply@openai.com>
2026-03-25 12:28:23 -04:00
cc7490993a edition 2026-03-24 23:07:50 -04:00
46dd2f9c53 rename deps 2026-03-24 23:02:44 -04:00
62a1aab859 rename 2026-03-24 22:59:21 -04:00
9adc74f6b7 gitignore 2026-03-24 22:00:27 -04:00
03dfd6b6ea Phase 6: utility commands, SKILL.md, AGENTS.md, README.md
- Implement screen_size via xcap Monitor, mouse_position via x11rb
  query_pointer, standalone screenshot with optional annotation,
  launch for spawning detached processes
- Handler dispatchers for get-screen-size, get-mouse-position,
  screenshot, launch
- SKILL.md agent discovery file with allowed-tools frontmatter
- AGENTS.md contributor guidelines for AI agents
- README.md with installation, quick start, architecture overview
2026-03-24 21:40:29 -04:00
567115a6c2 Phase 5: window management via x11rb
- Add x11rb 0.13 dependency with randr feature
- RustConnection and root window in X11Backend
- Focus window via _NET_ACTIVE_WINDOW client message
- Close window via _NET_CLOSE_WINDOW client message
- Move/resize via configure_window
- Handler dispatchers for focus, close, move-window, resize-window
- list-windows command re-runs snapshot for fresh window tree
2026-03-24 21:36:56 -04:00
314a11bcba Phase 4: mouse + keyboard input via enigo
- Add enigo 0.6 dependency (x11rb/XTest backend)
- Enigo field in X11Backend for input simulation
- Click, double-click at absolute coords or @wN ref centers
- Type text into focused window, press individual keys
- Hotkey combinations (modifier press, key click, modifier release)
- Mouse move, scroll (vertical/horizontal), drag operations
- parse_key() mapping human-readable names to enigo Key values
- Handler dispatchers with ref resolution and coord parsing
2026-03-24 21:33:30 -04:00
0072a260b8 Phase 3: screenshot annotation with bounding boxes and @wN labels
- Add imageproc and ab_glyph dependencies
- Annotation module drawing colored bounding boxes per window
- White @wN labels on dark background at each window's top-left
- 8-color palette cycling for distinct window identification
- Back-to-front iteration so topmost labels are not occluded
- Embedded DejaVu Sans Mono font via include_bytes
- Wire --annotate flag into snapshot pipeline
2026-03-24 21:28:10 -04:00
79e6e0e25c Phase 2: snapshot - window tree + screenshot via xcap
- Add xcap and image dependencies
- DesktopBackend trait with all 16 methods for future extensibility
- X11Backend with real snapshot() using xcap Window::all() and
  Monitor::all() for z-ordered window enumeration and screenshot
- Stub implementations for input/window management (phases 4-6)
- Wire X11Backend into DaemonState (now returns Result)
- Real snapshot handler replacing placeholder, updates ref map
2026-03-24 21:24:34 -04:00
dfaa339594 Phase 1: project scaffold, clap CLI, self-re-exec daemon, NDJSON IPC
- Cargo.toml with clap, tokio, serde, anyhow dependencies
- Entry point with env-var routing to daemon or CLI mode
- Core protocol types (Request/Response NDJSON wire format)
- Session detection (X11 check with DISPLAY/XDG_SESSION_TYPE)
- RefMap with @wN selector resolution (direct, prefix, substring)
- Snapshot/WindowInfo shared types with Display impl
- clap derive CLI with all subcommands (snapshot, click, type, etc.)
- Client connection: socket path resolution, daemon auto-start via
  self-re-exec, NDJSON send/receive with retry backoff
- Tokio async daemon: Unix socket listener, accept loop, graceful
  shutdown via notify
- DaemonState holding session info and ref map
- Placeholder handler returning hardcoded snapshot response
2026-03-24 21:19:18 -04:00
17d4a1edeb Initial commit: add .gitignore 2026-03-24 21:08:54 -04:00