diff options
Diffstat (limited to 'src/bin/bat/main.rs')
-rw-r--r-- | src/bin/bat/main.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs index f48abdc1..d877bb9b 100644 --- a/src/bin/bat/main.rs +++ b/src/bin/bat/main.rs @@ -229,9 +229,33 @@ pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result< Ok(()) } +fn set_terminal_title_to(new_terminal_title: String) { + let osc_command_for_setting_terminal_title = "\x1b]0;"; + let osc_end_command = "\x07"; + print!( + "{}{}{}", + osc_command_for_setting_terminal_title, new_terminal_title, osc_end_command + ); + io::stdout().flush().unwrap(); +} + +fn get_new_terminal_title(inputs: &Vec<Input>) -> String { + let mut new_terminal_title = "bat: ".to_string(); + for (index, input) in inputs.iter().enumerate() { + new_terminal_title += input.description().title(); + if index < inputs.len() - 1 { + new_terminal_title += ", "; + } + } + new_terminal_title +} + fn run_controller(inputs: Vec<Input>, config: &Config, cache_dir: &Path) -> Result<bool> { let assets = assets_from_cache_or_binary(config.use_custom_assets, cache_dir)?; let controller = Controller::new(config, &assets); + if config.paging_mode != PagingMode::Never && config.set_terminal_title { + set_terminal_title_to(get_new_terminal_title(&inputs)); + } controller.run(inputs, None) } |