diff options
author | Brandur <brandur@mutelight.org> | 2017-02-05 18:32:43 -0800 |
---|---|---|
committer | Joe Wilm <jwilm@users.noreply.github.com> | 2017-02-05 18:53:51 -0800 |
commit | 12cd04fea2d49f712226b75922bc2c035729c201 (patch) | |
tree | f83f7083233331758134b95bae933a1c9772c637 | |
parent | 82c9235bb194b7f535ed46516d793a96a0d30bf4 (diff) | |
download | alacritty-12cd04fea2d49f712226b75922bc2c035729c201.tar.gz alacritty-12cd04fea2d49f712226b75922bc2c035729c201.zip |
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.
-rw-r--r-- | alacritty.yml | 2 | ||||
-rw-r--r-- | alacritty_macos.yml | 2 | ||||
-rw-r--r-- | src/config.rs | 3 | ||||
-rw-r--r-- | src/input.rs | 7 |
4 files changed, 13 insertions, 1 deletions
diff --git a/alacritty.yml b/alacritty.yml index 96fe6e24..83b120f2 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -144,6 +144,8 @@ colors: key_bindings: - { key: V, mods: Command, action: Paste } - { key: C, mods: Command, action: Copy } + - { key: Q, mods: Command, action: Quit } + - { key: W, mods: Command, action: Quit } - { key: Home, chars: "\x1b[H", mode: ~AppCursor } - { key: Home, chars: "\x1b[1~", mode: AppCursor } - { key: End, chars: "\x1b[F", mode: ~AppCursor } diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 386e4590..a3d8df86 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -144,6 +144,8 @@ colors: key_bindings: - { key: V, mods: Command, action: Paste } - { key: C, mods: Command, action: Copy } + - { key: Q, mods: Command, action: Quit } + - { key: W, mods: Command, action: Quit } - { key: Home, chars: "\x1b[H", mode: ~AppCursor } - { key: Home, chars: "\x1b[1~", mode: AppCursor } - { key: End, chars: "\x1b[F", mode: ~AppCursor } 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); + }, } } |