aboutsummaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 23:31:36 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-11 23:34:20 +0300
commitfe693f613a23452e68589a4337863f217cc57930 (patch)
tree8d60f6c5b0d8b31426c6623cc8b0c2415d481000 /src/config
parent84c0d003ddb19a8e95e7ad5206771a663913605b (diff)
feat: add optional pane border labels
Diffstat (limited to 'src/config')
-rw-r--r--src/config/keybinds.rs26
-rw-r--r--src/config/model.rs19
2 files changed, 37 insertions, 8 deletions
diff --git a/src/config/keybinds.rs b/src/config/keybinds.rs
index 4a54dd74..4a638ec0 100644
--- a/src/config/keybinds.rs
+++ b/src/config/keybinds.rs
@@ -81,6 +81,8 @@ pub struct Keybinds {
pub next_tab_label: Option<String>,
pub close_tab: Option<(KeyCode, KeyModifiers)>,
pub close_tab_label: Option<String>,
+ pub rename_pane: Option<(KeyCode, KeyModifiers)>,
+ pub rename_pane_label: Option<String>,
pub focus_pane_left: Option<(KeyCode, KeyModifiers)>,
pub focus_pane_left_label: Option<String>,
pub focus_pane_down: Option<(KeyCode, KeyModifiers)>,
@@ -380,6 +382,12 @@ impl Config {
&mut diagnostics,
),
optional_binding(
+ BindingScope::Navigate,
+ "keys.rename_pane",
+ &self.keys.rename_pane,
+ &mut diagnostics,
+ ),
+ optional_binding(
BindingScope::TerminalDirect,
"keys.focus_pane_left",
&self.keys.focus_pane_left,
@@ -602,14 +610,16 @@ impl Config {
next_tab_label: optional_bindings[6].label.clone(),
close_tab: optional_bindings[7].value,
close_tab_label: optional_bindings[7].label.clone(),
- focus_pane_left: optional_bindings[8].value,
- focus_pane_left_label: optional_bindings[8].label.clone(),
- focus_pane_down: optional_bindings[9].value,
- focus_pane_down_label: optional_bindings[9].label.clone(),
- focus_pane_up: optional_bindings[10].value,
- focus_pane_up_label: optional_bindings[10].label.clone(),
- focus_pane_right: optional_bindings[11].value,
- focus_pane_right_label: optional_bindings[11].label.clone(),
+ rename_pane: optional_bindings[8].value,
+ rename_pane_label: optional_bindings[8].label.clone(),
+ focus_pane_left: optional_bindings[9].value,
+ focus_pane_left_label: optional_bindings[9].label.clone(),
+ focus_pane_down: optional_bindings[10].value,
+ focus_pane_down_label: optional_bindings[10].label.clone(),
+ focus_pane_up: optional_bindings[11].value,
+ focus_pane_up_label: optional_bindings[11].label.clone(),
+ focus_pane_right: optional_bindings[12].value,
+ focus_pane_right_label: optional_bindings[12].label.clone(),
split_vertical: bindings[4].value,
split_vertical_label: bindings[4].label.clone(),
split_horizontal: bindings[5].value,
diff --git a/src/config/model.rs b/src/config/model.rs
index a11192fb..4b0638be 100644
--- a/src/config/model.rs
+++ b/src/config/model.rs
@@ -93,6 +93,8 @@ pub struct KeysConfig {
pub next_tab: String,
/// Close the active tab. Unset by default.
pub close_tab: String,
+ /// Rename the focused pane. Unset by default.
+ pub rename_pane: String,
/// Focus the pane to the left in terminal mode. Unset by default.
pub focus_pane_left: String,
/// Focus the pane below in terminal mode. Unset by default.
@@ -123,6 +125,8 @@ pub struct UiConfig {
pub sidebar_width: u16,
/// Ask for confirmation before closing a workspace. Default: true.
pub confirm_close: bool,
+ /// Show agent labels in split pane borders when no manual pane label is set. Default: false.
+ pub show_agent_labels_on_pane_borders: bool,
/// Agent sidebar scope. Saved values are "current" or "all". Default: "all".
pub agent_panel_scope: AgentPanelScopeConfig,
/// Accent color for highlights, borders, and navigation UI.
@@ -160,6 +164,7 @@ impl Default for KeysConfig {
previous_tab: "".into(),
next_tab: "".into(),
close_tab: "".into(),
+ rename_pane: "".into(),
focus_pane_left: "".into(),
focus_pane_down: "".into(),
focus_pane_up: "".into(),
@@ -180,6 +185,7 @@ impl Default for UiConfig {
Self {
sidebar_width: 26,
confirm_close: true,
+ show_agent_labels_on_pane_borders: false,
agent_panel_scope: AgentPanelScopeConfig::All,
accent: "cyan".into(),
toast: ToastConfig::default(),
@@ -242,6 +248,19 @@ agent_panel_scope = "all"
}
#[test]
+ fn pane_border_agent_labels_default_off_and_parse() {
+ let default_config = Config::default();
+ assert!(!default_config.ui.show_agent_labels_on_pane_borders);
+
+ let toml = r#"
+[ui]
+show_agent_labels_on_pane_borders = true
+"#;
+ let config: Config = toml::from_str(toml).unwrap();
+ assert!(config.ui.show_agent_labels_on_pane_borders);
+ }
+
+ #[test]
fn toast_config_parses() {
let toml = r#"
[ui.toast]