aboutsummaryrefslogtreecommitdiff
path: root/src/app/mod.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 00:29:53 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-20 00:34:27 +0300
commit2b97799b6715fd6c355db9c225029765971915e6 (patch)
treecb7c2c7093f439ad3460687b88c3e6cf539b64e8 /src/app/mod.rs
parentff8e5a14abe445a61dc200fd30a70870c75d183c (diff)
feat: add configurable default shell
refs #196
Diffstat (limited to 'src/app/mod.rs')
-rw-r--r--src/app/mod.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/app/mod.rs b/src/app/mod.rs
index 3e8a8b83..ca053ba1 100644
--- a/src/app/mod.rs
+++ b/src/app/mod.rs
@@ -234,6 +234,7 @@ impl App {
24,
80,
config.advanced.scrollback_limit_bytes,
+ &config.terminal.default_shell,
event_tx.clone(),
render_notify.clone(),
render_dirty.clone(),
@@ -412,6 +413,7 @@ impl App {
prompt_new_tab_name: config.ui.prompt_new_tab_name,
show_agent_labels_on_pane_borders: config.ui.show_agent_labels_on_pane_borders,
kitty_graphics_enabled: config.experimental.kitty_graphics,
+ default_shell: config.terminal.default_shell.clone(),
pane_scrollback_limit_bytes: config.advanced.scrollback_limit_bytes,
accent: crate::config::parse_color(&config.ui.accent),
sound: config.ui.sound.clone(),
@@ -891,6 +893,10 @@ impl App {
self.state.pane_scrollback_limit_bytes = config.advanced.scrollback_limit_bytes;
}
+ if !invalid_section("terminal") {
+ self.state.default_shell = config.terminal.default_shell.clone();
+ }
+
if !invalid_section("theme") {
self.state.palette = resolve_palette_with_legacy_accent(config, !invalid_section("ui"));
self.state.theme_name = config
@@ -1321,7 +1327,7 @@ mod tests {
std::fs::create_dir_all(path.parent().unwrap()).unwrap();
std::fs::write(
&path,
- "[keys]\nnew_workspace = \"g\"\nprefix = \"ctrl+a\"\n[ui]\nagent_panel_scope = \"current\"\n[ui.toast]\ndelivery = \"herdr\"\n",
+ "[terminal]\ndefault_shell = \"nu\"\n[keys]\nnew_workspace = \"g\"\nprefix = \"ctrl+a\"\n[ui]\nagent_panel_scope = \"current\"\n[ui.toast]\ndelivery = \"herdr\"\n",
)
.unwrap();
std::env::set_var(crate::config::CONFIG_PATH_ENV_VAR, &path);
@@ -1344,6 +1350,7 @@ mod tests {
app.state.agent_panel_scope,
state::AgentPanelScope::CurrentWorkspace
);
+ assert_eq!(app.state.default_shell, "nu");
assert!(app.state.config_diagnostic.is_none());
let toast = app.state.toast.as_ref().unwrap();
assert_eq!(toast.kind, crate::app::state::ToastKind::UpdateInstalled);