Surface terminal bells on tabs, with a font-free indicator - #1922
Open
raphamorim wants to merge 17 commits into
Open
raphamorim wants to merge 17 commits into
raphamorim wants to merge 17 commits into
Conversation
RioEvent::Bell now carries the ringing pane's route_id, so the tab strip can flag the tab it came from with a bell glyph. The mark is set only for background tabs and cleared on the next frame the tab is focused. Gated behind bell.tab-indicator (default true). Signed-off-by: Ayman Bagabas <ayman.bagabas@gmail.com>
Tab titles were only recomputed by a 2s poll, itself gated behind a
second 2s throttle, so an OSC 0/2 title change could take seconds to
reach the tab strip even though the PTY had already reported it.
RioEvent::Title now carries the route id of the pane that changed, so
the tab title is recomputed on arrival. The poll stays for the variables
no event announces ({{program}}, paths) and now repaints when it finds a
change; both paths mark the frame dirty, since the tab strip is chrome
and a bare redraw request is dropped by the present gate.
The title template regex is compiled once now that it renders per event
rather than per tick.
Signed-off-by: Ayman Bagabas <ayman.bagabas@gmail.com>
Drives a real 0x07 byte through the processor so the C0 dispatch and the route id the event carries stay covered, not just the handler call. Signed-off-by: Ayman Bagabas <ayman.bagabas@gmail.com>
aymanbagabas
reviewed
Sep 6, 2026
| pub struct Bell { | ||
| #[serde(default = "default_audio_bell")] | ||
| pub audio: bool, | ||
| /// Mark background tabs that rang the bell with a 🔔 in the tab strip. |
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes #1881. Carries @aymanbagabas's three commits verbatim (bell tab indicator, immediate tab titles, BEL parser test), with review fixes layered on top.
A
BELfrom a background tab now flags its tab in the strip, and OSC 0/2 title changes reach the tab strip immediately as events. See #1881 for the full design write-up. Gated behindbell.tab-indicator(defaulttrue).Titles are now purely event-driven: the standing 2s poll is gone and title rendering never inspects the foreground process.
{{ title }}comes from OSC 0/2 events, the path variables come from OSC 7 events (empty for shells without that integration),{{ program }}is the name of the command the pane spawned, and{{ columns }}/{{ lines }}re-render on resize. An idle terminal does zero title work and no timer ever wakes the process.