Remove default shell breadcrumbs on windows (#34198)
Release Notes: - N/A
This commit is contained in:
parent
36c325bc60
commit
f8f827583d
1 changed files with 58 additions and 27 deletions
|
@ -371,35 +371,48 @@ impl TerminalBuilder {
|
||||||
release_channel::AppVersion::global(cx).to_string(),
|
release_channel::AppVersion::global(cx).to_string(),
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut terminal_title_override = None;
|
#[derive(Default)]
|
||||||
|
struct ShellParams {
|
||||||
|
program: String,
|
||||||
|
args: Option<Vec<String>>,
|
||||||
|
title_override: Option<SharedString>,
|
||||||
|
}
|
||||||
|
|
||||||
|
let shell_params = match shell.clone() {
|
||||||
|
Shell::System => {
|
||||||
|
#[cfg(target_os = "windows")]
|
||||||
|
{
|
||||||
|
Some(ShellParams {
|
||||||
|
program: util::get_windows_system_shell(),
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
#[cfg(not(target_os = "windows"))]
|
||||||
|
None
|
||||||
|
}
|
||||||
|
Shell::Program(program) => Some(ShellParams {
|
||||||
|
program,
|
||||||
|
..Default::default()
|
||||||
|
}),
|
||||||
|
Shell::WithArguments {
|
||||||
|
program,
|
||||||
|
args,
|
||||||
|
title_override,
|
||||||
|
} => Some(ShellParams {
|
||||||
|
program,
|
||||||
|
args: Some(args),
|
||||||
|
title_override,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
let terminal_title_override = shell_params.as_ref().and_then(|e| e.title_override.clone());
|
||||||
|
|
||||||
|
#[cfg(windows)]
|
||||||
|
let shell_program = shell_params.as_ref().map(|params| params.program.clone());
|
||||||
|
|
||||||
let pty_options = {
|
let pty_options = {
|
||||||
let alac_shell = match shell.clone() {
|
let alac_shell = shell_params.map(|params| {
|
||||||
Shell::System => {
|
alacritty_terminal::tty::Shell::new(params.program, params.args.unwrap_or_default())
|
||||||
#[cfg(target_os = "windows")]
|
});
|
||||||
{
|
|
||||||
Some(alacritty_terminal::tty::Shell::new(
|
|
||||||
util::get_windows_system_shell(),
|
|
||||||
Vec::new(),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
#[cfg(not(target_os = "windows"))]
|
|
||||||
{
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Shell::Program(program) => {
|
|
||||||
Some(alacritty_terminal::tty::Shell::new(program, Vec::new()))
|
|
||||||
}
|
|
||||||
Shell::WithArguments {
|
|
||||||
program,
|
|
||||||
args,
|
|
||||||
title_override,
|
|
||||||
} => {
|
|
||||||
terminal_title_override = title_override;
|
|
||||||
Some(alacritty_terminal::tty::Shell::new(program, args))
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
alacritty_terminal::tty::Options {
|
alacritty_terminal::tty::Options {
|
||||||
shell: alac_shell,
|
shell: alac_shell,
|
||||||
|
@ -503,6 +516,8 @@ impl TerminalBuilder {
|
||||||
python_venv_directory,
|
python_venv_directory,
|
||||||
last_mouse_move_time: Instant::now(),
|
last_mouse_move_time: Instant::now(),
|
||||||
last_hyperlink_search_position: None,
|
last_hyperlink_search_position: None,
|
||||||
|
#[cfg(windows)]
|
||||||
|
shell_program,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(TerminalBuilder {
|
Ok(TerminalBuilder {
|
||||||
|
@ -663,6 +678,8 @@ pub struct Terminal {
|
||||||
is_ssh_terminal: bool,
|
is_ssh_terminal: bool,
|
||||||
last_mouse_move_time: Instant,
|
last_mouse_move_time: Instant,
|
||||||
last_hyperlink_search_position: Option<Point<Pixels>>,
|
last_hyperlink_search_position: Option<Point<Pixels>>,
|
||||||
|
#[cfg(windows)]
|
||||||
|
shell_program: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct TaskState {
|
pub struct TaskState {
|
||||||
|
@ -708,6 +725,20 @@ impl Terminal {
|
||||||
fn process_event(&mut self, event: AlacTermEvent, cx: &mut Context<Self>) {
|
fn process_event(&mut self, event: AlacTermEvent, cx: &mut Context<Self>) {
|
||||||
match event {
|
match event {
|
||||||
AlacTermEvent::Title(title) => {
|
AlacTermEvent::Title(title) => {
|
||||||
|
// ignore default shell program title change as windows always sends those events
|
||||||
|
// and it would end up showing the shell executable path in breadcrumbs
|
||||||
|
#[cfg(windows)]
|
||||||
|
{
|
||||||
|
if self
|
||||||
|
.shell_program
|
||||||
|
.as_ref()
|
||||||
|
.map(|e| *e == title)
|
||||||
|
.unwrap_or(false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.breadcrumb_text = title;
|
self.breadcrumb_text = title;
|
||||||
cx.emit(Event::BreadcrumbsChanged);
|
cx.emit(Event::BreadcrumbsChanged);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue