diff options
| author | Can Celik <ogulcancelik@gmail.com> | 2026-08-10 01:20:09 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-10 01:20:09 +0300 |
| commit | e48d83067a5a9b05dfd0a82761068866ab2d294d (patch) | |
| tree | 159b92f857f85e40037879c7f32da4957093597b /src/config.rs | |
| parent | e2aa86a9e8b6445488ef11b2c0a8b4c22a6f79ce (diff) | |
feat: add configurable tab bar status (#2586)
* feat: show a zoom indicator in the desktop tab bar
Reserve the right edge of the tab row for a ZOOM pill while the
focused pane is zoomed, matching the accent style of the mode bars.
The per-tab Z suffix stays; the pill makes the zoomed state visible
at a glance like tmux's status-right flag.
* feat: optionally show the hostname in the desktop tab bar
Add ui.tab_bar_hostname to display the machine's hostname at the right
edge of the tab row, like tmux's #h in status-right. The value resolves
where the server renders, so remote sessions show the remote host. Off
by default.
* fix: strip control characters from the tab bar hostname
* fix: hide the hostname when it would squeeze out the tab strip
* feat: add configurable tab bar status
* fix: harden tab bar status updates
* fix: terminate tab bar status process trees
* fix: disable status commands on unsupported platforms
* fix: skip unchanged status command renders
* fix: keep tab bar status opt-in by default
---------
Co-authored-by: David Heinemeier Hansson <david@hey.com>
Diffstat (limited to 'src/config.rs')
| -rw-r--r-- | src/config.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/config.rs b/src/config.rs index 858ca632..88645061 100644 --- a/src/config.rs +++ b/src/config.rs @@ -5,6 +5,7 @@ mod keybinds; mod model; mod sidebar; mod sound; +mod tab_bar; mod theme; pub use self::{ @@ -30,11 +31,20 @@ pub use self::{ SpaceSidebarToken, SpacesSidebarConfig, }, sound::SoundConfig, + tab_bar::TabBarRightEntryConfig, theme::{parse_color, CustomThemeColors, ThemeConfig, THEME_NAMES}, }; pub(crate) use self::keybinds::parse_key_combo; -pub(crate) use self::{io::upsert_top_level_bool, theme::canonical_theme_name}; +pub(crate) use self::{ + io::upsert_top_level_bool, + tab_bar::{ + parse_tab_bar_datetime_format, tab_bar_right_diagnostics, + MAX_TAB_BAR_COMMAND_INTERVAL_SECONDS, MAX_TAB_BAR_COMMAND_TIMEOUT_SECONDS, + MAX_TAB_BAR_RIGHT_ENTRIES, + }, + theme::canonical_theme_name, +}; pub const CONFIG_PATH_ENV_VAR: &str = "HERDR_CONFIG_PATH"; pub const DEFAULT_SCROLLBACK_LIMIT_BYTES: usize = 10_000_000; @@ -74,6 +84,7 @@ impl Config { .chain(self.remote_image_paste_key().err()) .chain(self.theme.diagnostics()) .chain(self.ui.sound.diagnostics()) + .chain(tab_bar_right_diagnostics(&self.ui.tab_bar_right)) .chain(self.invalid_sidebar_bounds_diagnostic()) .collect() } |
