WayfireWM / WayfireWM/wayfire

Opt-in logical seats for concurrent human + computer-use agents

Open
#3,129 0 comments 1 reaction 0 assignees View on GitHub

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 on seat-agent can 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.