Status indicators

Each dashboard row fits a workspace's agent status, PR, processes, and changes on one line, so you can see which workspace needs you without attaching.

Row columns

Left to right:

ColumnShows
Agent stripOne colored bar per agent, primary rightmost
StatusA colored bar and a status glyph (see below)
Branch⎇ colored by PR state, the name, tags, and badges
PR⏺ #241 open plus a review mark
Processes● 2p for two tracked processes, · for none
Diff+N −N lines committed on the branch since its base
MessageStatus word, then the agent's recap or its latest activity
AgeTime since the last activity

The name is bold, and warn-colored for a workspace created in permissive mode unless you picked a name color with C. In the message column, ▸ means the agent reported its status with wsx status and └ means wsx inferred it.

Status glyphs

GlyphWordMeaning
?askingThe agent asked a question or waits on a permission prompt
!stalledNo output for 60 seconds mid-turn
spinnerthinkingThe agent is working
spinnerwaitingThe session is running but quiet for over 30 seconds
✓doneThe agent finished its turn
·idleNo session, or a session you haven't prompted yet

The dashboard's top line tallies how many workspaces hold each status, listing only the ones in use: ? 2 question ⠋ 3 thinking · 4 idle. The tally counts every workspace, including ones a filter hides. A theme whose header leaves out $statuses shows the tally on its own row below the header instead, with every status listed, zeros dimmed. That row isn't clickable.

Filtering by status

Click a status in the header tally to show only the workspaces in that status. Clicking ? 2 question lists just those two rows. While the filter is on, that status is highlighted and the others are dimmed. If the last workspace leaves that status, its item stays in the tally at 0, so you can still see what's filtering the list and click to clear it. The filter lasts until you clear it or quit wsx.

  • Click the same status again, or press esc, to clear the filter.
  • Click a different status to switch to it. Only one status filters at a time.
  • A status filter combines with a / filter: both must match. With both on, the first esc clears the typed filter and the second clears the status.
  • Like a / filter, a status filter shows rows that hide rules would otherwise hide, so the list matches the tally.

In a workspace with several agents, a peer's bar in the agent strip turns into a spinner while that agent prints output. A + stands in for peers that don't fit.

Branch badges

BadgeMeaning
spinnerBeing created or archived
⚙!Setup script failed; the workspace still works. ? then o shows the log
⚙?Setup was cancelled
✗The worktree was never created. Archive it with d
✉!A message to the agent couldn't be delivered
◇tmux-shared: green while its session runs, red when it doesn't
columns iconA saved split layout (nerd fonts only)

PR chip

The chip and the ⎇ glyph take the PR state's color: no PR, draft, open, conflicts, merged, or closed. Open PRs also carry a review mark:

MarkMeaning
✓Approved
✗Changes requested; a number counts unresolved threads
◌Review required

PR data needs gh, installed and authenticated.

Alerts

When an agent asks a question, waits on a permission prompt, finishes, or stalls, wsx rings the terminal bell. The workspace also moves to the front of the attached view's workspace strip until you attach to it.

  • Each state has its own bell pattern, set with the notification_bell_* settings.
  • wsx config set notifications off turns off the bell and the flag.
  • Workspaces that were already waiting when wsx started don't ring.
  • While wsx runs, the bell doesn't ask the window manager for urgency, so on Hyprland it won't switch your desktop workspace.

See Settings for the allowed values.