Skip to content

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

Description

@kvnloo

Is your feature request related to a problem? Please describe.

COSMIC Comp exposes one input seat. Computer-use agents (Hermes, Claude Code, Codex, and similar) have to share that seat with the human. On a multi-monitor desktop, an agent moving the pointer or typing steals the human's cursor and keyboard focus, so you cannot keep working while a trusted agent operates another display or workspace.

This is not a request for logind/GPU multi-seat, a second compositor instance, or remote desktop.

Describe the solution you'd like

Opt-in named logical seats inside one COSMIC session:

  • Keep current devices and behavior on the default seat.
  • Allow physical or authorized virtual pointer/keyboard devices to attach to a named seat.
  • Give each seat its own cursor, pointer focus, keyboard focus, grabs, constraints, and pressed-key state.
  • Optionally bound a seat to specific outputs/workspaces.
  • Expose enough IPC/settings to list seats, label agent cursors, and disable a non-default seat with key/button release.

Sway already implements named seats. Wayland models this as multiple wl_seat globals. Virtual pointer protocols can inject a pointer only if the compositor owns independent seat state.

Describe alternatives you've considered

  • Second COSMIC/RDP/VNC session: extra login, no shared clipboard/notifications the way a same-session agent needs, and the human still cannot see both cursors on one desktop.
  • Sharing the one seat: this is today's behavior and it always steals focus.
  • Xwayland-only tricks: COSMIC is Wayland-native; X11 MPX would not help native clients.

Additional context

I searched cosmic-comp issues for multi-seat / virtual pointer / multiple cursors / wl_seat and did not find this use case.

cosmic-epoch's issue template points compositor input/tiling/display issues here, so this is filed on cosmic-comp rather than cosmic-epoch.

Security: no new unrestricted injection path; reuse existing virtual-input permissions; default seat stays with the human.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions