summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrandur <brandur@mutelight.org>2017-02-05 18:32:43 -0800
committerJoe Wilm <jwilm@users.noreply.github.com>2017-02-05 18:53:51 -0800
commit12cd04fea2d49f712226b75922bc2c035729c201 (patch)
treef83f7083233331758134b95bae933a1c9772c637 /src
parent82c9235bb194b7f535ed46516d793a96a0d30bf4 (diff)
Add "Quit" action to allow exit on a Cmd-W or Cmd-Q
Adds a new "Quit" action and binds it to Cmd-W and Cmd-Q on Mac OS in an attempt to make Alacritty feel more like a "normal" citizen of the operating system. Alternatives like Ctrl-D are okay, but I usually want to leave my shells nested within Tmux open even if I exit my terminal. It's also largely selfish: I've built up muscle memory over the years that takes my fingers to Cmd-Q first (and I suspect I'm not the only one). The implementation for an exit is copied from `event.rs` which notably is already tagged with a FIXME. It seems that `tty.rs` contains a `process_should_exit` system to help handle a `SIGCHLD`, and it's possible that these two exit implementations should be merged together. I could probably tackle that as my next project. As mentioned in #218, Alacritty can't really spawn other windows right now, so I've tied in Cmd-W as simply another synonym for quitting until that's implemented. Fixes #218.
Diffstat (limited to 'src')
-rw-r--r--src/config.rs3
-rw-r--r--src/input.rs7
2 files changed, 9 insertions, 1 deletions
diff --git a/src/config.rs b/src/config.rs
index 05147631..d08b801b 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -352,7 +352,7 @@ impl de::Deserialize for ActionWrapper {
type Value = ActionWrapper;
fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.write_str("Paste, Copy, or PasteSelection")
+ f.write_str("Paste, Copy, PasteSelection, or Quit")
}
fn visit_str<E>(self, value: &str) -> ::std::result::Result<ActionWrapper, E>
@@ -362,6 +362,7 @@ impl de::Deserialize for ActionWrapper {
"Paste" => Action::Paste,
"Copy" => Action::Copy,
"PasteSelection" => Action::PasteSelection,
+ "Quit" => Action::Quit,
_ => return Err(E::invalid_value(Unexpected::Str(value), &self)),
}))
}
diff --git a/src/input.rs b/src/input.rs
index 491a91cc..92126387 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -137,6 +137,9 @@ pub enum Action {
/// Paste contents of selection buffer
PasteSelection,
+
+ /// Quits Alacritty.
+ Quit,
}
impl Action {
@@ -165,6 +168,10 @@ impl Action {
warn!("Error loading data from clipboard. {}", Red(err));
});
},
+ Action::Quit => {
+ // FIXME should do a more graceful shutdown
+ ::std::process::exit(0);
+ },
}
}