Feat: Dynamic configurable statusbar #10088
Closed
+2,264
−4
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.
Overview & Motivation
AI Usage Note: This feature was built utilizing
opus-4.5andgpt-5.2-codexThis feature was built addressing the issues discussed in #2421. This gives us the ability to define a configurable status bar (in a format suggested by mitchellh) that is displayed upon invoking a configurable key bind (default CMD/SUPER + .)
My personal interest in this feature stems from the way I use ghostty in fullscreen usually split in 2 or 4. It's very difficult to tell the splits apart sometimes, especially when running certain AI agents, and having a per surface display that can be toggled on or off is very helpful.
Config
status-bar-widget: repeatable widget definitions.Syntax:
kind[:param=value,...]time,cwd,pwd,size,modifiers,pending_key,cpu,memory,cursor_pos(stub)name(string): token used in status-barformat(string): strftime format for timestyle(string): name from status-bar-stylestyle-range/style_range(string): name from status-bar-style-rangestatus-bar-style: repeatable style definitions.Syntax:
name=<name>,fg=<color>,bold=<bool>,size=<pt>status-bar-style-range: repeatable numeric range mappings.Syntax:
name=<name>,range=<min>..<max>=<style>,...status-bar: layout string.
Use whitespace-separated widget tokens;
<->splits left/right.Minimal (CPU + mem + cwd):
Styled widgets:
Range styling (CPU/mem thresholds):
Notes
Quick screen recording:
https://github.com/user-attachments/assets/e64dddaf-2990-4368-9599-ccdc48693efb