diff options
author | Josh Leverette <josh.leverette@utiliflex.com> | 2017-01-06 15:02:13 -0500 |
---|---|---|
committer | Josh Leverette <josh.leverette@utiliflex.com> | 2017-01-06 15:02:13 -0500 |
commit | 4fad82bc267141532460d6fc15b1ee6c1acd9589 (patch) | |
tree | 74edf44a07b6533cc72dbd8ea38ba4ea799a6294 | |
parent | 2dd5f0f45d403fee11215eb515eff41168198e13 (diff) | |
parent | 8d3f5f4e179b6fe55617dc72fe60fa1bdfd9b014 (diff) | |
download | r-alacritty-4fad82bc267141532460d6fc15b1ee6c1acd9589.tar.gz r-alacritty-4fad82bc267141532460d6fc15b1ee6c1acd9589.tar.bz2 r-alacritty-4fad82bc267141532460d6fc15b1ee6c1acd9589.zip |
Merge branch 'master' of github.com:coder543/alacritty
-rw-r--r-- | alacritty.yml | 4 | ||||
-rw-r--r-- | alacritty_macos.yml | 194 | ||||
-rw-r--r-- | src/config.rs | 14 | ||||
-rw-r--r-- | src/event.rs | 4 | ||||
-rw-r--r-- | src/main.rs | 8 |
5 files changed, 217 insertions, 7 deletions
diff --git a/alacritty.yml b/alacritty.yml index be0997ec..0d907ea0 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -37,8 +37,8 @@ font: # Offset is the extra space around each character. offset.y can be thought of # as modifying the linespacing, and offset.x as modifying the letter spacing. offset: - x: 0.0 - y: 0.0 + x: 2.0 + y: -7.0 # Should display the render timer render_timer: false diff --git a/alacritty_macos.yml b/alacritty_macos.yml new file mode 100644 index 00000000..25dbb1b2 --- /dev/null +++ b/alacritty_macos.yml @@ -0,0 +1,194 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator + +# The FreeType rasterizer needs to know the device DPI for best results +# (changes require restart) +dpi: + x: 96.0 + y: 96.0 + +# Display tabs using this many cells (changes require restart) +tabspaces: 8 + +# When true, bold text is drawn using the bright variant of colors. +draw_bold_text_with_bright_colors: true + +# Font configuration (changes require restart) +font: + # The normal (roman) font face to use. + normal: + family: Menlo + # Style can be specified to pick a specific face. + # style: Regular + + # The bold font face + bold: + family: Menlo + # Style can be specified to pick a specific face. + # style: Bold + + # The italic font face + italic: + family: Menlo + # Style can be specified to pick a specific face. + # style: Italic + + # Point size of the font + size: 12.0 + # Offset is the extra space around each character. offset.y can be thought of + # as modifying the linespacing, and offset.x as modifying the letter spacing. + offset: + x: 0.0 + y: 0.0 + +# Should display the render timer +render_timer: false + +# Colors (Tomorrow Night Bright) +colors: + # Default colors + primary: + background: '0x000000' + foreground: '0xeaeaea' + + # Normal colors + normal: + black: '0x000000' + red: '0xd54e53' + green: '0xb9ca4a' + yellow: '0xe6c547' + blue: '0x7aa6da' + magenta: '0xc397d8' + cyan: '0x70c0ba' + white: '0x424242' + + # Bright colors + bright: + black: '0x666666' + red: '0xff3334' + green: '0x9ec400' + yellow: '0xe7c547' + blue: '0x7aa6da' + magenta: '0xb77ee0' + cyan: '0x54ced6' + white: '0x2a2a2a' + +# Colors (Solarized Dark) +# colors: +# # Default colors +# primary: +# background: '0x002b36' +# foreground: '0x839496' +# +# # Normal colors +# normal: +# black: '0x073642' +# red: '0xdc322f' +# green: '0x859900' +# yellow: '0xb58900' +# blue: '0x268bd2' +# magenta: '0xd33682' +# cyan: '0x2aa198' +# white: '0xeee8d5' +# +# # Bright colors +# bright: +# black: '0x002b36' +# red: '0xcb4b16' +# green: '0x586e75' +# yellow: '0x657b83' +# blue: '0x839496' +# magenta: '0x6c71c4' +# cyan: '0x93a1a1' +# white: '0xfdf6e3' + +# Key bindings +# +# Each binding is defined as an object with some properties. Most of the +# properties are optional. All of the alphabetical keys should have a letter for +# the `key` value such as `V`. Function keys are probably what you would expect +# as well (F1, F2, ..). The number keys above the main keyboard are encoded as +# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`, +# etc. These all match the glutin::VirtualKeyCode variants. +# +# Possible values for `mods` +# `Command`, `Super` refer to the super/command/windows key +# `Control` for the control key +# `Shift` for the Shift key +# `Alt` and `Option` refer to alt/option +# +# mods may be combined with a `|`. For example, requiring control and shift +# looks like: +# +# mods: Control|Shift +# +# The parser is currently quite sensitive to whitespace and capitalization - +# capitalization must match exactly, and piped items must not have whitespace +# around them. +# +# Either an `action` or `chars` field must be present. `chars` writes the +# specified string every time that binding is activated. These should generally +# be escape sequences, but they can be configured to send arbitrary strings of +# bytes. Possible values of `action` include `Paste` and `PasteSelection`. +key_bindings: + - { key: V, mods: Command, action: Paste } + - { key: C, mods: Command, action: Copy } + - { key: Home, chars: "\x1b[H", mode: ~AppCursor } + - { key: Home, chars: "\x1b[1~", mode: AppCursor } + - { key: End, chars: "\x1b[F", mode: ~AppCursor } + - { key: End, chars: "\x1b[4~", mode: AppCursor } + - { key: PageUp, chars: "\x1b[5~" } + - { key: PageDown, chars: "\x1b[6~" } + - { key: Left, mods: Shift, chars: "\x1b[1;2D" } + - { key: Left, mods: Control, chars: "\x1b[1;5D" } + - { key: Left, mods: Alt, chars: "\x1b[1;3D" } + - { key: Left, chars: "\x1b[D", mode: ~AppCursor } + - { key: Left, chars: "\x1bOD", mode: AppCursor } + - { key: Right, mods: Shift, chars: "\x1b[1;2C" } + - { key: Right, mods: Control, chars: "\x1b[1;5C" } + - { key: Right, mods: Alt, chars: "\x1b[1;3C" } + - { key: Right, chars: "\x1b[C", mode: ~AppCursor } + - { key: Right, chars: "\x1bOC", mode: AppCursor } + - { key: Up, mods: Shift, chars: "\x1b[1;2A" } + - { key: Up, mods: Control, chars: "\x1b[1;5A" } + - { key: Up, mods: Alt, chars: "\x1b[1;3A" } + - { key: Up, chars: "\x1b[A", mode: ~AppCursor } + - { key: Up, chars: "\x1bOA", mode: AppCursor } + - { key: Down, mods: Shift, chars: "\x1b[1;2B" } + - { key: Down, mods: Control, chars: "\x1b[1;5B" } + - { key: Down, mods: Alt, chars: "\x1b[1;3B" } + - { key: Down, chars: "\x1b[B", mode: ~AppCursor } + - { key: Down, chars: "\x1bOB", mode: AppCursor } + - { key: F1, chars: "\x1bOP" } + - { key: F2, chars: "\x1bOQ" } + - { key: F3, chars: "\x1bOR" } + - { key: F4, chars: "\x1bOS" } + - { key: F5, chars: "\x1b[15~" } + - { key: F6, chars: "\x1b[17~" } + - { key: F7, chars: "\x1b[18~" } + - { key: F8, chars: "\x1b[19~" } + - { key: F9, chars: "\x1b[20~" } + - { key: F10, chars: "\x1b[21~" } + - { key: F11, chars: "\x1b[23~" } + - { key: F12, chars: "\x1b[24~" } + - { key: Back, chars: "\x7f" } + - { key: Delete, chars: "\x1b[3~", mode: AppKeypad } + - { key: Delete, chars: "\x1b[P", mode: ~AppKeypad } + +# Mouse bindings +# +# Currently doesn't support modifiers. Both the `mouse` and `action` fields must +# be specified. +# +# Values for `mouse`: +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# Values for `action`: +# - Paste +# - PasteSelection +# - Copy (TODO) +mouse_bindings: + - { mouse: Middle, action: PasteSelection } + diff --git a/src/config.rs b/src/config.rs index 5daa4455..36f0c363 100644 --- a/src/config.rs +++ b/src/config.rs @@ -6,11 +6,12 @@ use std::env; use std::fmt; use std::fs; -use std::io::{self, Read}; +use std::io::{self, Read, Write}; use std::path::{Path, PathBuf}; use std::str::FromStr; use std::sync::mpsc; use std::ops::{Index, IndexMut}; +use std::fs::File; use ::Rgb; use font::Size; @@ -199,7 +200,10 @@ pub struct Config { config_path: Option<PathBuf>, } +#[cfg(not(target_os="macos"))] static DEFAULT_ALACRITTY_CONFIG: &'static str = include_str!("../alacritty.yml"); +#[cfg(target_os="macos")] +static DEFAULT_ALACRITTY_CONFIG: &'static str = include_str!("../alacritty_macos.yml"); fn default_config() -> Config { serde_yaml::from_str(DEFAULT_ALACRITTY_CONFIG) @@ -821,6 +825,14 @@ impl Config { Config::load_from(path) } + pub fn write_defaults() -> io::Result<PathBuf> { + let path = ::xdg::BaseDirectories::new() + .map_err(|err| io::Error::new(io::ErrorKind::NotFound, ::std::error::Error::description(&err))) + .and_then(|p| p.place_config_file("alacritty.yml"))?; + File::create(&path)?.write_all(DEFAULT_ALACRITTY_CONFIG.as_bytes())?; + Ok(path) + } + /// Get list of colors /// /// The ordering returned here is expected by the terminal. Colors are simply indexed in this diff --git a/src/event.rs b/src/event.rs index 88f28952..66abbaa2 100644 --- a/src/event.rs +++ b/src/event.rs @@ -129,8 +129,8 @@ impl<N: Notify> Processor<N> { .expect("write size.json"); } - // FIXME - panic!("window closed"); + // FIXME should do a more graceful shutdown + ::std::process::exit(0); }, glutin::Event::Resized(w, h) => { resize_tx.send((w, h)).expect("send new size"); diff --git a/src/main.rs b/src/main.rs index 3328ab59..d53daf0f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,8 +38,12 @@ fn main() { match err { // Use default config when not found config::Error::NotFound => { - err_println!("Config file not found; using defaults"); - Config::default() + match Config::write_defaults() { + Ok(path) => err_println!("Config file not found; write defaults config to {:?}", path), + Err(err) => err_println!("Write defaults config failure: {}", err) + } + + Config::load().unwrap() }, // If there's a problem with the config file, print an error |