aboutsummaryrefslogtreecommitdiff
path: root/src/config.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-10 01:20:09 +0300
committerGitHub <noreply@github.com>2026-08-10 01:20:09 +0300
commite48d83067a5a9b05dfd0a82761068866ab2d294d (patch)
tree159b92f857f85e40037879c7f32da4957093597b /src/config.rs
parente2aa86a9e8b6445488ef11b2c0a8b4c22a6f79ce (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.rs13
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()
}