Opt-in logical seats for concurrent human + computer-use agents
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 3.1k
- Forks
- 237
- Avg merge
- 1h 43m
- Merged PRs (30d)
- 1
Description
Describe the feature
Add opt-in logical input seats so one human and one or more trusted computer-use agents can share a single Wayfire session with independently visible cursors and keyboard focus.
Default behavior stays one seat. Extra seats would be named, optional, and assignable to physical or authorized virtual pointer/keyboard devices. Each seat would have its own cursor, pointer focus, keyboard focus, grabs, and pressed-key state. A seat could be bounded to an output. IPC or a plugin hook should list seats and disable a non-default seat (releasing keys/buttons).
Not requesting logind multi-seat, a second Wayfire process, or RDP/VNC.
Use case / Example
- Current behavior: An agent that injects pointer/keyboard events (Hermes, Claude Code, Codex, wlroots virtual pointer, etc.) shares Wayfire's one seat. Moving the agent pointer steals the human cursor. Typing from the agent steals keyboard focus.
- Proposed behavior: The human keeps
seat0. An agent onseat-agentcan operate a window on another output with its own cursor. The human can keep typing in their focused client.
Benefits
Computer-use on a multi-monitor desktop is currently all-or-nothing: either the human or the agent owns the one cursor. Independent seats let you supervise an agent without leaving your own work.
Sway already has named seats. Wayland wl_seat already allows more than one. zwlr_virtual_pointer_v1 can attach a pointer to a seat if the compositor keeps per-seat state.
Additional context
I searched issues for multi-seat / virtual pointer / multiple cursors and did not find this use case.
Non-goals: extra Linux users, extra GPUs, unrestricted input injection, promising correct Xwayland multi-seat before native Wayland is right.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no source files or tests. Start by locating Wayfire's existing seat handling and wlroots virtual-pointer integration, then assess how an IPC or plugin hook could list and disable seats. Done means optional named seats support independent cursors, focus, grabs, and pressed-key state while preserving the default single-seat behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100