aboutsummaryrefslogtreecommitdiff
path: root/src/workspace
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-08-03 02:05:27 +0300
committerGitHub <noreply@github.com>2026-08-03 02:05:27 +0300
commit10eb0bc744165ae91dfce9fd731fe170410b34ec (patch)
tree8622d429d9453c2e8d06630322804a702973d94a /src/workspace
parentcbc31d34a1fb3da64415737de57ad10fe6af5ba5 (diff)
fix: propagate host color scheme to pane apps (#2214)
refs #714
Diffstat (limited to 'src/workspace')
-rw-r--r--src/workspace/tab.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/workspace/tab.rs b/src/workspace/tab.rs
index 55fa4c96..5cc35b68 100644
--- a/src/workspace/tab.rs
+++ b/src/workspace/tab.rs
@@ -52,6 +52,8 @@ pub struct Tab {
}
impl Tab {
+ // Tab construction threads pane runtime geometry, host context, and render hooks.
+ #[allow(clippy::too_many_arguments)]
pub fn new(
number: usize,
initial_cwd: PathBuf,
@@ -59,6 +61,7 @@ impl Tab {
cols: u16,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
shell_config: crate::pane::PaneShellConfig<'_>,
launch_env: &PaneLaunchEnv,
events: mpsc::Sender<AppEvent>,
@@ -72,6 +75,7 @@ impl Tab {
cols,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
shell_config,
launch_env,
events,
@@ -81,6 +85,8 @@ impl Tab {
)
}
+ // Command tab construction mirrors the shell tab runtime arguments.
+ #[allow(clippy::too_many_arguments)]
pub fn new_argv_command(
number: usize,
initial_cwd: PathBuf,
@@ -89,6 +95,7 @@ impl Tab {
argv: &[String],
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
launch_env: &PaneLaunchEnv,
events: mpsc::Sender<AppEvent>,
render_notify: Arc<Notify>,
@@ -101,6 +108,7 @@ impl Tab {
cols,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
crate::pane::PaneShellConfig::new("", crate::config::ShellModeConfig::NonLogin),
launch_env,
events,
@@ -118,6 +126,7 @@ impl Tab {
cols: u16,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
shell_config: crate::pane::PaneShellConfig<'_>,
launch_env: &PaneLaunchEnv,
events: mpsc::Sender<AppEvent>,
@@ -137,6 +146,7 @@ impl Tab {
crate::pane::AgentDetection::Enabled,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
events.clone(),
render_notify.clone(),
render_dirty.clone(),
@@ -149,6 +159,7 @@ impl Tab {
initial_cwd.clone(),
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
shell_config,
launch_env,
events.clone(),
@@ -202,6 +213,7 @@ impl Tab {
cwd: Option<PathBuf>,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
shell_config: crate::pane::PaneShellConfig<'_>,
launch_env: &PaneLaunchEnv,
) -> std::io::Result<NewPane> {
@@ -213,6 +225,7 @@ impl Tab {
cwd,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
shell_config,
launch_env,
None,
@@ -228,6 +241,7 @@ impl Tab {
cwd: Option<PathBuf>,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
shell_config: crate::pane::PaneShellConfig<'_>,
launch_env: &PaneLaunchEnv,
) -> std::io::Result<NewPane> {
@@ -239,6 +253,7 @@ impl Tab {
cwd,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
shell_config,
launch_env,
None,
@@ -255,6 +270,7 @@ impl Tab {
launch_env: &PaneLaunchEnv,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
) -> std::io::Result<NewPane> {
self.split_focused_with_runtime(
direction,
@@ -264,6 +280,7 @@ impl Tab {
cwd,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
crate::pane::PaneShellConfig::new("", crate::config::ShellModeConfig::NonLogin),
launch_env,
Some(SplitCommand::Shell {
@@ -283,6 +300,7 @@ impl Tab {
launch_env: &PaneLaunchEnv,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
) -> std::io::Result<NewPane> {
self.split_focused_with_runtime(
direction,
@@ -292,6 +310,7 @@ impl Tab {
cwd,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
crate::pane::PaneShellConfig::new("", crate::config::ShellModeConfig::NonLogin),
launch_env,
Some(SplitCommand::Argv { argv, launch_env }),
@@ -309,6 +328,7 @@ impl Tab {
launch_env: &PaneLaunchEnv,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
) -> std::io::Result<NewPane> {
self.split_focused_with_runtime(
direction,
@@ -318,12 +338,15 @@ impl Tab {
cwd,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
crate::pane::PaneShellConfig::new("", crate::config::ShellModeConfig::NonLogin),
launch_env,
Some(SplitCommand::Argv { argv, launch_env }),
)
}
+ // Split construction threads geometry, host context, launch policy, and command state.
+ #[allow(clippy::too_many_arguments)]
fn split_focused_with_runtime(
&mut self,
direction: Direction,
@@ -333,6 +356,7 @@ impl Tab {
cwd: Option<PathBuf>,
scrollback_limit_bytes: usize,
host_terminal_theme: crate::terminal_theme::TerminalTheme,
+ host_terminal_appearance: Option<crate::terminal_theme::HostAppearance>,
shell_config: crate::pane::PaneShellConfig<'_>,
launch_env: &PaneLaunchEnv,
command: Option<SplitCommand<'_>>,
@@ -363,6 +387,7 @@ impl Tab {
crate::pane::AgentDetection::Enabled,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
self.events.clone(),
self.render_notify.clone(),
self.render_dirty.clone(),
@@ -377,6 +402,7 @@ impl Tab {
crate::pane::AgentDetection::Enabled,
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
self.events.clone(),
self.render_notify.clone(),
self.render_dirty.clone(),
@@ -388,6 +414,7 @@ impl Tab {
actual_cwd.clone(),
scrollback_limit_bytes,
host_terminal_theme,
+ host_terminal_appearance,
shell_config,
launch_env,
self.events.clone(),