aboutsummaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-15 15:14:19 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-15 15:14:19 +0300
commit4bfc3a89c570aea8c9e4c91a7b249b50c112f1d2 (patch)
tree6141328f8d71220f26ad2c70967df368b8940763 /src/config
parent7c636e97f4568583651de3bc8c8550a3bab54743 (diff)
config: split experimental settings from advanced
Diffstat (limited to 'src/config')
-rw-r--r--src/config/io.rs8
-rw-r--r--src/config/model.rs36
2 files changed, 32 insertions, 12 deletions
diff --git a/src/config/io.rs b/src/config/io.rs
index 16602972..60eb54d8 100644
--- a/src/config/io.rs
+++ b/src/config/io.rs
@@ -166,6 +166,14 @@ fn load_live_config_from_str(content: &str) -> Result<LoadedConfig, Vec<String>>
&mut invalid_sections,
|section| config.advanced = section,
);
+ load_live_section(
+ table,
+ "experimental",
+ "experimental config",
+ &mut diagnostics,
+ &mut invalid_sections,
+ |section| config.experimental = section,
+ );
Ok(LoadedConfig {
config,
diff --git a/src/config/model.rs b/src/config/model.rs
index a8485fb0..8ea52724 100644
--- a/src/config/model.rs
+++ b/src/config/model.rs
@@ -56,6 +56,7 @@ pub struct Config {
pub keys: KeysConfig,
pub ui: UiConfig,
pub advanced: AdvancedConfig,
+ pub experimental: ExperimentalConfig,
}
#[derive(Debug)]
@@ -150,13 +151,18 @@ pub struct UiConfig {
#[derive(Debug, Deserialize)]
#[serde(default)]
pub struct AdvancedConfig {
+ /// Maximum scrollback buffer size in bytes retained per pane terminal. Default: 10000000.
+ #[serde(alias = "scrollback_lines")]
+ pub scrollback_limit_bytes: usize,
+}
+
+#[derive(Debug, Default, Deserialize)]
+#[serde(default)]
+pub struct ExperimentalConfig {
/// Allow launching herdr inside an existing herdr pane. Default: false.
pub allow_nested: bool,
/// Experimental local Kitty graphics rendering for attached clients. Default: false.
pub kitty_graphics: bool,
- /// Maximum scrollback buffer size in bytes retained per pane terminal. Default: 10000000.
- #[serde(alias = "scrollback_lines")]
- pub scrollback_limit_bytes: usize,
}
impl Default for KeysConfig {
@@ -242,8 +248,6 @@ impl<'de> Deserialize<'de> for ToastConfig {
impl Default for AdvancedConfig {
fn default() -> Self {
Self {
- allow_nested: false,
- kitty_graphics: false,
scrollback_limit_bytes: DEFAULT_SCROLLBACK_LIMIT_BYTES,
}
}
@@ -364,27 +368,35 @@ delivery = "terminal"
#[test]
fn kitty_graphics_default_off_and_parse() {
let config = Config::default();
- assert!(!config.advanced.kitty_graphics);
+ assert!(!config.experimental.kitty_graphics);
let toml = r#"
-[advanced]
+[experimental]
kitty_graphics = true
"#;
let config: Config = toml::from_str(toml).unwrap();
- assert!(config.advanced.kitty_graphics);
+ assert!(config.experimental.kitty_graphics);
}
#[test]
- fn advanced_config_parses() {
+ fn experimental_config_parses() {
let toml = r#"
-[advanced]
+[experimental]
allow_nested = true
kitty_graphics = true
+"#;
+ let config: Config = toml::from_str(toml).unwrap();
+ assert!(config.experimental.allow_nested);
+ assert!(config.experimental.kitty_graphics);
+ }
+
+ #[test]
+ fn advanced_config_parses() {
+ let toml = r#"
+[advanced]
scrollback_limit_bytes = 12345
"#;
let config: Config = toml::from_str(toml).unwrap();
- assert!(config.advanced.allow_nested);
- assert!(config.advanced.kitty_graphics);
assert_eq!(config.advanced.scrollback_limit_bytes, 12345);
}