aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src
diff options
context:
space:
mode:
authorDustin <dustin1114@gmail.com>2019-10-14 13:50:58 -0400
committerChristian Duerr <contact@christianduerr.com>2019-10-14 19:50:58 +0200
commit401c2aab964b60e8c3b072e5098ba8e366d04944 (patch)
tree8b8fb2f11a93ebb3e59dedb41e01a89f30791455 /alacritty/src
parent3475e449870b382cda4ea6d48f980577cd8c929e (diff)
downloadr-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.tar.gz
r-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.tar.bz2
r-alacritty-401c2aab964b60e8c3b072e5098ba8e366d04944.zip
Add support for title stack escape sequences
This commit adds the concept of a "title stack" to the terminal. Some programs (e.g. vim) send control sequences `CSI 22 ; 0` (push title) and `CSI 23 ; 0` (pop title). The title stack is just a history of previous titles. Applications can push the current title onto the stack, and pop it back off (setting the window title in the process). Fixes #2840.
Diffstat (limited to 'alacritty/src')
-rw-r--r--alacritty/src/cli.rs12
-rw-r--r--alacritty/src/window.rs6
2 files changed, 10 insertions, 8 deletions
diff --git a/alacritty/src/cli.rs b/alacritty/src/cli.rs
index 99387a61..b0e3cc94 100644
--- a/alacritty/src/cli.rs
+++ b/alacritty/src/cli.rs
@@ -266,9 +266,12 @@ impl Options {
config.window.dimensions = self.dimensions.unwrap_or(config.window.dimensions);
config.window.position = self.position.or(config.window.position);
- config.window.title = self.title.or(config.window.title);
config.window.embed = self.embed.and_then(|embed| embed.parse().ok());
+ if let Some(title) = self.title {
+ config.window.title = title.clone();
+ }
+
if let Some(class) = self.class {
let parts: Vec<_> = class.split(',').collect();
config.window.class.instance = parts[0].into();
@@ -277,7 +280,7 @@ impl Options {
}
}
- config.set_dynamic_title(config.dynamic_title() && config.window.title.is_none());
+ config.set_dynamic_title(config.dynamic_title() && config.window.title == DEFAULT_NAME);
config.debug.print_events = self.print_events || config.debug.print_events;
config.debug.log_level = max(config.debug.log_level, self.log_level);
@@ -298,7 +301,8 @@ mod test {
#[test]
fn dynamic_title_ignoring_options_by_default() {
- let config = Config::default();
+ let mut config = Config::default();
+ config.window.title = "Alacritty".to_string();
let old_dynamic_title = config.dynamic_title();
let config = Options::default().into_config(config);
@@ -321,7 +325,7 @@ mod test {
fn dynamic_title_overridden_by_config() {
let mut config = Config::default();
- config.window.title = Some("foo".to_owned());
+ config.window.title = "foo".to_owned();
let config = Options::default().into_config(config);
assert!(!config.dynamic_title());
diff --git a/alacritty/src/window.rs b/alacritty/src/window.rs
index c783dc69..0394296e 100644
--- a/alacritty/src/window.rs
+++ b/alacritty/src/window.rs
@@ -31,7 +31,7 @@ use image::ImageFormat;
#[cfg(not(any(target_os = "macos", windows)))]
use x11_dl::xlib::{Display as XDisplay, PropModeReplace, XErrorEvent, Xlib};
-use alacritty_terminal::config::{Decorations, StartupMode, WindowConfig, DEFAULT_NAME};
+use alacritty_terminal::config::{Decorations, StartupMode, WindowConfig};
use alacritty_terminal::event::Event;
use alacritty_terminal::gl;
use alacritty_terminal::term::{SizeInfo, Term};
@@ -146,9 +146,7 @@ impl Window {
config: &Config,
logical: Option<LogicalSize>,
) -> Result<Window> {
- let title = config.window.title.as_ref().map_or(DEFAULT_NAME, |t| t);
-
- let window_builder = Window::get_platform_window(title, &config.window);
+ let window_builder = Window::get_platform_window(&config.window.title, &config.window);
let windowed_context =
create_gl_window(window_builder.clone(), &event_loop, false, logical)
.or_else(|_| create_gl_window(window_builder, &event_loop, true, logical))?;