diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-30 01:53:55 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-30 01:55:36 +0300 |
| commit | 8df1639048529b383358000879b5ee078a90b9f9 (patch) | |
| tree | 7b0088246c3cc0834ed04cf20bf9726645bdb040 /src/config/model.rs | |
| parent | 817a1562db9156e34f13487344ea147618f9070b (diff) | |
fix: use login shells for macos panes
refs #350
Diffstat (limited to 'src/config/model.rs')
| -rw-r--r-- | src/config/model.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/config/model.rs b/src/config/model.rs index 84d03bc2..77af2f75 100644 --- a/src/config/model.rs +++ b/src/config/model.rs @@ -63,11 +63,22 @@ impl<'de> Deserialize<'de> for NewTerminalCwdConfig { } } +#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum ShellModeConfig { + #[default] + Auto, + Login, + NonLogin, +} + #[derive(Debug, Default, Deserialize)] #[serde(default)] pub struct TerminalConfig { /// Executable used for new interactive panes. Empty means SHELL, then /bin/sh. pub default_shell: String, + /// Startup mode for new interactive pane shells. + pub shell_mode: ShellModeConfig, /// CWD policy for new interactive panes, tabs, and workspaces. pub new_cwd: NewTerminalCwdConfig, } @@ -494,13 +505,16 @@ mod tests { fn terminal_default_shell_defaults_empty_and_parses() { let default_config = Config::default(); assert!(default_config.terminal.default_shell.is_empty()); + assert_eq!(default_config.terminal.shell_mode, ShellModeConfig::Auto); let toml = r#" [terminal] default_shell = "nu" +shell_mode = "non_login" "#; let config: Config = toml::from_str(toml).unwrap(); assert_eq!(config.terminal.default_shell, "nu"); + assert_eq!(config.terminal.shell_mode, ShellModeConfig::NonLogin); } #[test] |
