Skip to content

Per-workspace/per-tab badge: scroll-fixed watermark in the terminal area (like iTerm2 badges) #3607

Description

@thloesche

Problem

When working across multiple mux workspaces — and multiple tabs within each workspace — it's easy to lose track of which workspace and which tab a given surface belongs to. The workspace name in the sidebar helps, but it isn't visible from within the terminal area, and it doesn't tell you which tab you're in — especially when a long command produces hundreds of lines of output and you're scrolling through them.

Request

A configurable, scroll-fixed identifier rendered as an overlay in the terminal surface (not part of the scrollback), similar to iTerm2's "badge" feature:

  • Visible in every tab/surface of a workspace (shell, agent, editor, build logs, …)
  • Content reflects both the workspace and the tab/surface — e.g. a template that can include the workspace name and the tab name/index (something like {workspace} · {tab})
  • Stays fixed regardless of output volume or scroll position
  • Configurable text/template, position, opacity, and color/size

Why current options fall short

  • Shell prompt markers scroll away with output.
  • The agent status line is per-agent-tab only.
  • Ghostty's background-image is scroll-fixed but global (same image for all tabs — can't distinguish workspace A vs. B, let alone tab vs. tab). (mux renders terminals via ghostty-web, so this Ghostty limitation applies here too.)
  • OSC 0/1/2 title sequences are honored by mux — they update the tab label in the sidebar chrome — but that label is not visible from within the terminal viewport while scrolling output, and it can't combine workspace + tab into a persistent in-terminal marker.

A native badge that can render both the workspace and the tab identifier would close this gap.


Edit: corrected the fourth bullet — mux does honor OSC 0/1/2 (titles drive sidebar tab labels); the gap is the lack of a scroll-fixed in-terminal overlay, not OSC handling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions