Inbox & Attention

Zellij keeps track of what each pane needs: a program waiting for approval, a command that failed, a long build that finished. These are collected in the inbox, across every running session on the machine.

The inbox

Many programs report to the inbox with no setup. See Integrations for which ones, and how to connect others.

States

Each pane has one of these states:

StateMeaning
Needs youThe program is waiting for you: approval, a question, a login, a notification or a bell
FailedA command failed
DoneA command that ran for a while finished
WorkingA program or a long command is running
Gone quietBusy output stopped
New outputOutput arrived while you were looking elsewhere

The state is shown:

  • As a marker in the pane's frame title (frame_markers)
  • As a symbol next to the tab's name in the tab bar (tab_markers)
  • In the session indicator on the top-right of the screen, eg. ◉ 2 need you · 1 running, counting every session
  • In the inbox
  • In the Zellij terminal: in the tray icon's badge (tray_badge) and as desktop notifications (desktop_notifications)
  • In the outer terminal, when Zellij runs inside a terminal that supports OSC 7501 (host_status)

Opening the inbox

  • Ctrl o + i (Session mode i, the ToggleSessionCard action). In the Unlock-First preset: Ctrl g + o + i
  • Clicking the session indicator on the top-right of the screen
  • Clicking the tray icon of the Zellij terminal, or running zellij terminal --inbox

When a new session starts and something needs you, a small version of the inbox (the session card) is shown. This is set with startup_card.

The inbox is part of the session manager. Tab switches between the inbox and the session list.

Keys

KeyAction
↓ ↑Select an item
EnterGo to the pane, switching session if needed
nWatch the pane
mMute or unmute the pane
cMark the item as seen
CDismiss everything
TabSwitch to the session list
?Show all keys
EscClose

The inbox shows a live view of the selected pane. Clicking the view types into that pane without leaving the inbox. Alt Enter, the inbox key or a click outside the view gives the keys back to the inbox. An extra key for this can be set with the live_view_release_key option.

Where states come from

Zellij picks states up from:

Full-screen programs (such as vim, less and htop) and commands being typed into are not reported as working or done.

OSC 7501

Programs and scripts can report their own state with the OSC 7501 escape sequence:

ESC ] 7501 ; key=value:key=value ESC \

The sequence can also end with BEL instead of ESC \.

KeyValues
stateidle, working, done, blocked, error, or clear to remove the status
kindWith blocked: permission, question or auth
progressWith working or blocked: a percentage from 0 to 100
msgBase64-encoded text, up to 2048 bytes once decoded
titleBase64-encoded label, up to 192 bytes once decoded
appA short program name, up to 32 characters
idReports several tasks at once, eg. deploy/eu-west. Up to 8 parts separated by /

Sending ESC ] 7501 ; ? ESC \ asks Zellij what it supports. It replies with ESC ] 7501 ; ?:states=idle,working,done,blocked,error:kinds=permission,question,auth ESC \.

See Integrations for a ready-made shell function.

Watching, ignoring and muting

Each pane can be set apart from the rules above, from its right-click menu, the pane mode keys or zellij action:

Default keysActionWhat it does
Watch paneCtrl p + vWatchPaneEvery finished command (even a short one), the pane exiting and its output going quiet count as needing you. New output alone is not reported. Stays on until turned off
Ignore outputCtrl p + gIgnorePaneOutputHides only the "new output" note. Needing you, failures and finished commands are still reported
Mute paneCtrl p + uMutePaneHides everything the pane reports, including desktop notifications. The pane is still tracked, so unmuting shows its current state
Mute tabCtrl t + uMuteTabMutes every pane in the tab
Mute sessionCtrl o + uMuteSessionMutes the whole session

A command pane can be watched from the start:

$ zellij run --notify -- cargo build
$ zellij action new-pane --notify -- cargo build

CLI actions

ActionDescription
zellij action watch-pane [-p <PANE_ID>]Toggle watching a pane (the focused pane by default)
zellij action ignore-pane-output [-p <PANE_ID>]Stop or start reporting new output of a pane
zellij action mute-pane [-p <PANE_ID>]Mute or unmute a pane
zellij action mute-tab [-t <TAB_ID>]Mute or unmute all panes in a tab (the active tab by default)
zellij action mute-sessionMute or unmute the whole session
zellij action mark-pane-seen [-p <PANE_ID>]Mark a pane as seen, clearing past events
zellij action mark-all-seen [--this-session]Mark every pane of every running session as seen, or only those of the current session
zellij action go-to-next-attentionJump to the next pane that needs attention in any session, switching session if needed
zellij action toggle-tray-iconShow or hide the Zellij terminal's tray icon until it restarts

Moving between sessions

Zellij remembers which sessions each client was in, so it is possible to jump back and forth:

Default keysActionDescription
Ctrl o + TabToggleSessionSwitch to the session this client was in before (again to return), or to the next running session if there is none
Ctrl o + ←GoToPreviousSessionGo back in this client's session history
Ctrl o + →GoToNextSessionGo forward in this client's session history
Ctrl o + nGoToNextAttentionJump to the next pane that needs attention, in any session

The same are available as zellij action toggle-session, go-to-previous-session, go-to-next-session and go-to-next-attention. The right-click menu of the tab bar has a "Back to ..." item for ToggleSession.

Configuration

Everything is configured in the attention block of the configuration file, or in the Attention and Notifications categories of the settings screen. Every key is optional. These are the defaults:

attention {
    enabled true
    frame_markers true
    tab_markers true
    host_status true
    tray_icon true
    idle_rule "all"
    done_threshold_secs 10
    track_commands true
    idle_activity_secs 10
    idle_silence_secs 3
    startup_card "attention"
    desktop_notifications {
        needs_you true
        failed true
        done true
    }
    tray_badge {
        needs_you true
        failed true
        done true
        working true
        quiet false
        new_output false
    }
    notification_details true
}

enabled

Track what panes need. When false, panes report nothing: no markers, inbox, session card, counts in the session indicator, tray badge or desktop notifications, and the watch and mute items leave the right-click menu. The other keys only apply when this is true.

frame_markers

Show what a pane needs in its frame title.

tab_markers

Show what a tab's panes need as a symbol in the tab bar.

host_status

Tell the terminal Zellij runs in what the session needs, when that terminal supports it.

tray_icon

Show the Zellij terminal's tray icon. Sessions and notifications go on when it is hidden.

idle_rule

Notice busy output going quiet in "all" panes, or only in "watched" ones.

done_threshold_secs

Seconds a successful command must run before it is reported as done.

track_commands

List commands as working once they run longer than done_threshold_secs.

idle_activity_secs

Seconds of steady output before quiet detection applies.

idle_silence_secs

Seconds of silence after busy output that count as gone quiet.

startup_card

When a new session shows its session card: "attention" (when something needs you), "always" or "never".

desktop_notifications

Which items the Zellij terminal shows as desktop notifications: needs_you, failed, done.

tray_badge

Which items the tray icon's badge counts: needs_you, failed, done, working, quiet, new_output. The badge shows the count of the most important type that is turned on.

tray_badge_colors

The colour of each type as a hex colour, eg. needs_you "#ff8c00". The inbox and the session list use these colours too. A type without a colour keeps the default badge colour and the theme colour in lists.

attention {
    tray_badge_colors {
        needs_you "#ff8c00"
        failed "#e5484d"
        done "#30a46c"
        working "#3e82f7"
    }
}

notification_details

Show the program and command text in desktop notifications.