From 1f243468dc96a68cac68e7ca0485a9f9b130db75 Mon Sep 17 00:00:00 2001 From: Christian Rebischke Date: Mon, 17 Sep 2018 21:09:39 +0200 Subject: [PATCH 01/23] Add mention of official arch linux package Since Alacritty does not require the AUR anymore, its mention has been removed from the README. To make future changes simpler, the README has also been reworded so less changes are required for adding new operating systems. --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 614a4b44..b1fb92f5 100644 --- a/README.md +++ b/README.md @@ -36,18 +36,17 @@ built from source. ## Installation -Instructions are provided for macOS and many Linux variants to compile Alacritty -from source. With the exception of Arch (which has a package in the AUR), Void Linux (in main repository) and -[NixOS](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/alacritty/default.nix), please first read the -[prerequisites](#prerequisites) section, then find the section for your OS, and -finally go to [building](#building) and [configuration](#configuration). +Some operating systems already provide binaries for Alacritty, for everyone else there are +instructions to compile Alacritty from source. + +For the manual installation, please first read the [prerequisites](#prerequisites) section, +then find the instructions for your OS, and finally go through the [building](#building) +and [configuration](#configuration) steps. ### Arch Linux ```sh -git clone https://aur.archlinux.org/alacritty-git.git -cd alacritty-git -makepkg -isr +pacman -S alacritty ``` ### Debian/Ubuntu From 7a8a002da6a7c5b17edf5dc8cc8e3f9e089632fc Mon Sep 17 00:00:00 2001 From: nolanl <720974+nolanl@users.noreply.github.com> Date: Mon, 17 Sep 2018 13:00:42 -0700 Subject: [PATCH 02/23] Acknowledge first click on unfocused windows with bsd/linux Fixes a regression on non-macOS platforms caused by the fix for issue #1291. The fix is to follow platform norms for mouse click behavior on unfocused terminals. On macOS, the first click (that gives the window focus) is swallowed, and has no effect on the terminal. On all other platforms, the first click is passed through to the terminal. --- CHANGELOG.md | 4 ++++ src/event.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 031a3b90..feb115e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- First click on unfocused Alacritty windows is no longer ignored on platforms other than macOS + ## Version 0.2.0 ### Added diff --git a/src/event.rs b/src/event.rs index 589f1a42..ec17034f 100644 --- a/src/event.rs +++ b/src/event.rs @@ -341,7 +341,7 @@ impl Processor { processor.received_char(c); }, MouseInput { state, button, modifiers, .. } => { - if *window_is_focused { + if !cfg!(target_os = "macos") || *window_is_focused { *hide_cursor = false; processor.mouse_input(state, button, modifiers); processor.ctx.terminal.dirty = true; From 35ea0cded20aac5fa40859a22b95979d15018c51 Mon Sep 17 00:00:00 2001 From: David Peter Date: Mon, 17 Sep 2018 22:32:08 +0200 Subject: [PATCH 03/23] Set COLORTERM variable to advertise 24-bit support Set `COLORTERM` to `truecolor` in order for applications to be able to detect that alacritty supports 24-bit colors. See https://gist.github.com/XVilka/8346728 for more details. Closes #1526. --- CHANGELOG.md | 4 ++++ src/tty.rs | 1 + 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index feb115e9..8c6bd00f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Set the environment variable `COLORTERM="truecolor"` to advertise 24-bit color support + ### Changed - First click on unfocused Alacritty windows is no longer ignored on platforms other than macOS diff --git a/src/tty.rs b/src/tty.rs index 4da11c0e..9f6a2e64 100644 --- a/src/tty.rs +++ b/src/tty.rs @@ -211,6 +211,7 @@ pub fn new(config: &Config, options: &Options, size: &T, window_id builder.env("SHELL", shell.program()); builder.env("HOME", pw.dir); builder.env("TERM", "xterm-256color"); // default term until we can supply our own + builder.env("COLORTERM", "truecolor"); // advertise 24-bit support if let Some(window_id) = window_id { builder.env("WINDOWID", format!("{}", window_id)); } From e2c1e56b257f1a16f8e4b620b3abc328cd551784 Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Mon, 17 Sep 2018 23:37:00 +0200 Subject: [PATCH 04/23] Give zsh completion file the correct name when installing with `cargo deb --install` The zsh completion name for the deb installer has been corrected. The installation instructions for the zsh completions have also been updated to make it possible to install them without root permissios. --- Cargo.toml | 2 +- README.md | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bba25503..46f93e08 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,6 +77,6 @@ assets = [ ["alacritty.desktop", "usr/share/applications/", "644"], ["alacritty-completions.bash", "usr/share/bash-completion/completions/alacritty", "644"], ["alacritty-completions.fish", "usr/share/fish/completions/alacritty", "644"], - ["alacritty-completions.zsh", "usr/share/zsh/functions/Completion/alacritty", "644"], + ["alacritty-completions.zsh", "usr/share/zsh/vendor-completions/_alacritty", "644"], ["alacritty.info", "usr/share/terminfo/a/alacritty", "644"], ] diff --git a/README.md b/README.md index b1fb92f5..33bca532 100644 --- a/README.md +++ b/README.md @@ -295,10 +295,19 @@ To get automatic completions for alacritty's flags and arguments you can install ### Zsh -To install the completions for zsh, run +To install the completions for zsh, you can place the `alacritty-completions.zsh` as `_alacritty` in any directory referenced by `$fpath`. +If you do not already have such a directory registered through your `~/.zshrc`, you can add one like this: + +```sh +mkdir -p ${ZDOTDIR:-~}/.zsh_functions +echo 'fpath+=${ZDOTDIR:-~}/.zsh_functions' >> ${ZDOTDIR:-~}/.zshrc ``` -sudo cp alacritty-completions.zsh /usr/share/zsh/functions/Completion/X/_alacritty + +Then copy the completion file to this directory: + +```sh +cp alacritty-completions.zsh ${ZDOTDIR:-~}/.zsh_functions/_alacritty ``` ### Bash From a10403b7c79b488ae9bc6efa85bd839ce6aecdd6 Mon Sep 17 00:00:00 2001 From: Nathan West Date: Mon, 17 Sep 2018 14:44:29 -0700 Subject: [PATCH 05/23] Fix fish completion name in deb installer --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 46f93e08..8adf3ef3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,7 +76,7 @@ assets = [ ["target/release/alacritty", "usr/local/bin/", "755"], ["alacritty.desktop", "usr/share/applications/", "644"], ["alacritty-completions.bash", "usr/share/bash-completion/completions/alacritty", "644"], - ["alacritty-completions.fish", "usr/share/fish/completions/alacritty", "644"], + ["alacritty-completions.fish", "usr/share/fish/completions/alacritty.fish", "644"], ["alacritty-completions.zsh", "usr/share/zsh/vendor-completions/_alacritty", "644"], ["alacritty.info", "usr/share/terminfo/a/alacritty", "644"], ] From 55e675a3d89922d9d7966cd7bccf0da9d9eff654 Mon Sep 17 00:00:00 2001 From: VoidNoire <18732253+VoidNoire@users.noreply.github.com> Date: Mon, 17 Sep 2018 22:01:54 +0000 Subject: [PATCH 06/23] Add `fontconfig-devel` dependency for building on Void Linux --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33bca532..d7d299e9 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ On [Void Linux](https://voidlinux.eu), install following packages before compiling Alacritty: ```sh -xbps-install cmake freetype-devel freetype expat-devel fontconfig xclip +xbps-install cmake freetype-devel freetype expat-devel fontconfig-devel fontconfig xclip ``` #### FreeBSD From 63a40df5203178bbea1ff1a6988e6d30b6f992f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Tue, 18 Sep 2018 01:34:56 +0200 Subject: [PATCH 07/23] Fix style issues --- font/src/darwin/mod.rs | 2 +- font/src/ft/fc/font_set.rs | 2 +- src/grid/row.rs | 19 ++++++++++++++++++- src/grid/storage.rs | 4 ++-- src/locale.rs | 2 +- src/term/mod.rs | 2 +- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/font/src/darwin/mod.rs b/font/src/darwin/mod.rs index 2f9d5fe0..bbdb5662 100644 --- a/font/src/darwin/mod.rs +++ b/font/src/darwin/mod.rs @@ -68,7 +68,7 @@ impl Descriptor { font_name: desc.font_name(), style_name: desc.style_name(), display_name: desc.display_name(), - font_path: desc.font_path().unwrap_or_else(||{"".to_owned()}), + font_path: desc.font_path().unwrap_or_else(String::new), ct_descriptor: desc, } } diff --git a/font/src/ft/fc/font_set.rs b/font/src/ft/fc/font_set.rs index a0c4eee0..6b63f439 100644 --- a/font/src/ft/fc/font_set.rs +++ b/font/src/ft/fc/font_set.rs @@ -99,7 +99,7 @@ impl<'a> Iterator for Iter<'a> { None } else { let pattern = unsafe { - let ptr = *(*self.font_set.as_ptr()).fonts.offset(self.current as isize); + let ptr = *(*self.font_set.as_ptr()).fonts.add(self.current); PatternRef::from_ptr(ptr) }; diff --git a/src/grid/row.rs b/src/grid/row.rs index 69a4f2b2..7c12bf99 100644 --- a/src/grid/row.rs +++ b/src/grid/row.rs @@ -15,7 +15,7 @@ //! Defines the Row type which makes up lines in the grid use std::ops::{Index, IndexMut}; -use std::ops::{Range, RangeTo, RangeFrom, RangeFull}; +use std::ops::{Range, RangeTo, RangeFrom, RangeFull, RangeToInclusive}; use std::cmp::{max, min}; use std::slice; @@ -200,3 +200,20 @@ impl IndexMut for Row { &mut self.inner[..] } } + +impl Index> for Row { + type Output = [T]; + + #[inline] + fn index(&self, index: RangeToInclusive) -> &[T] { + &self.inner[..=(index.end.0)] + } +} + +impl IndexMut> for Row { + #[inline] + fn index_mut(&mut self, index: RangeToInclusive) -> &mut [T] { + self.occ = max(self.occ, *index.end); + &mut self.inner[..=(index.end.0)] + } +} diff --git a/src/grid/storage.rs b/src/grid/storage.rs index ad94cf2b..af2bd35c 100644 --- a/src/grid/storage.rs +++ b/src/grid/storage.rs @@ -232,8 +232,8 @@ impl Storage { // Cast to a qword array to opt out of copy restrictions and avoid // drop hazards. Byte array is no good here since for whatever // reason LLVM won't optimized it. - let a_ptr = self.inner.as_mut_ptr().offset(a as isize) as *mut u64; - let b_ptr = self.inner.as_mut_ptr().offset(b as isize) as *mut u64; + let a_ptr = self.inner.as_mut_ptr().add(a) as *mut u64; + let b_ptr = self.inner.as_mut_ptr().add(b) as *mut u64; // Copy 1 qword at a time // diff --git a/src/locale.rs b/src/locale.rs index bea68cad..833de71e 100644 --- a/src/locale.rs +++ b/src/locale.rs @@ -67,7 +67,7 @@ pub fn set_locale_environment() { // try setting `locale_id` let modified = setlocale(LC_CTYPE, locale_ptr); let result = if modified.is_null() { - String::from("") + String::new() } else { locale_id }; diff --git a/src/term/mod.rs b/src/term/mod.rs index 04d110af..f4ebf1c9 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -1725,7 +1725,7 @@ impl ansi::Handler for Term { }, ansi::LineClearMode::Left => { let row = &mut self.grid[self.cursor.point.line]; - for cell in &mut row[..(col + 1)] { + for cell in &mut row[..=col] { cell.reset(&template); } }, From 00bd098765f9e1a36e1813336f8c9690ebdd5e78 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Tue, 18 Sep 2018 15:54:40 +0000 Subject: [PATCH 08/23] Set upper limit for scrollback history size Since the scrollback history allocates all lines in memory, it is possible to specify a scrollback history which is big enough to freeze the computer due to OOM. To resolve this issue, an upper limit of `100_000` has been set for the scrollback history. Even though this might still cause some systems to freeze, this should provide a good balance for most users. --- src/config.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/config.rs b/src/config.rs index f4da671c..6fad09f9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -30,6 +30,8 @@ use ansi::CursorStyle; use util::fmt::Yellow; +const MAX_SCROLLBACK_LINES: u32 = 100_000; + /// Function that returns true for serde default fn true_bool() -> bool { true @@ -511,7 +513,18 @@ fn deserialize_scrolling_history<'a, D>(deserializer: D) -> ::std::result::Resul where D: de::Deserializer<'a> { match u32::deserialize(deserializer) { - Ok(lines) => Ok(lines), + Ok(lines) => { + if lines > MAX_SCROLLBACK_LINES { + eprintln!( + "problem with config: scrollback size is {}, but expected a maximum of {}; \ + Using {1} instead", + lines, MAX_SCROLLBACK_LINES, + ); + Ok(MAX_SCROLLBACK_LINES) + } else { + Ok(lines) + } + }, Err(err) => { eprintln!("problem with config: {}; Using default value", err); Ok(default_scrolling_history()) From 05d40a8adcfb12681d849f36f25263166c7d7bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 18 Sep 2018 22:20:59 +0200 Subject: [PATCH 09/23] Mention required terminfo update when changing tabspaces Changing tabspaces from the default (8) requires a corresponding update to the `it` item in the terminfo entry used. Some applications, like Emacs, rely on knowing the width of a tab, and will experience unexpected behavior if the terminfo data does not match the actual width used. --- alacritty.yml | 9 ++++++++- alacritty_macos.yml | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/alacritty.yml b/alacritty.yml index af4535d5..a0225f56 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -56,7 +56,14 @@ scrolling: # to the terminal. auto_scroll: false -# Display tabs using this many cells (changes require restart) +# Spaces per Tab +# +# This setting defines the width of a tab in cells. Changes to this +# value require a restart to take effect. +# +# Some applications, like Emacs, rely on knowing about the width of a tab. +# To prevent unexpected behavior in these applications, it's also required to +# change the `it` value in terminfo when altering this setting. tabspaces: 8 # When true, bold text is drawn using the bright variant of colors. diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 05173e6a..7834cc78 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -54,7 +54,14 @@ scrolling: # to the terminal. auto_scroll: false -# Display tabs using this many cells (changes require restart) +# Spaces per Tab +# +# This setting defines the width of a tab in cells. Changes to this +# value require a restart to take effect. +# +# Some applications, like Emacs, rely on knowing about the width of a tab. +# To prevent unexpected behavior in these applications, it's also required to +# change the `it` value in terminfo when altering this setting. tabspaces: 8 # When true, bold text is drawn using the bright variant of colors. From f0ce64e24b2ad3cce0a223d17f04413cd6c49810 Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 18 Sep 2018 22:27:40 +0200 Subject: [PATCH 10/23] Opt-in to macOS Mojave Dark Mode macOS 10.14 will bring a new system wide dark mode. To enable this, the [official guides][] suggest to relink using the newest OS. This approach, however, did not work for me as described in [an issue][] in the glutin repository. As a second option, the accompanying `Info.plist` file can also overwrite the link-time check and enable dark mode rendering if the system config is set by setting `NSRequiresAquaSystemAppearance` to `YES`. This approach seems to work flawlessly no matter if a user opts into dark mode or not. I would appreciate it if someone can test this on macOS 10.13 as well, but I suppose the key there is unused and would not break anything. [official guides]: https://developer.apple.com/documentation/appkit/appkit_release_notes_for_macos_10.14_beta [an issue]: https://github.com/tomaka/glutin/issues/1053#issuecomment-409315461 --- CHANGELOG.md | 1 + assets/osx/Alacritty.app/Contents/Info.plist | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c6bd00f..fa3af77b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Add support for macOS systemwide dark mode - Set the environment variable `COLORTERM="truecolor"` to advertise 24-bit color support ### Changed diff --git a/assets/osx/Alacritty.app/Contents/Info.plist b/assets/osx/Alacritty.app/Contents/Info.plist index 2792d9cd..5b6870a4 100644 --- a/assets/osx/Alacritty.app/Contents/Info.plist +++ b/assets/osx/Alacritty.app/Contents/Info.plist @@ -32,5 +32,7 @@ CFBundleDisplayName Alacritty + NSRequiresAquaSystemAppearance + NO From d387ebe1d7fe9f9fe9d840039aba68efffe5a233 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Wed, 19 Sep 2018 19:18:51 +0000 Subject: [PATCH 11/23] Add hidden escape sequence This adds support for the `hidden` escape sequence `\e[8m`, which will render the text as invisible. This has also raised a few questions about the rendering of foreground and background colors and their interaction with the different escape sequences. Previously, Alacritty has oriented itself after URxvt, which has some strange and unexpected behavior. The new implementation of color inversion is modeled after XTerm, which has a consistent pattern of always inverting the foreground and background colors. This should hopefully lead to less confusion for the user and a more consistent behavior. A full matrix showcasing the new way Alacritty inverses text can be found here: https://i.imgur.com/d1XavG7.png This fixes #1454 and fixes #1455. --- CHANGELOG.md | 2 ++ scripts/fg-bg.sh | 63 ++++++++++++++++++++++++++++++++++++--------- src/renderer/mod.rs | 7 ++++- src/term/cell.rs | 19 +++++++------- src/term/mod.rs | 30 +++++++-------------- 5 files changed, 79 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa3af77b..5c78cc7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,11 +8,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Implement the `hidden` escape sequence (`echo -e "\e[8mTEST"`) - Add support for macOS systemwide dark mode - Set the environment variable `COLORTERM="truecolor"` to advertise 24-bit color support ### Changed +- Inverse/Selection color is now modelled after XTerm/VTE instead of URxvt to improve consistency - First click on unfocused Alacritty windows is no longer ignored on platforms other than macOS ## Version 0.2.0 diff --git a/scripts/fg-bg.sh b/scripts/fg-bg.sh index f1ad4d0c..b6e0eaea 100755 --- a/scripts/fg-bg.sh +++ b/scripts/fg-bg.sh @@ -1,14 +1,53 @@ #!/bin/bash -printf "Fg=Black, Bg=Background \e[30;49mTEST\e[m\n" -printf "Fg=Black, Bg=Black \e[30;40mTEST\e[m\n" -printf "Fg=Foreground,Bg=Background \e[39;49mTEST\e[m\n" -printf "Fg=Foreground,Bg=Black \e[39;40mTEST\e[m\n" -printf "Fg=Foreground,Bg=White \e[39;47mTEST\e[m\n" -printf "Fg=White, Bg=Foreground \e[37;39mTEST\e[m\n" -printf "Fg=Black, Bg=Background, Inverse \e[7;30;49mTEST\e[m\n" -printf "Fg=Black, Bg=Black, Inverse \e[7;30;40mTEST\e[m\n" -printf "Fg=Foreground,Bg=Background, Inverse \e[7;39;49mTEST\e[m\n" -printf "Fg=Foreground,Bg=Black, Inverse \e[7;39;40mTEST\e[m\n" -printf "Fg=Foreground,Bg=White, Inverse \e[7;39;47mTEST\e[m\n" -printf "Fg=White, Bg=Foreground, Inverse \e[7;37;39mTEST\e[m\n" +printf "Fg=Black Bg=Black \e[30;40mTEST\e[m\n" +printf "Fg=Black Bg=White \e[30;107mTEST\e[m\n" +printf "Fg=Black Bg=Red \e[30;41mTEST\e[m\n" +printf "Fg=Black Bg=BG \e[30;49mTEST\e[m\n" +printf "Fg=White Bg=Black \e[97;40mTEST\e[m\n" +printf "Fg=White Bg=White \e[97;107mTEST\e[m\n" +printf "Fg=White Bg=Red \e[97;41mTEST\e[m\n" +printf "Fg=White Bg=BG \e[97;49mTEST\e[m\n" +printf "Fg=Red Bg=Black \e[31;40mTEST\e[m\n" +printf "Fg=Red Bg=White \e[31;107mTEST\e[m\n" +printf "Fg=Red Bg=Red \e[31;41mTEST\e[m\n" +printf "Fg=Red Bg=BG \e[31;49mTEST\e[m\n" +printf "\n" +printf "Fg=Black Bg=Black Inverse \e[7;30;40mTEST\e[m\n" +printf "Fg=Black Bg=White Inverse \e[7;30;107mTEST\e[m\n" +printf "Fg=Black Bg=Red Inverse \e[7;30;41mTEST\e[m\n" +printf "Fg=Black Bg=BG Inverse \e[7;30;49mTEST\e[m\n" +printf "Fg=White Bg=Black Inverse \e[7;97;40mTEST\e[m\n" +printf "Fg=White Bg=White Inverse \e[7;97;107mTEST\e[m\n" +printf "Fg=White Bg=Red Inverse \e[7;97;41mTEST\e[m\n" +printf "Fg=White Bg=BG Inverse \e[7;97;49mTEST\e[m\n" +printf "Fg=Red Bg=Black Inverse \e[7;31;40mTEST\e[m\n" +printf "Fg=Red Bg=White Inverse \e[7;31;107mTEST\e[m\n" +printf "Fg=Red Bg=Red Inverse \e[7;31;41mTEST\e[m\n" +printf "Fg=Red Bg=BG Inverse \e[7;31;49mTEST\e[m\n" +printf "\n" +printf "Fg=Black Bg=Black Hidden \e[8;30;40mTEST\e[m\n" +printf "Fg=Black Bg=White Hidden \e[8;30;107mTEST\e[m\n" +printf "Fg=Black Bg=Red Hidden \e[8;30;41mTEST\e[m\n" +printf "Fg=Black Bg=BG Hidden \e[8;30;49mTEST\e[m\n" +printf "Fg=White Bg=Black Hidden \e[8;97;40mTEST\e[m\n" +printf "Fg=White Bg=White Hidden \e[8;97;107mTEST\e[m\n" +printf "Fg=White Bg=Red Hidden \e[8;97;41mTEST\e[m\n" +printf "Fg=White Bg=BG Hidden \e[8;97;49mTEST\e[m\n" +printf "Fg=Red Bg=Black Hidden \e[8;31;40mTEST\e[m\n" +printf "Fg=Red Bg=White Hidden \e[8;31;107mTEST\e[m\n" +printf "Fg=Red Bg=Red Hidden \e[8;31;41mTEST\e[m\n" +printf "Fg=Red Bg=BG Hidden \e[8;31;49mTEST\e[m\n" +printf "\n" +printf "Fg=Black Bg=Black Hid+Inv \e[7;8;30;40mTEST\e[m\n" +printf "Fg=Black Bg=White Hid+Inv \e[7;8;30;107mTEST\e[m\n" +printf "Fg=Black Bg=Red Hid+Inv \e[7;8;30;41mTEST\e[m\n" +printf "Fg=Black Bg=BG Hid+Inv \e[7;8;30;49mTEST\e[m\n" +printf "Fg=White Bg=Black Hid+Inv \e[7;8;97;40mTEST\e[m\n" +printf "Fg=White Bg=White Hid+Inv \e[7;8;97;107mTEST\e[m\n" +printf "Fg=White Bg=Red Hid+Inv \e[7;8;97;41mTEST\e[m\n" +printf "Fg=White Bg=BG Hid+Inv \e[7;8;97;49mTEST\e[m\n" +printf "Fg=Red Bg=Black Hid+Inv \e[7;8;31;40mTEST\e[m\n" +printf "Fg=Red Bg=White Hid+Inv \e[7;8;31;107mTEST\e[m\n" +printf "Fg=Red Bg=Red Hid+Inv \e[7;8;31;41mTEST\e[m\n" +printf "Fg=Red Bg=BG Hid+Inv \e[7;8;31;49mTEST\e[m\n" diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 68335e1c..b461db0c 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -835,12 +835,17 @@ impl<'a> RenderApi<'a> { glyph_cache.font_key }; - let glyph_key = GlyphKey { + let mut glyph_key = GlyphKey { font_key, size: glyph_cache.font_size, c: cell.c }; + // Don't render text of HIDDEN cells + if cell.flags.contains(cell::Flags::HIDDEN) { + glyph_key.c = ' '; + } + // Add cell to batch { let glyph = glyph_cache.get(glyph_key, self); diff --git a/src/term/cell.rs b/src/term/cell.rs index a04eb8e1..ef8509dc 100644 --- a/src/term/cell.rs +++ b/src/term/cell.rs @@ -18,15 +18,16 @@ use index::Column; bitflags! { #[derive(Serialize, Deserialize)] pub struct Flags: u32 { - const INVERSE = 0b0000_0001; - const BOLD = 0b0000_0010; - const ITALIC = 0b0000_0100; - const UNDERLINE = 0b0000_1000; - const WRAPLINE = 0b0001_0000; - const WIDE_CHAR = 0b0010_0000; - const WIDE_CHAR_SPACER = 0b0100_0000; - const DIM = 0b1000_0000; - const DIM_BOLD = 0b1000_0010; + const INVERSE = 0b0_0000_0001; + const BOLD = 0b0_0000_0010; + const ITALIC = 0b0_0000_0100; + const UNDERLINE = 0b0_0000_1000; + const WRAPLINE = 0b0_0001_0000; + const WIDE_CHAR = 0b0_0010_0000; + const WIDE_CHAR_SPACER = 0b0_0100_0000; + const DIM = 0b0_1000_0000; + const DIM_BOLD = 0b0_1000_0010; + const HIDDEN = 0b1_0000_0000; } } diff --git a/src/term/mod.rs b/src/term/mod.rs index f4ebf1c9..c2759802 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -14,9 +14,8 @@ // //! Exports the `Term` type which is a high-level API for the Grid use std::ops::{Range, Index, IndexMut}; -use std::ptr; +use std::{ptr, io, mem}; use std::cmp::{min, max}; -use std::io; use std::time::{Duration, Instant}; use arraydeque::ArrayDeque; @@ -424,26 +423,15 @@ impl<'a> Iterator for RenderableCellsIter<'a> { }; // Apply inversion and lookup RGB values - let mut bg_alpha = 1.0; - let fg_rgb; - let bg_rgb; + let mut fg_rgb = self.compute_fg_rgb(cell.fg, &cell); + let mut bg_rgb = self.compute_bg_rgb(cell.bg); - let invert = selected ^ cell.inverse(); - - if invert { - if cell.fg == cell.bg { - bg_rgb = self.colors[NamedColor::Foreground]; - fg_rgb = self.colors[NamedColor::Background]; - bg_alpha = 1.0 - } else { - bg_rgb = self.compute_fg_rgb(cell.fg, &cell); - fg_rgb = self.compute_bg_rgb(cell.bg); - } + let bg_alpha = if selected ^ cell.inverse() { + mem::swap(&mut fg_rgb, &mut bg_rgb); + self.compute_bg_alpha(cell.fg) } else { - fg_rgb = self.compute_fg_rgb(cell.fg, &cell); - bg_rgb = self.compute_bg_rgb(cell.bg); - bg_alpha = self.compute_bg_alpha(cell.bg); - } + self.compute_bg_alpha(cell.bg) + }; return Some(RenderableCell { line: cell.line, @@ -1877,6 +1865,8 @@ impl ansi::Handler for Term { Attr::CancelItalic => self.cursor.template.flags.remove(cell::Flags::ITALIC), Attr::Underscore => self.cursor.template.flags.insert(cell::Flags::UNDERLINE), Attr::CancelUnderline => self.cursor.template.flags.remove(cell::Flags::UNDERLINE), + Attr::Hidden => self.cursor.template.flags.insert(cell::Flags::HIDDEN), + Attr::CancelHidden => self.cursor.template.flags.remove(cell::Flags::HIDDEN), _ => { debug!("Term got unhandled attr: {:?}", attr); } From bd6e5a99bed6acb331dfd0917dd50bf8f2cf7de1 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Wed, 19 Sep 2018 21:37:37 +0000 Subject: [PATCH 12/23] Show hollow cursor for windows starting unfocused Alacritty made the assumption that every window started as focused and because of that the hollow cursor wouldn't show up for windows which are launched without focus. Since even the initial focus should be reported as a focus event by winit, this could be easily fixed just setting the default window state to unfocused instead of focused. This fixes #1563. --- CHANGELOG.md | 4 ++++ src/window.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c78cc7e..4c8d4702 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Inverse/Selection color is now modelled after XTerm/VTE instead of URxvt to improve consistency - First click on unfocused Alacritty windows is no longer ignored on platforms other than macOS +### Fixed + +- Windows started as unfocused now show the hollow cursor if the setting is enabled + ## Version 0.2.0 ### Added diff --git a/src/window.rs b/src/window.rs index 51a42232..ede29716 100644 --- a/src/window.rs +++ b/src/window.rs @@ -249,7 +249,7 @@ impl Window { event_loop, window, cursor_visible: true, - is_focused: true, + is_focused: false, }; window.run_os_extensions(); From 26c4043aafbc88d4aaab010fec8c73e42add9df4 Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Wed, 19 Sep 2018 17:55:35 -0400 Subject: [PATCH 13/23] Update core-* dependencies The core-* dependencies have been updated and every breaking change has been resolved. These are the main changes which required adaption: - font_path() returns a PathBuf now - get_descriptors() returns an Option - get_advances_for_glyphs and get_glyphs_for_characters are now unsafe. All packages which did not have breaking updates have also been updated. --- Cargo.lock | 748 +++++++++++++++++++++++------------------ font/Cargo.toml | 8 +- font/src/darwin/mod.rs | 39 ++- 3 files changed, 447 insertions(+), 348 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e91321b2..be1e076e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,42 +1,42 @@ [[package]] name = "aho-corasick" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "alacritty" version = "0.2.0" dependencies = [ - "arraydeque 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arraydeque 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cgmath 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "copypasta 0.0.1", - "dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "font 0.1.0", "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-more 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "vte 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "vte 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.18.3 (registry+https://github.com/rust-lang/crates.io-index)", "xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -61,7 +61,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arraydeque" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -69,25 +69,20 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base64" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bitflags" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bitflags" version = "0.7.0" @@ -100,7 +95,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bitflags" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -110,22 +105,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.2.4" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.3.0" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "cc" -version = "1.0.18" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -134,7 +133,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gleam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -144,7 +143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -154,7 +153,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -166,15 +165,15 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cmake" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -182,10 +181,10 @@ name = "cocoa" version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -198,30 +197,13 @@ dependencies = [ "objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "core-foundation" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "core-foundation" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "core-foundation-sys" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -229,45 +211,50 @@ name = "core-foundation-sys" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "core-graphics" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "core-graphics" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "core-graphics" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "core-text" -version = "9.2.0" +version = "13.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-utils" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "dirs" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -291,14 +278,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "env_logger" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -307,7 +294,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -317,7 +304,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -333,17 +320,17 @@ name = "expat-sys" version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "filetime" -version = "0.1.15" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -356,15 +343,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "font" version = "0.1.0" dependencies = [ - "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "euclid 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype-rs 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "servo-fontconfig 0.4.0 (git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8)", ] @@ -388,7 +375,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -396,9 +383,9 @@ name = "freetype-sys" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -408,7 +395,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -416,7 +403,7 @@ name = "fsevent-sys" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -424,7 +411,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -433,6 +420,11 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "gcc" version = "0.3.54" @@ -444,7 +436,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -468,11 +460,11 @@ dependencies = [ "core-graphics 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "winit 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.18.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -488,10 +480,24 @@ dependencies = [ [[package]] name = "inotify" -version = "0.3.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "inotify-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -499,13 +505,13 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -537,12 +543,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazycell" -version = "0.6.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.42" +version = "0.2.43" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -550,19 +556,19 @@ name = "libloading" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libz-sys" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -571,19 +577,28 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "log" -version = "0.3.9" +name = "lock_api" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -591,15 +606,17 @@ name = "malloc_buf" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memchr" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -607,44 +624,39 @@ name = "memmap" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "mio" -version = "0.6.15" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mio-more" version = "0.1.0" @@ -652,21 +664,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "miow" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "miow" version = "0.2.1" @@ -683,47 +684,39 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nix" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "nix" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "notify" -version = "4.0.3" +version = "4.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "filetime 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)", "fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "inotify 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -731,14 +724,22 @@ name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "num_cpus" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "objc" version = "0.2.5" @@ -790,14 +791,35 @@ dependencies = [ "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot_core" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -808,12 +830,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.9" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -826,30 +848,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -874,14 +896,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -900,42 +922,73 @@ dependencies = [ "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "safemem" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "serde" -version = "1.0.70" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.70" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.24" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -945,8 +998,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", + "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -954,7 +1007,7 @@ name = "servo-fontconfig" version = "0.4.0" source = "git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8#be2b94de833ec69cf767186262a5fb8360fa5b45" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "servo-fontconfig-sys 4.0.3 (git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8)", ] @@ -965,7 +1018,7 @@ source = "git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8#5c dependencies = [ "expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "freetype-sys 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -974,14 +1027,9 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "slab" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "slab" version = "0.3.0" @@ -994,7 +1042,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1005,16 +1053,16 @@ name = "smithay-client-toolkit" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-commons 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-protocols 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-commons 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-protocols 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1034,21 +1082,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "0.14.7" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1056,10 +1105,10 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wincolor 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1067,7 +1116,7 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1082,21 +1131,45 @@ dependencies = [ [[package]] name = "thread_local" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "time" -version = "0.1.40" +name = "tokio-executor" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-io" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1124,7 +1197,7 @@ dependencies = [ [[package]] name = "utf8-ranges" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1134,7 +1207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "vcpkg" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1154,7 +1227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "vte" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "utf8parse 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1162,49 +1235,50 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.2.0" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "same-file 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wayland-client" -version = "0.20.11" +version = "0.20.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-commons 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-scanner 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-sys 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-commons 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-scanner 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-sys 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wayland-commons" -version = "0.20.11" +version = "0.20.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "downcast-rs 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-sys 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-sys 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wayland-protocols" -version = "0.20.11" +version = "0.20.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-commons 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-scanner 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-sys 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-commons 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-scanner 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-sys 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wayland-scanner" -version = "0.20.11" +version = "0.20.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1212,7 +1286,7 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.20.11" +version = "0.20.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1243,6 +1317,14 @@ name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "winapi-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -1250,10 +1332,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wincolor" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1266,12 +1349,12 @@ dependencies = [ "core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "smithay-client-toolkit 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "wayland-client 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)", + "wayland-client 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "x11-dl 2.18.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1291,8 +1374,8 @@ version = "2.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1305,57 +1388,55 @@ name = "xml-rs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "yaml-rust" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] -"checksum aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c1c6d463cbe7ed28720b5b489e7c083eeb8f90d08be2a0d6bb9e1ffea9ce1afa" +"checksum aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "68f56c7353e5a9547cbd76ed90f7bb5ffc3ba09d4ea9bd1d8c06c8b1142eeb5a" "checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08abcc3b4e9339e33a3d0a5ed15d84a687350c05689d825e0f6655eef9e76a94" -"checksum arraydeque 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bc059aa8598b9f4fb1dd532a061edc8e4efe0ccc55ba05358aba2a80b7b01f11" +"checksum arraydeque 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e300327073b806ffc81fccb228b2d4131ac7ef1b1a015f7b0c399c7f886cacc6" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum base64 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "85415d2594767338a74a30c1d370b2f3262ec1b4ed2d7bba5b3faf4de40467d9" -"checksum bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1370e9fc2a6ae53aea8b7a5110edbd08836ed87c88736dfabccade1c2b44bff4" -"checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -"checksum byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8389c509ec62b9fe8eca58c502a0acaf017737355615243496cde4994f8fa4f9" -"checksum bytes 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c129aff112dcc562970abb69e2508b40850dd24c274761bb50fb8a0067ba6c27" -"checksum cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "2119ea4867bd2b8ed3aecab467709720b2d55b1bcfe09f772fd68066eaf15275" -"checksum cfg-if 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efe5c877e17a9c717a0bf3613b2709f723202c4e4675cc8f12926ded29bcb17e" +"checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" +"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" +"checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" "checksum cgl 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "55e7ec0b74fe5897894cbc207092c577e87c52f8a59e8ca8d97ef37551f60a49" "checksum cgmath 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "64a4b57c8f4e3a2e9ac07e0f6abc9c24b6fc9e1b54c3478cfb598f3d0023e51c" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "b56821938fa1a3aaf4f0c4f49504928c5a7fcc56cbc9855be8fc2e98567e750c" +"checksum cmake 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "848b314ea70f48f0e13828c5554e34200952ce5720d6d3aa466b4d983af6c70e" "checksum cocoa 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b44bd25bd275e9d74a5dff8ca55f2fb66c9ad5e12170d58697701df21a56e0e" -"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cc3532ec724375c7cb7ff0a097b714fde180bb1f6ed2ab27cfcd99ffca873cd2" -"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" "checksum core-foundation-sys 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a3fb15cdbdd9cf8b82d97d0296bb5cd3631bba58d6e31650a002a8e7fb5721f9" -"checksum core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb0ed45fdc32f9ab426238fba9407dfead7bacd7900c9b4dd3f396f46eafdae3" "checksum core-graphics 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e54c4ab33705fa1fc8af375bb7929d68e1c1546c1ecef408966d8c3e49a1d84a" -"checksum core-text 9.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd581c37283d0c23311d179aefbb891f2324ee0405da58a26e8594ab76e5748" -"checksum dirs 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "37a76dd8b997af7107d0bb69d43903cf37153a18266f8b3fdb9911f28efb5444" +"checksum core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)" = "62ceafe1622ffc9a332199096841d0ff9912ec8cf8f9cde01e254a7d5217cd10" +"checksum core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f3f46450d6f2397261af420b4ccce23807add2e45fa206410a03d66fb7f050ae" +"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum dirs 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f679c09c1cf5428702cc10f6846c56e4e23420d3a88bcc9335b17c630a7b710b" "checksum dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a" "checksum downcast-rs 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "18df8ce4470c189d18aa926022da57544f31e154631eb4cfe796aea97051fe6c" "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" -"checksum env_logger 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)" = "f4d7e69c283751083d53d01eac767407343b8b69c4bd70058e08adc2637cb257" +"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" "checksum euclid 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c95fd0d455f114291a3109286bd387bd423770058474a2d3f38b712cd661df60" "checksum expat-sys 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c470ccb972f2088549b023db8029ed9da9426f5affbf9b62efff7009ab8ed5b1" -"checksum filetime 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "714653f3e34871534de23771ac7b26e999651a0a228f47beb324dfdf1dd4b10f" +"checksum filetime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "da4b9849e77b13195302c174324b5ba73eec9b236b24c221a61000daefb95c5f" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" @@ -1365,109 +1446,120 @@ dependencies = [ "checksum fsevent-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1a772d36c338d07a032d5375a36f15f9a7043bf0cb8ce7cee658e037c6032874" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" +"checksum futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "0c84b40c7e2de99ffd70602db314a7a8c26b2b3d830e6f7f7a142a8860ab3ca4" "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" "checksum gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a795170cbd85b5a7baa58d6d7525cae6a03e486859860c220f7ebbbdd379d0a" "checksum gleam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d41e7ac812597988fdae31c9baec3c6d35cadb8ad9ab88a9bf9c0f119ed66c2" "checksum glutin 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "42fb2de780307bd2bedbe013bc585659a683e7c6307d0baa878aec3da9250fc1" "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" -"checksum inotify 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887fcc180136e77a85e6a6128579a719027b1bab9b1c38ea4444244fe262c20c" +"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" +"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5adb58558dcd1d786b5f0bd15f3226ee23486e24b7b58304b60f64dc68e62606" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "037ab472c33f67b5fbd3e9163a2645319e5356fcd355efa6d4eb7fff4bbcb554" "checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" "checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b" -"checksum lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a6f08839bc70ef4a3fe1d566d5350f519c5912ea86be0df1740a7d247c7fc0ef" -"checksum libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)" = "b685088df2b950fccadf07a7187c8ef846a959c142338a48f9dc0b94517eb5f1" +"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" +"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" -"checksum libz-sys 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "87f737ad6cc6fd6eefe3d9dc5412f1573865bded441300904d2f42269e140f16" +"checksum libz-sys 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)" = "65ff614643d7635dfa2151913d95c4ee90ee1fe15d9e0980f4dcb1a7e5837c18" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" +"checksum lock_api 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "949826a5ccf18c1b3a7c3d57692778d21768b79e46eb9dd07bfc4c2160036c54" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "61bd98ae7f7b754bc53dca7d44b604f733c6bba044ea6f41bc8d89272d8161d2" +"checksum log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fcce5fa49cc693c312001daf1d13411c4a5283796bac1084299ea3e567113f" "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" +"checksum memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4b3629fe9fdbff6daa6c33b90f7c08355c1aca05a3d01fa8063b822fcf185f3b" "checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff" -"checksum mio 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a637d1ca14eacae06296a008fa7ad955347e34efcb5891cfd8ba05491a37907e" -"checksum mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)" = "4fcfcb32d63961fb6f367bfd5d21e4600b92cd310f71f9dca25acae196eb1560" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-more 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0063c5ac7d07a3f177ad237540ddf5d96b7c9a9882b337702c1994bfd844d3e0" -"checksum miow 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3e690c5df6b2f60acd45d56378981e827ff8295562fc8d34f573deb267a59cd1" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" -"checksum nix 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfb3ddedaa14746434a02041940495bf11325c22f6d36125d3bdd56090d50a79" -"checksum notify 4.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5c3812da3098f210a0bb440f9c008471a031aa4c1de07a264fdd75456c95a4eb" +"checksum notify 4.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "873ecfd8c174964ae30f401329d140142312c8e5590719cf1199d5f1717d8078" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -"checksum num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "630de1ef5cc79d0cdd78b7e33b81f083cbfe90de0f4b2b2f07f905867c70e9fe" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "9833ab0efe5361b1e2122a0544a5d3359576911a42cb098c2e59be8650807367" "checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" "checksum objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" "checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d05f1349491390b1730afba60bb20d55761bef489a954546b58b4b34e1e2ac" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pkg-config 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "6a52e4dbc8354505ee07e484ab07127e06d87ca6fa7f0a516a2b294e5ad5ad16" -"checksum proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "cccdc7557a98fe98453030f077df7f3a042052fae465bb61d2c2c41435cfd9b6" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum proc-macro2 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "ffe022fb8c8bd254524b0b3305906c1921fa37a84a644e29079a9e62200c3901" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3372dc35766b36a99ce2352bd1b6ea0137c38d215cc0c8780bf6de6df7842ba9" -"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" -"checksum rand 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "12397506224b2f93e6664ffc4f664b29be8208e5157d3d90b44f09b5fae470ea" +"checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" +"checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" +"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" "checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbbea44c5490a1e84357ff28b7d518b4619a159fed5d25f6c1de2d19cc42814" +"checksum regex 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2069749032ea3ec200ca51e4a31df41759190a88edca0d2d86ee8bedf7073341" "checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" -"checksum same-file 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cfb6eded0b06a0b512c8ddbcf04089138c9b4362c2f696f3c3d76039d68f3637" -"checksum serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)" = "0c3adf19c07af6d186d91dae8927b83b0553d07ca56cbf7f2f32560455c91920" -"checksum serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)" = "3525a779832b08693031b8ecfb0de81cd71cfd3812088fafe9a7496789572124" -"checksum serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c6908c7b925cd6c590358a4034de93dbddb20c45e1d021931459fd419bf0e2" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" +"checksum same-file 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "10f7794e2fda7f594866840e95f5c5962e886e228e68b6505885811a94dd728c" +"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "84257ccd054dc351472528c8587b4de2dbf0dc0fe2e634030c1a90bfdacebaa9" +"checksum serde_derive 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)" = "31569d901045afbff7a9479f793177fe9259819aff10ab4f89ef69bbc5f567fe" +"checksum serde_json 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "d30ec34ac923489285d24688c7a9c0898d16edff27fc1f1bd854edeff6ca3b7f" "checksum serde_yaml 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ef8099d3df28273c99a1728190c7a9f19d444c941044f64adf986bee7ec53051" "checksum servo-fontconfig 0.4.0 (git+https://github.com/jwilm/rust-fontconfig?branch=updated-2017-10-8)" = "" "checksum servo-fontconfig-sys 4.0.3 (git+https://github.com/jwilm/libfontconfig?branch=updated-2017-10-8)" = "" "checksum shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" -"checksum slab 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d807fd58c4181bbabed77cb3b891ba9748241a552bcc5be698faaebefc54f46e" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" -"checksum smallvec 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "26df3bb03ca5eac2e64192b723d51f56c1b1e0860e7c766281f4598f181acdc8" +"checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" "checksum smithay-client-toolkit 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2051bffc6cbf271176e8ba1527f801b6444567daee15951ff5152aaaf7777b2f" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e13df71f29f9440b50261a5882c86eac334f1badb3134ec26f0de2f1418e44" -"checksum tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b103c6d08d323b92ff42c8ce62abcd83ca8efa7fd5bf7927efefec75f58c76" -"checksum termcolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "722426c4a0539da2c4ffd9b419d90ad540b4cff4a053be9069c908d4d07e2836" +"checksum syn 0.15.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9056ebe7f2d6a38bc63171816fd1d3430da5a43896de21676dc5c0a4b8274a11" +"checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" +"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" -"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" -"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum tokio-executor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84823b932d566bc3c6aa644df4ca36cb38593c50b7db06011fd4e12e31e4047e" +"checksum tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6cc2de7725863c86ac71b0b9068476fec50834f055a243558ef1655bbd34cb" +"checksum tokio-reactor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4bfbaf9f260635649ec26b6fb4aded03887295ffcd999f6e43fd2c4758f758ea" "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" +"checksum utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd70f467df6810094968e2fce0ee1bd0e87157aceb026a8c083bcf5e25b9efe4" "checksum utf8parse 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a15ea87f3194a3a454c78d79082b4f5e85f6956ddb6cb86bbfbe4892aa3c0323" -"checksum vcpkg 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cbe533e138811704c0e3cbde65a818b35d3240409b4346256c5ede403e082474" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7716c242968ee87e5542f8021178248f267f295a5c4803beae8b8b7fd9bc6051" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum vte 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a01634c75db59478405de08d8567c40c578bba80c565217ee709934b551720d8" -"checksum walkdir 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1b768ba943161a9226ccd59b26bcd901e5d60e6061f4fcad3034784e0c7372b" -"checksum wayland-client 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ff113a1c1c5e5104c7abfc2a80ba5e2bf78e1ac725ebbf934772dbd2983847" -"checksum wayland-commons 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9892d32d32dd45121fdaee5c3e7acf9923e3fc9d8f0ab09e4148b6a5e9aebb9c" -"checksum wayland-protocols 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)" = "251d1dbf33e60c51878037e2d23ef2169ae2f8996bdc91d543a96cf8a641f323" -"checksum wayland-scanner 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca8187bffd85d8c8d88b55113aa8ff4276723617f85ab4ff1c36a88e0bbcd80" -"checksum wayland-sys 0.20.11 (registry+https://github.com/rust-lang/crates.io-index)" = "de74f07898a3f5b3407e19de2c175b5fbd989324b2c782e2d0e20d918639e63f" +"checksum vte 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4f42f536e22f7fcbb407639765c8fd78707a33109301f834a594758bedd6e8cf" +"checksum walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "af464bc7be7b785c7ac72e266a6b67c4c9070155606f51655a650a6686204e35" +"checksum wayland-client 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)" = "e7516a23419a55bd2e6d466c75a6a52c85718e5013660603289c2b8bee794b12" +"checksum wayland-commons 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)" = "d8609d59b95bf198bae4f3b064d55a712f2d529eec6aac98cc1f6e9cc911d47a" +"checksum wayland-protocols 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd4d31a96be6ecdbaddbf35200f5af2daee01be592afecd8feaf443d417e9230" +"checksum wayland-scanner 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)" = "e674d85ae9c67cbbc590374d8f2e20a7a02fff87ce3a31fc52213afece8d05ad" +"checksum wayland-sys 0.20.12 (registry+https://github.com/rust-lang/crates.io-index)" = "87c82ee658aa657fdfd7061f22e442030d921cfefc5bad68bcf41973e67922f7" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "afc5508759c5bf4285e61feb862b6083c8480aec864fa17a81fdec6f69b461ab" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b9dc3aa9dcda98b5a16150c54619c1ead22e3d3a5d458778ae914be760aa981a" +"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" "checksum winit 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4bb6ea35de8bd722201914b28a33d503ee45b09fcf85fc4bbf574845e41f79e2" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum x11-dl 2.18.3 (registry+https://github.com/rust-lang/crates.io-index)" = "940586acb859ea05c53971ac231685799a7ec1dee66ac0bccc0e6ad96e06b4e3" "checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" "checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2" -"checksum yaml-rust 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "57ab38ee1a4a266ed033496cf9af1828d8d6e6c1cfa5f643a2809effcae4d628" +"checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e" diff --git a/font/Cargo.toml b/font/Cargo.toml index 47b0e697..df495b61 100644 --- a/font/Cargo.toml +++ b/font/Cargo.toml @@ -16,7 +16,7 @@ servo-fontconfig = { git = "https://github.com/jwilm/rust-fontconfig", branch = freetype-rs = "0.13" [target.'cfg(target_os = "macos")'.dependencies] -core-foundation = "0.5" -core-text = "9.1" -core-graphics = "0.13" -core-foundation-sys = "0.5" +core-foundation = "0.6" +core-text = "13" +core-graphics = "0.17" +core-foundation-sys = "0.6" diff --git a/font/src/darwin/mod.rs b/font/src/darwin/mod.rs index bbdb5662..c688c53d 100644 --- a/font/src/darwin/mod.rs +++ b/font/src/darwin/mod.rs @@ -18,6 +18,7 @@ #![allow(improper_ctypes)] use std::collections::HashMap; use std::ptr; +use std::path::PathBuf; use ::{Slant, Weight, Style}; @@ -56,7 +57,7 @@ pub struct Descriptor { font_name: String, style_name: String, display_name: String, - font_path: String, + font_path: PathBuf, ct_descriptor: CTFontDescriptor } @@ -68,7 +69,7 @@ impl Descriptor { font_name: desc.font_name(), style_name: desc.style_name(), display_name: desc.display_name(), - font_path: desc.font_path().unwrap_or_else(String::new), + font_path: desc.font_path().unwrap_or_else(PathBuf::new), ct_descriptor: desc, } } @@ -334,8 +335,10 @@ pub fn descriptors_for_family(family: &str) -> Vec { // CFArray of CTFontDescriptorRef (i think) let descriptors = ct_collection.get_descriptors(); - for descriptor in descriptors.iter() { - out.push(Descriptor::new(descriptor.clone())); + if let Some(descriptors) = descriptors { + for descriptor in descriptors.iter() { + out.push(Descriptor::new(descriptor.clone())); + } } out @@ -358,7 +361,7 @@ impl Descriptor { // TODO fixme, hardcoded en for english let mut fallbacks = cascade_list_for_languages(&menlo, &["en".to_owned()]) .into_iter() - .filter(|desc| desc.font_path != "") + .filter(|desc| !desc.font_path.as_os_str().is_empty()) .map(|desc| desc.to_font(size, false)) .collect::>(); @@ -442,12 +445,14 @@ impl Font { let indices = [index as CGGlyph]; - self.ct_font.get_advances_for_glyphs( - FontOrientation::Default as _, - &indices[0], - ptr::null_mut(), - 1 - ) + unsafe { + self.ct_font.get_advances_for_glyphs( + FontOrientation::Default as _, + &indices[0], + ptr::null_mut(), + 1 + ) + } } pub fn get_glyph(&self, character: char, _size: f64, use_thin_strokes: bool) -> Result { @@ -577,11 +582,13 @@ impl Font { // always being a 0. let mut glyphs:[CGGlyph; 2] = [0; 2]; - let res = self.ct_font.get_glyphs_for_characters( - encoded.as_ptr(), - glyphs.as_mut_ptr(), - encoded.len() as CFIndex - ); + let res = unsafe { + self.ct_font.get_glyphs_for_characters( + encoded.as_ptr(), + glyphs.as_mut_ptr(), + encoded.len() as CFIndex + ) + }; if res { Some(u32::from(glyphs[0])) From a769e80eb4383b4c4a274c5ad192958961122d09 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 20 Sep 2018 02:04:07 +0200 Subject: [PATCH 14/23] Fix build failure on 32-bit machines Alacritty has some checks in place to make sure that unsafe code would not fail because of invalid struct sizes. This managed to successfully catch an incorrect unsafe block on 32-bit machines. To make sure this block works on both 32-bit and 64-bit systems, it has been altered to make use of the platform-dependent `usize` type. This will always make use of correct sizes without having to rely on conditional compilation. --- src/grid/storage.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/grid/storage.rs b/src/grid/storage.rs index af2bd35c..55c73b87 100644 --- a/src/grid/storage.rs +++ b/src/grid/storage.rs @@ -223,7 +223,7 @@ impl Storage { /// instructions. This implementation achieves the swap in only 8 movups /// instructions. pub fn swap(&mut self, a: usize, b: usize) { - assert_eq_size!(Row, [u32; 8]); + assert_eq_size!(Row, [usize; 4]); let a = self.compute_index(a); let b = self.compute_index(b); @@ -232,13 +232,13 @@ impl Storage { // Cast to a qword array to opt out of copy restrictions and avoid // drop hazards. Byte array is no good here since for whatever // reason LLVM won't optimized it. - let a_ptr = self.inner.as_mut_ptr().add(a) as *mut u64; - let b_ptr = self.inner.as_mut_ptr().add(b) as *mut u64; + let a_ptr = self.inner.as_mut_ptr().add(a) as *mut usize; + let b_ptr = self.inner.as_mut_ptr().add(b) as *mut usize; // Copy 1 qword at a time // // The optimizer unrolls this loop and vectorizes it. - let mut tmp: u64; + let mut tmp: usize; for i in 0..4 { tmp = *a_ptr.offset(i); *a_ptr.offset(i) = *b_ptr.offset(i); From ef06109d94ddb58e0dbc88663eb01f73d1ec8063 Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Thu, 20 Sep 2018 02:05:30 +0200 Subject: [PATCH 15/23] Add changelog entry for 32-bit fix --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c8d4702..e2f14446 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fix build failure on 32-bit systems - Windows started as unfocused now show the hollow cursor if the setting is enabled ## Version 0.2.0 From 6e9859395ca7ce1476bed911fa801232568c88c0 Mon Sep 17 00:00:00 2001 From: Chris MacNaughton Date: Thu, 20 Sep 2018 08:39:53 +0200 Subject: [PATCH 16/23] Update snapcraft.yaml The existing snapcraft.yaml is pointing to a file that has been renamed, subsequently breaking the snap build. This change renames the .desktop file to match what is in-tree. --- snap/snapcraft.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 64594a9c..11681434 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -15,8 +15,8 @@ parts: plugin: dump source: . stage: - - Alacritty.desktop + - alacritty.desktop apps: alacritty: command: env XDG_RUNTIME_DIR= XDG_CONFIG_HOME=$SNAP_USER_DATA XDG_DATA_DIRS=$SNAP_DATA PATH=$SNAP/bin:$PATH SNAP= alacritty - desktop: Alacritty.desktop + desktop: alacritty.desktop From 417ad9d430518859156bb3b629e82ed14a043e40 Mon Sep 17 00:00:00 2001 From: Aidan Epstein Date: Thu, 20 Sep 2018 14:58:57 +0000 Subject: [PATCH 17/23] Fix Bracketed Paste Mode when input contains end sequence. (#1243) * Fix Bracketed Paste Mode when input contains end sequence. * Remove \x1b instead of just the paste end sequence. --- src/input.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/input.rs b/src/input.rs index 3c20fe36..f4978336 100644 --- a/src/input.rs +++ b/src/input.rs @@ -285,7 +285,7 @@ impl Action { fn paste(&self, ctx: &mut A, contents: String) { if ctx.terminal_mode().contains(TermMode::BRACKETED_PASTE) { ctx.write_to_pty(&b"\x1b[200~"[..]); - ctx.write_to_pty(contents.into_bytes()); + ctx.write_to_pty(contents.replace("\x1b","").into_bytes()); ctx.write_to_pty(&b"\x1b[201~"[..]); } else { // In non-bracketed (ie: normal) mode, terminal applications cannot distinguish From 641f3291eb918afdc513daa89dbcabfcc202e077 Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Thu, 20 Sep 2018 07:59:52 -0700 Subject: [PATCH 18/23] Update CHANGELOG for #1243 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2f14446..8c42ccec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix build failure on 32-bit systems - Windows started as unfocused now show the hollow cursor if the setting is enabled +- Bracketed paste mode now filters escape sequences beginning with \x1b ## Version 0.2.0 From 3b46859eceea39afb8bbc760235cc15de78d3ff3 Mon Sep 17 00:00:00 2001 From: Joe Moon Date: Thu, 20 Sep 2018 08:24:26 -0700 Subject: [PATCH 19/23] Improve window.decorations options: (#1241) The decorations config was changed from a bool to an enum. `full` has taken the place of `true`, and `none`, has replaced `false`. On macOS, there are now options for `transparent` and `buttonless`. These options are explained in both the CHANGELOG and in the configuration files. --- CHANGELOG.md | 9 +++ alacritty.yml | 6 +- alacritty_macos.yml | 10 ++- src/config.rs | 90 ++++++++++++++++++++- src/window.rs | 185 ++++++++++++++++++++++++++++++++------------ 5 files changed, 243 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c42ccec..adcc849c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Implement the `hidden` escape sequence (`echo -e "\e[8mTEST"`) - Add support for macOS systemwide dark mode - Set the environment variable `COLORTERM="truecolor"` to advertise 24-bit color support +- On macOS, there are two new values for the config option `window.decorations`: + - `transparent` - This makes the title bar transparent and allows the + viewport to extend to the top of the window. + - `buttonless` - Similar to transparent but also removed the buttons. ### Changed @@ -23,6 +27,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Windows started as unfocused now show the hollow cursor if the setting is enabled - Bracketed paste mode now filters escape sequences beginning with \x1b +### Deprecated + +- The config option `window.decorations` should now use `full` or `none` instead + of `true` or `false`, respectively. + ## Version 0.2.0 ### Added diff --git a/alacritty.yml b/alacritty.yml index a0225f56..49a33737 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -30,8 +30,10 @@ window: y: 2 # Window decorations - # Setting this to false will result in window without borders and title bar. - decorations: true + # Available values: + # - `full`: Window with borders and title bar. + # - `none`: Window without borders or title bar. + decorations: full scrolling: # How many lines of scrollback to keep, diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 7834cc78..9c911e26 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -28,8 +28,14 @@ window: y: 2 # Window decorations - # Setting this to false will result in window without borders and title bar. - decorations: true + # Available values: + # - `full`: Window with title bar and title bar buttons + # - `none`: Window without title bar, rounded corners, or drop shadow + # - `transparent`: Window with title bar with transparent background and title + # bar buttons + # - `buttonless`: Window with title bar with transparent background and no + # title bar buttons + decorations: full scrolling: # How many lines of scrollback to keep, diff --git a/src/config.rs b/src/config.rs index 6fad09f9..58e282d2 100644 --- a/src/config.rs +++ b/src/config.rs @@ -248,6 +248,89 @@ impl Default for Alpha { } } +#[derive(Debug, Copy, Clone)] +pub enum Decorations { + Full, + Transparent, + Buttonless, + None, +} + +impl Default for Decorations { + fn default() -> Decorations { + Decorations::Full + } +} + +impl<'de> Deserialize<'de> for Decorations { + fn deserialize(deserializer: D) -> ::std::result::Result + where D: de::Deserializer<'de> + { + + struct DecorationsVisitor; + + impl<'de> Visitor<'de> for DecorationsVisitor { + type Value = Decorations; + + fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.write_str("Some subset of full|transparent|buttonless|none") + } + + fn visit_bool(self, value: bool) -> ::std::result::Result + where E: de::Error + { + if value { + eprintln!("deprecated decorations boolean value, use one of default|transparent|buttonless|none instead; Falling back to \"full\""); + Ok(Decorations::Full) + } else { + eprintln!("deprecated decorations boolean value, use one of default|transparent|buttonless|none instead; Falling back to \"none\""); + Ok(Decorations::None) + } + } + + #[cfg(target_os = "macos")] + fn visit_str(self, value: &str) -> ::std::result::Result + where E: de::Error + { + match value { + "transparent" => Ok(Decorations::Transparent), + "buttonless" => Ok(Decorations::Buttonless), + "none" => Ok(Decorations::None), + "full" => Ok(Decorations::Full), + _ => { + eprintln!("invalid decorations value: {}; Using default value", value); + Ok(Decorations::Full) + } + } + } + + #[cfg(not(target_os = "macos"))] + fn visit_str(self, value: &str) -> ::std::result::Result + where E: de::Error + { + match value { + "none" => Ok(Decorations::None), + "full" => Ok(Decorations::Full), + "transparent" => { + eprintln!("macos-only decorations value: {}; Using default value", value); + Ok(Decorations::Full) + }, + "buttonless" => { + eprintln!("macos-only decorations value: {}; Using default value", value); + Ok(Decorations::Full) + } + _ => { + eprintln!("invalid decorations value: {}; Using default value", value); + Ok(Decorations::Full) + } + } + } + } + + deserializer.deserialize_str(DecorationsVisitor) + } +} + #[derive(Debug, Copy, Clone, Deserialize)] pub struct WindowConfig { /// Initial dimensions @@ -259,8 +342,7 @@ pub struct WindowConfig { padding: Delta, /// Draw the window with title bar / borders - #[serde(default, deserialize_with = "failure_default")] - decorations: bool, + decorations: Decorations, } fn default_padding() -> Delta { @@ -280,7 +362,7 @@ fn deserialize_padding<'a, D>(deserializer: D) -> ::std::result::Result bool { + pub fn decorations(&self) -> Decorations { self.decorations } } @@ -290,7 +372,7 @@ impl Default for WindowConfig { WindowConfig{ dimensions: Default::default(), padding: default_padding(), - decorations: true, + decorations: Default::default(), } } } diff --git a/src/window.rs b/src/window.rs index ede29716..eac4c014 100644 --- a/src/window.rs +++ b/src/window.rs @@ -16,14 +16,16 @@ use std::fmt::{self, Display}; use std::ops::Deref; use gl; -use glutin::{self, ContextBuilder, ControlFlow, CursorState, Event, EventsLoop, - MouseCursor as GlutinMouseCursor, WindowBuilder}; use glutin::GlContext; +use glutin::{ + self, ContextBuilder, ControlFlow, CursorState, Event, EventsLoop, + MouseCursor as GlutinMouseCursor, WindowBuilder, +}; use MouseCursor; use cli::Options; -use config::WindowConfig; +use config::{Decorations, WindowConfig}; /// Default text for the window's title bar, if not overriden. /// @@ -119,7 +121,7 @@ impl ToPoints for Size> { Size { width: Points(width_pts), - height: Points(height_pts) + height: Points(height_pts), } } } @@ -147,7 +149,6 @@ macro_rules! deref_newtype { deref_newtype! { Points, Pixels } - impl Display for Pixels { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}px", self.0) @@ -179,12 +180,8 @@ impl ::std::error::Error for Error { impl Display for Error { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { match *self { - Error::ContextCreation(ref err) => { - write!(f, "Error creating GL context; {}", err) - }, - Error::Context(ref err) => { - write!(f, "Error operating on render context; {}", err) - }, + Error::ContextCreation(ref err) => write!(f, "Error creating GL context; {}", err), + Error::Context(ref err) => write!(f, "Error operating on render context; {}", err), } } } @@ -206,9 +203,7 @@ fn create_gl_window( event_loop: &EventsLoop, srgb: bool, ) -> ::std::result::Result { - let context = ContextBuilder::new() - .with_srgb(srgb) - .with_vsync(true); + let context = ContextBuilder::new().with_srgb(srgb).with_vsync(true); ::glutin::GlWindow::new(window, context, event_loop) } @@ -216,19 +211,12 @@ impl Window { /// Create a new window /// /// This creates a window and fully initializes a window. - pub fn new( - options: &Options, - window_config: &WindowConfig, - ) -> Result { + pub fn new(options: &Options, window_config: &WindowConfig) -> Result { let event_loop = EventsLoop::new(); let title = options.title.as_ref().map_or(DEFAULT_TITLE, |t| t); let class = options.class.as_ref().map_or(DEFAULT_CLASS, |c| c); - let window_builder = WindowBuilder::new() - .with_title(title) - .with_visibility(false) - .with_transparency(true) - .with_decorations(window_config.decorations()); + let window_builder = Window::get_platform_window(title, window_config); let window_builder = Window::platform_builder_ext(window_builder, &class); let window = create_gl_window(window_builder.clone(), &event_loop, false) .or_else(|_| create_gl_window(window_builder, &event_loop, true))?; @@ -268,9 +256,10 @@ impl Window { } pub fn inner_size_pixels(&self) -> Option>> { - self.window - .get_inner_size() - .map(|(w, h)| Size { width: Pixels(w), height: Pixels(h) }) + self.window.get_inner_size().map(|(w, h)| Size { + width: Pixels(w), + height: Pixels(h), + }) } #[inline] @@ -287,15 +276,14 @@ impl Window { #[inline] pub fn swap_buffers(&self) -> Result<()> { - self.window - .swap_buffers() - .map_err(From::from) + self.window.swap_buffers().map_err(From::from) } /// Poll for any available events #[inline] pub fn poll_events(&mut self, func: F) - where F: FnMut(Event) + where + F: FnMut(Event), { self.event_loop.poll_events(func); } @@ -308,7 +296,8 @@ impl Window { /// Block waiting for events #[inline] pub fn wait_events(&mut self, func: F) - where F: FnMut(Event) -> ControlFlow + where + F: FnMut(Event) -> ControlFlow, { self.event_loop.run_forever(func); } @@ -341,24 +330,95 @@ impl Window { } } - #[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd"))] + #[cfg( + any( + target_os = "linux", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "openbsd" + ) + )] fn platform_builder_ext(window_builder: WindowBuilder, wm_class: &str) -> WindowBuilder { use glutin::os::unix::WindowBuilderExt; window_builder.with_class(wm_class.to_owned(), "Alacritty".to_owned()) } - #[cfg(not(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd")))] + #[cfg( + not( + any( + target_os = "linux", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "openbsd" + ) + ) + )] fn platform_builder_ext(window_builder: WindowBuilder, _: &str) -> WindowBuilder { window_builder } - #[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd"))] + #[cfg(not(target_os = "macos"))] + pub fn get_platform_window(title: &str, window_config: &WindowConfig) -> WindowBuilder { + let decorations = match window_config.decorations() { + Decorations::None => false, + _ => true, + }; + + WindowBuilder::new() + .with_title(title) + .with_visibility(false) + .with_transparency(true) + .with_decorations(decorations) + } + + #[cfg(target_os = "macos")] + pub fn get_platform_window(title: &str, window_config: &WindowConfig) -> WindowBuilder { + use glutin::os::macos::WindowBuilderExt; + + let window = WindowBuilder::new() + .with_title(title) + .with_visibility(false) + .with_transparency(true); + + match window_config.decorations() { + Decorations::Full => window, + Decorations::Transparent => window + .with_title_hidden(true) + .with_titlebar_transparent(true) + .with_fullsize_content_view(true), + Decorations::Buttonless => window + .with_title_hidden(true) + .with_titlebar_buttons_hidden(true) + .with_titlebar_transparent(true) + .with_fullsize_content_view(true), + Decorations::None => window + .with_titlebar_hidden(true), + } + } + + #[cfg( + any( + target_os = "linux", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "openbsd" + ) + )] pub fn set_urgent(&self, is_urgent: bool) { use glutin::os::unix::WindowExt; self.window.set_urgent(is_urgent); } - #[cfg(not(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd")))] + #[cfg( + not( + any( + target_os = "linux", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "openbsd" + ) + ) + )] pub fn set_urgent(&self, _is_urgent: bool) {} pub fn set_ime_spot(&self, x: i32, y: i32) { @@ -371,7 +431,7 @@ impl Window { match self.window.get_xlib_window() { Some(xlib_window) => Some(xlib_window as usize), - None => None + None => None, } } @@ -390,17 +450,28 @@ pub trait OsExtensions { fn run_os_extensions(&self) {} } -#[cfg(not(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd")))] -impl OsExtensions for Window { } +#[cfg( + not( + any( + target_os = "linux", + target_os = "freebsd", + target_os = "dragonfly", + target_os = "openbsd" + ) + ) +)] +impl OsExtensions for Window {} -#[cfg(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd"))] +#[cfg( + any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd") +)] impl OsExtensions for Window { fn run_os_extensions(&self) { use glutin::os::unix::WindowExt; - use x11_dl::xlib::{self, XA_CARDINAL, PropModeReplace}; - use std::ffi::{CStr}; - use std::ptr; use libc::getpid; + use std::ffi::CStr; + use std::ptr; + use x11_dl::xlib::{self, PropModeReplace, XA_CARDINAL}; let xlib_display = self.window.get_xlib_display(); let xlib_window = self.window.get_xlib_window(); @@ -414,17 +485,32 @@ impl OsExtensions for Window { let atom = (xlib.XInternAtom)(xlib_display as *mut _, _net_wm_pid.as_ptr(), 0); let pid = getpid(); - (xlib.XChangeProperty)(xlib_display as _, xlib_window as _, atom, - XA_CARDINAL, 32, PropModeReplace, &pid as *const i32 as *const u8, 1); - + (xlib.XChangeProperty)( + xlib_display as _, + xlib_window as _, + atom, + XA_CARDINAL, + 32, + PropModeReplace, + &pid as *const i32 as *const u8, + 1, + ); } // Although this call doesn't actually pass any data, it does cause // WM_CLIENT_MACHINE to be set. WM_CLIENT_MACHINE MUST be set if _NET_WM_PID is set // (which we do above). unsafe { - (xlib.XSetWMProperties)(xlib_display as _, xlib_window as _, ptr::null_mut(), - ptr::null_mut(), ptr::null_mut(), 0, ptr::null_mut(), ptr::null_mut(), - ptr::null_mut()); + (xlib.XSetWMProperties)( + xlib_display as _, + xlib_window as _, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + 0, + ptr::null_mut(), + ptr::null_mut(), + ptr::null_mut(), + ); } } } @@ -447,6 +533,7 @@ pub trait SetInnerSize { impl SetInnerSize> for Window { fn set_inner_size(&mut self, size: &T) { let size = size.to_points(self.hidpi_factor()); - self.window.set_inner_size(*size.width as _, *size.height as _); + self.window + .set_inner_size(*size.width as _, *size.height as _); } } From 34ba485fb5a38f8018e31158269a0662e530e665 Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Thu, 20 Sep 2018 08:25:28 -0700 Subject: [PATCH 20/23] Fix CHANGELOG.md The bracketed paste mode change isn't so much a fix as it is a change to address a potential security issue. --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index adcc849c..c251ec61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,13 +25,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix build failure on 32-bit systems - Windows started as unfocused now show the hollow cursor if the setting is enabled -- Bracketed paste mode now filters escape sequences beginning with \x1b ### Deprecated - The config option `window.decorations` should now use `full` or `none` instead of `true` or `false`, respectively. +### Security + +- Bracketed paste mode now filters escape sequences beginning with \x1b + ## Version 0.2.0 ### Added From 6cfd7aea82ea57d7808cffd36997d0deec55749f Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Thu, 20 Sep 2018 16:58:45 +0000 Subject: [PATCH 21/23] Fix config error with missing decorations field The latest change to window decorations (3b46859eceea39afb8bbc760235cc15de78d3ff3) introduced a regression when running Alacritty without the `decorations` field specified in the configuration file. Since serde wasn't setup to fallback to the default, the complete config deserialization would fail. This resolves this issue by deserializing it to the default decorations value "Full". To make this setting a little more forgiving, this also introduces another change which ignores the case for the configuration options. So both `full` and `FuLl` are now accepted. --- src/config.rs | 9 ++++++--- src/input.rs | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/config.rs b/src/config.rs index 58e282d2..bd06641a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -280,10 +280,12 @@ impl<'de> Deserialize<'de> for Decorations { where E: de::Error { if value { - eprintln!("deprecated decorations boolean value, use one of default|transparent|buttonless|none instead; Falling back to \"full\""); + eprintln!("deprecated decorations boolean value, use one of \ + default|transparent|buttonless|none instead; Falling back to \"full\""); Ok(Decorations::Full) } else { - eprintln!("deprecated decorations boolean value, use one of default|transparent|buttonless|none instead; Falling back to \"none\""); + eprintln!("deprecated decorations boolean value, use one of \ + default|transparent|buttonless|none instead; Falling back to \"none\""); Ok(Decorations::None) } } @@ -308,7 +310,7 @@ impl<'de> Deserialize<'de> for Decorations { fn visit_str(self, value: &str) -> ::std::result::Result where E: de::Error { - match value { + match value.to_lowercase().as_str() { "none" => Ok(Decorations::None), "full" => Ok(Decorations::Full), "transparent" => { @@ -342,6 +344,7 @@ pub struct WindowConfig { padding: Delta, /// Draw the window with title bar / borders + #[serde(default)] decorations: Decorations, } diff --git a/src/input.rs b/src/input.rs index f4978336..5e4ad1f8 100644 --- a/src/input.rs +++ b/src/input.rs @@ -211,7 +211,7 @@ impl Action { Action::Paste => { Clipboard::new() .and_then(|clipboard| clipboard.load_primary() ) - .map(|contents| { self.paste(ctx, contents) }) + .map(|contents| { self.paste(ctx, &contents) }) .unwrap_or_else(|err| { eprintln!("Error loading data from clipboard. {}", Red(err)); }); @@ -222,7 +222,7 @@ impl Action { if !ctx.terminal_mode().intersects(mouse_modes) { Clipboard::new() .and_then(|clipboard| clipboard.load_selection() ) - .map(|contents| { self.paste(ctx, contents) }) + .map(|contents| { self.paste(ctx, &contents) }) .unwrap_or_else(|err| { warn!("Error loading data from clipboard. {}", Red(err)); }); @@ -282,7 +282,7 @@ impl Action { } } - fn paste(&self, ctx: &mut A, contents: String) { + fn paste(&self, ctx: &mut A, contents: &str) { if ctx.terminal_mode().contains(TermMode::BRACKETED_PASTE) { ctx.write_to_pty(&b"\x1b[200~"[..]); ctx.write_to_pty(contents.replace("\x1b","").into_bytes()); From cee35b309de129f16d4c9df80172e43f5320c82a Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sat, 22 Sep 2018 02:46:41 +0000 Subject: [PATCH 22/23] Unify configuration file structure This changes a lot of small details in the configuration file in an attempt to unify its structure. These are some main guidelines used for this refactoring: - Specify that changes require restart consistently - Unify the specification of available field values - Provide clear distinction between description title and body Besides these guidelines used to unify minor details in the configuration file, the section on key configuration has been completely reworked in an attempt to reduce the amount of text used. This should make it possible to understand what's going on without having to read any text. The notice that modifiers are not supported has been removed from the mouse binding documentation. --- alacritty.yml | 303 +++++++++++++++++++++++--------------------- alacritty_macos.yml | 270 ++++++++++++++++++++++----------------- 2 files changed, 313 insertions(+), 260 deletions(-) diff --git a/alacritty.yml b/alacritty.yml index 49a33737..c82db1b3 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -1,13 +1,13 @@ -# Configuration for Alacritty, the GPU enhanced terminal emulator +# Configuration for Alacritty, the GPU enhanced terminal emulator. # Any items in the `env` entry below will be added as # environment variables. Some entries may override variables -# set by alacritty it self. +# set by alacritty itself. env: - # TERM env customization. + # TERM env customization # - # If this property is not set, alacritty will set it to xterm-256color. + # If this property is not set, alacritty will set it to `xterm-256color`. # # Note that some xterm terminfo databases don't declare support for italics. # You can verify this by checking for the presence of `smso` and `sitm` in @@ -15,112 +15,107 @@ env: TERM: xterm-256color window: - # Window dimensions in character columns and lines - # Falls back to size specified by window manager if set to 0x0. - # (changes require restart) + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. dimensions: columns: 80 lines: 24 - # Adds this many blank pixels of padding around the window - # Units are physical pixels; this is not DPI aware. - # (change requires restart) + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is not scaled + # by DPI and the specified value is always added at both opposing sides. padding: x: 2 y: 2 # Window decorations - # Available values: - # - `full`: Window with borders and title bar. - # - `none`: Window without borders or title bar. + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar decorations: full scrolling: - # How many lines of scrollback to keep, - # '0' will disable scrolling. + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. history: 10000 - # Number of lines the viewport will move for every line - # scrolled when scrollback is enabled (history > 0). + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). multiplier: 3 # Faux Scrolling # - # The `faux_multiplier` setting controls the number - # of lines the terminal should scroll when the alternate - # screen buffer is active. This is used to allow mouse - # scrolling for applications like `man`. + # The `faux_multiplier` setting controls the number of lines the terminal + # should scroll when the alternate screen buffer is active. This is used + # to allow mouse scrolling for applications like `man`. # - # To disable this completely, set `faux_multiplier` to 0. + # Specifying `0` will disable faux scrolling. faux_multiplier: 3 - # Automatically scroll to the bottom when new text is written - # to the terminal. + # Scroll to the bottom when new text is written to the terminal. auto_scroll: false -# Spaces per Tab +# Spaces per Tab (changes require restart) # -# This setting defines the width of a tab in cells. Changes to this -# value require a restart to take effect. +# This setting defines the width of a tab in cells. # # Some applications, like Emacs, rely on knowing about the width of a tab. # To prevent unexpected behavior in these applications, it's also required to # change the `it` value in terminfo when altering this setting. 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) # # Important font attributes like antialiasing, subpixel aa, and hinting can be # controlled through fontconfig. Specifically, the following attributes should # have an effect: -# -# * hintstyle -# * antialias -# * lcdfilter -# * rgba +# - hintstyle +# - antialias +# - lcdfilter +# - rgba # # For instance, if you wish to disable subpixel antialiasing, you might set the -# rgba property to "none". If you wish to completely disable antialiasing, you -# can set antialias to false. +# rgba property to `none`. If you wish to completely disable antialiasing, you +# can set antialias to `false`. # -# Please see these resources for more information on how to use fontconfig -# -# * https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration -# * file:///usr/share/doc/fontconfig/fontconfig-user.html +# Please see these resources for more information on how to use fontconfig: +# - https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration +# - file:///usr/share/doc/fontconfig/fontconfig-user.html font: - # The normal (roman) font face to use. + # Normal (roman) font face normal: - family: monospace # should be "Menlo" or something on macOS. - # Style can be specified to pick a specific face. + family: monospace + # The `style` can be specified to pick a specific face. # style: Regular - # The bold font face + # Bold font face bold: - family: monospace # should be "Menlo" or something on macOS. - # Style can be specified to pick a specific face. + family: monospace + # The `style` can be specified to pick a specific face. # style: Bold - # The italic font face + # Italic font face italic: - family: monospace # should be "Menlo" or something on macOS. - # Style can be specified to pick a specific face. + family: monospace + # The `style` can be specified to pick a specific face. # style: Italic - # Point size of the font + # Point size size: 11.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 is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. offset: x: 0 y: 0 # Glyph offset determines the locations of the glyphs within their cells with - # the default being at the bottom. Increase the x offset to move the glyph to - # the right, increase the y offset to move the glyph upward. + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. glyph_offset: x: 0 y: 0 @@ -131,18 +126,17 @@ font: # `WINIT_HIDPI_FACTOR=1.0 alacritty` to scale the font. scale_with_dpi: true - # OS X only: use thin stroke font rendering. Thin strokes are suitable - # for retina displays, but for non-retina you probably want this set to - # false. - use_thin_strokes: true - -# Should display the render timer +# Display the time it takes to redraw each frame. render_timer: false -# Use custom cursor colors. If true, display the cursor in the cursor.foreground -# and cursor.background colors, otherwise invert the colors of the cursor. +# Use custom cursor colors. If `true`, the `colors.cursor.foreground` and +# `colors.cursor.background` colors will be used to display the cursor. +# Otherwise the cell colors are inverted for the cursor. custom_cursor_colors: false +# If `true`, bold text is drawn using the bright color variants. +draw_bold_text_with_bright_colors: true + # Colors (Tomorrow Night Bright) colors: # Default colors @@ -150,16 +144,18 @@ colors: background: '0x000000' foreground: '0xeaeaea' - # (Optional) Bright and Dim foreground colors + # Bright and dim foreground colors # # The dimmed foreground color is calculated automatically if it is not present. # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` # is `false`, the normal foreground color will be used. # - # dim_foreground: '0x9a9a9a' - # bright_foreground: '0xffffff' + #dim_foreground: '0x9a9a9a' + #bright_foreground: '0xffffff' - # Colors the cursor will use if `custom_cursor_colors` is true + # Cursor colors + # + # These will only be used when the `custom_cursor_colors` field is set to `true`. cursor: text: '0x000000' cursor: '0xffffff' @@ -186,7 +182,10 @@ colors: cyan: '0x54ced6' white: '0xffffff' - # Dim colors (Optional) + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. dim: black: '0x333333' red: '0xf2777a' @@ -205,20 +204,19 @@ colors: # setting the `duration` property (represented in milliseconds). You can also # configure the transition function by setting the `animation` property. # -# Possible values for `animation` -# `Ease` -# `EaseOut` -# `EaseOutSine` -# `EaseOutQuad` -# `EaseOutCubic` -# `EaseOutQuart` -# `EaseOutQuint` -# `EaseOutExpo` -# `EaseOutCirc` -# `Linear` -# -# To completely disable the visual bell, set its duration to 0. +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear # +# Specifying a `duration` of `0` will disable the visual bell. visual_bell: animation: EaseOutExpo duration: 0 @@ -228,19 +226,19 @@ background_opacity: 1.0 # Mouse bindings # -# Currently doesn't support modifiers. Both the `mouse` and `action` fields must -# be specified. +# Available fields: +# - mouse +# - action +# - mods (optional) # # Values for `mouse`: -# - Middle -# - Left -# - Right -# - Numeric identifier such as `5` +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` # -# Values for `action`: -# - Paste -# - PasteSelection -# - Copy (TODO) +# All available `mods` and `action` values are documented in the key binding +# section. mouse_bindings: - { mouse: Middle, action: PasteSelection } @@ -260,15 +258,16 @@ dynamic_title: true hide_cursor_when_typing: false -# Style of the cursor +# Cursor style # # Values for 'cursor_style': -# - Block -# - Underline -# - Beam +# - Block +# - Underline +# - Beam cursor_style: Block -# Whether the cursor should be a hollow block on window focus loss +# If this is `true`, the cursor will be rendered as a hollow box when the +# window is not focused. unfocused_hollow_cursor: true # Live config reload (changes require restart) @@ -276,64 +275,82 @@ live_config_reload: true # Shell # -# You can set shell.program to the path of your favorite shell, e.g. /bin/fish. -# Entries in shell.args are passed unmodified as arguments to the shell. +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. # -# shell: -# program: /bin/bash -# args: -# - --login +#shell: +# program: /bin/bash +# args: +# - --login # 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. +# Key bindings are specified as a list of objects. Each binding will specify +# a key and modifiers required to trigger it, terminal modes where the binding +# is applicable, and what should be done when the key binding fires. It can +# either send a byte sequnce to the running application (`chars`), execute +# a predefined action (`action`) or fork and execute a specified command plus +# arguments (`command`). # -# A list with all available `key` names can be found here: -# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants +# Example: +# `- { key: V, mods: Command, action: Paste }` # -# 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 +# Available fields: +# - key +# - mods (optional) +# - chars | action | command (exactly one required) +# - mode (optional) # -# mods may be combined with a `|`. For example, requiring control and shift -# looks like: +# Values for `key`: +# - `A` -> `Z` +# - `F1` -> `F12` +# - `Key1` -> `Key0` # -# mods: Control|Shift +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants # -# The parser is currently quite sensitive to whitespace and capitalization - -# capitalization must match exactly, and piped items must not have whitespace -# around them. +# Values for `mods`: +# - Command +# - Control +# - Shift +# - Alt # -# Either an `action`, `chars`, or `command` field must be present. -# `action` must be one of the following: -# - `Paste` -# - `PasteSelection` -# - `Copy` -# - `IncreaseFontSize` -# - `DecreaseFontSize` -# - `ResetFontSize` -# - `ScrollPageUp` -# - `ScrollPageDown` -# - `ScrollToTop` -# - `ScrollToBottom` -# - `Quit` -# `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. -# `command` must be a map containing a `program` string, and `args` array of -# strings. For example: -# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } } +# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`. +# Whitespace and capitalization is relevant and must match the example. # -# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence -# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux, -# then run `showkey -a` to get the sequence associated to a key combination. +# Values for `chars`: +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. +# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run +# the command `showkey -a` outside of tmux. +# +# Values for `action`: +# - Paste +# - PasteSelection +# - Copy +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Quit +# +# Values for `command`: +# The `command` field must be a map containing a `program` string and +# an `args` array of command line parameter strings. +# +# Example: +# `command: { program: "alacritty", args: ["-e", "vttest"] }` +# +# Values for `mode`: +# - ~AppCursor +# - AppCursor +# - ~AppKeypad +# - AppKeypad key_bindings: - { key: V, mods: Control|Shift, action: Paste } - { key: C, mods: Control|Shift, action: Copy } diff --git a/alacritty_macos.yml b/alacritty_macos.yml index 9c911e26..07566b22 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -1,12 +1,12 @@ -# Configuration for Alacritty, the GPU enhanced terminal emulator +# Configuration for Alacritty, the GPU enhanced terminal emulator. # Any items in the `env` entry below will be added as # environment variables. Some entries may override variables -# set by alacritty it self. +# set by alacritty itself. env: - # TERM env customization. + # TERM env customization # - # If this property is not set, alacritty will set it to xterm-256color. + # If this property is not set, alacritty will set it to `xterm-256color`. # # Note that some xterm terminfo databases don't declare support for italics. # You can verify this by checking for the presence of `smso` and `sitm` in @@ -14,20 +14,24 @@ env: TERM: xterm-256color window: - # Window dimensions in character columns and lines - # (changes require restart) + # Window dimensions (changes require restart) + # + # Specified in number of columns/lines, not pixels. + # If both are `0`, this setting is ignored. dimensions: columns: 80 lines: 24 - # Adds this many blank pixels of padding around the window - # Units are physical pixels; this is not DPI aware. - # (change requires restart) + # Window padding (changes require restart) + # + # Blank space added around the window in pixels. This padding is not scaled + # by DPI and the specified value is always added at both opposing sides. padding: x: 2 y: 2 # Window decorations + # # Available values: # - `full`: Window with title bar and title bar buttons # - `none`: Window without title bar, rounded corners, or drop shadow @@ -35,76 +39,77 @@ window: # bar buttons # - `buttonless`: Window with title bar with transparent background and no # title bar buttons + # Window decorations + # + # Values for `decorations`: + # - full: Borders and title bar + # - none: Neither borders nor title bar + # - buttonless: Title bar, transparent background and title bar buttons + # - transparent: Title bar, transparent background, but no title bar buttons decorations: full scrolling: - # How many lines of scrollback to keep, - # '0' will disable scrolling. + # Maximum number of lines in the scrollback buffer. + # Specifying '0' will disable scrolling. history: 10000 - # Number of lines the viewport will move for every line - # scrolled when scrollback is enabled (history > 0). + # Number of lines the viewport will move for every line scrolled when + # scrollback is enabled (history > 0). multiplier: 3 # Faux Scrolling # - # The `faux_multiplier` setting controls the number - # of lines the terminal should scroll when the alternate - # screen buffer is active. This is used to allow mouse - # scrolling for applications like `man`. + # The `faux_multiplier` setting controls the number of lines the terminal + # should scroll when the alternate screen buffer is active. This is used + # to allow mouse scrolling for applications like `man`. # - # To disable this completely, set `faux_multiplier` to 0. + # Specifying `0` will disable faux scrolling. faux_multiplier: 3 - # Automatically scroll to the bottom when new text is written - # to the terminal. + # Scroll to the bottom when new text is written to the terminal. auto_scroll: false -# Spaces per Tab +# Spaces per Tab (changes require restart) # -# This setting defines the width of a tab in cells. Changes to this -# value require a restart to take effect. +# This setting defines the width of a tab in cells. # # Some applications, like Emacs, rely on knowing about the width of a tab. # To prevent unexpected behavior in these applications, it's also required to # change the `it` value in terminfo when altering this setting. 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 (roman) font face normal: family: Menlo - # Style can be specified to pick a specific face. + # The `style` can be specified to pick a specific face. # style: Regular - # The bold font face + # Italic font face bold: family: Menlo - # Style can be specified to pick a specific face. + # The `style` can be specified to pick a specific face. # style: Bold - # The italic font face + # Italic font face italic: family: Menlo - # Style can be specified to pick a specific face. + # The `style` can be specified to pick a specific face. # style: Italic - # Point size of the font + # Point size 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 is the extra space around each character. `offset.y` can be thought of + # as modifying the line spacing, and `offset.x` as modifying the letter spacing. offset: x: 0 y: 0 # Glyph offset determines the locations of the glyphs within their cells with - # the default being at the bottom. Increase the x offset to move the glyph to - # the right, increase the y offset to move the glyph upward. + # the default being at the bottom. Increasing `x` moves the glyph to the right, + # increasing `y` moves the glyph upwards. glyph_offset: x: 0 y: 0 @@ -113,18 +118,23 @@ font: # screens and make reading text a little easier. scale_with_dpi: true - # OS X only: use thin stroke font rendering. Thin strokes are suitable - # for retina displays, but for non-retina you probably want this set to - # false. + # Thin stroke font rendering (OS X only) + # + # Thin strokes are suitable for retina displays, but for non-retina screens + # it is recommended to set `use_thin_strokes` to `false` use_thin_strokes: true -# Should display the render timer +# Display the time it takes to redraw each frame. render_timer: false -# Use custom cursor colors. If true, display the cursor in the cursor.foreground -# and cursor.background colors, otherwise invert the colors of the cursor. +# Use custom cursor colors. If `true`, the `colors.cursor.foreground` and +# `colors.cursor.background` colors will be used to display the cursor. +# Otherwise the cell colors are inverted for the cursor. custom_cursor_colors: false +# If `true`, bold text is drawn using the bright color variants. +draw_bold_text_with_bright_colors: true + # Colors (Tomorrow Night Bright) colors: # Default colors @@ -132,16 +142,18 @@ colors: background: '0x000000' foreground: '0xeaeaea' - # (Optional) Bright and Dim foreground colors + # Bright and dim foreground colors # # The dimmed foreground color is calculated automatically if it is not present. # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors` # is `false`, the normal foreground color will be used. # - # dim_foreground: '0x9a9a9a' - # bright_foreground: '0xffffff' + #dim_foreground: '0x9a9a9a' + #bright_foreground: '0xffffff' - # Colors the cursor will use if `custom_cursor_colors` is true + # Cursor colors + # + # These will only be used when the `custom_cursor_colors` field is set to `true`. cursor: text: '0x000000' cursor: '0xffffff' @@ -168,7 +180,10 @@ colors: cyan: '0x54ced6' white: '0xffffff' - # Dim colors (Optional) + # Dim colors + # + # If the dim colors are not set, they will be calculated automatically based + # on the `normal` colors. dim: black: '0x333333' red: '0xf2777a' @@ -179,7 +194,6 @@ colors: cyan: '0x66cccc' white: '0xdddddd' - # Visual Bell # # Any time the BEL code is received, Alacritty "rings" the visual bell. Once @@ -188,20 +202,19 @@ colors: # setting the `duration` property (represented in milliseconds). You can also # configure the transition function by setting the `animation` property. # -# Possible values for `animation` -# `Ease` -# `EaseOut` -# `EaseOutSine` -# `EaseOutQuad` -# `EaseOutCubic` -# `EaseOutQuart` -# `EaseOutQuint` -# `EaseOutExpo` -# `EaseOutCirc` -# `Linear` -# -# To completely disable the visual bell, set its duration to 0. +# Values for `animation`: +# - Ease +# - EaseOut +# - EaseOutSine +# - EaseOutQuad +# - EaseOutCubic +# - EaseOutQuart +# - EaseOutQuint +# - EaseOutExpo +# - EaseOutCirc +# - Linear # +# Specifying a `duration` of `0` will disable the visual bell. visual_bell: animation: EaseOutExpo duration: 0 @@ -211,8 +224,10 @@ background_opacity: 1.0 # Mouse bindings # -# Currently doesn't support modifiers. Both the `mouse` and `action` fields must -# be specified. +# Available fields: +# - mouse +# - action +# - mods (optional) # # Values for `mouse`: # - Middle @@ -220,10 +235,8 @@ background_opacity: 1.0 # - Right # - Numeric identifier such as `5` # -# Values for `action`: -# - Paste -# - PasteSelection -# - Copy (TODO) +# All available `mods` and `action` values are documented in the key binding +# section. mouse_bindings: - { mouse: Middle, action: PasteSelection } @@ -243,15 +256,16 @@ dynamic_title: true hide_cursor_when_typing: false -# Style of the cursor +# Cursor style # # Values for 'cursor_style': -# - Block -# - Underline -# - Beam +# - Block +# - Underline +# - Beam cursor_style: Block -# Whether the cursor should be a hollow block on window focus loss +# If this is `true`, the cursor will be rendered as a hollow box when the +# window is not focused. unfocused_hollow_cursor: true # Live config reload (changes require restart) @@ -259,60 +273,82 @@ live_config_reload: true # Shell # -# You can set shell.program to the path of your favorite shell, e.g. /bin/fish. -# Entries in shell.args are passed unmodified as arguments to the shell. +# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`. +# Entries in `shell.args` are passed unmodified as arguments to the shell. # -# shell: -# program: /bin/bash -# args: -# - --login +#shell: +# program: /bin/bash +# args: +# - --login # 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. +# Key bindings are specified as a list of objects. Each binding will specify +# a key and modifiers required to trigger it, terminal modes where the binding +# is applicable, and what should be done when the key binding fires. It can +# either send a byte sequnce to the running application (`chars`), execute +# a predefined action (`action`) or fork and execute a specified command plus +# arguments (`command`). # -# A list with all available `key` names can be found here: -# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants +# Example: +# `- { key: V, mods: Command, action: Paste }` # -# 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 +# Available fields: +# - key +# - mods (optional) +# - chars | action | command (exactly one required) +# - mode (optional) # -# mods may be combined with a `|`. For example, requiring control and shift -# looks like: +# Values for `key`: +# - `A` -> `Z` +# - `F1` -> `F12` +# - `Key1` -> `Key0` # -# mods: Control|Shift +# A full list with available key codes can be found here: +# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants # -# The parser is currently quite sensitive to whitespace and capitalization - -# capitalization must match exactly, and piped items must not have whitespace -# around them. +# Values for `mods`: +# - Command +# - Control +# - Shift +# - Alt # -# Either an `action`, `chars`, or `command` field must be present. -# `action` must be one of the following: -# - `Paste` -# - `PasteSelection` -# - `Copy` -# - `IncreaseFontSize` -# - `DecreaseFontSize` -# - `ResetFontSize` -# - `ScrollPageUp` -# - `ScrollPageDown` -# - `ScrollToTop` -# - `ScrollToBottom` -# - `Quit` -# `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. -# `command` must be a map containing a `program` string, and `args` array of -# strings. For example: -# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } } +# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`. +# Whitespace and capitalization is relevant and must match the example. +# +# Values for `chars`: +# The `chars` field writes the specified string to the terminal. This makes +# it possible to pass escape sequences. +# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run +# the command `showkey -a` outside of tmux. +# +# Values for `action`: +# - Paste +# - PasteSelection +# - Copy +# - IncreaseFontSize +# - DecreaseFontSize +# - ResetFontSize +# - ScrollPageUp +# - ScrollPageDown +# - ScrollToTop +# - ScrollToBottom +# - ClearHistory +# - Hide +# - Quit +# +# Values for `command`: +# The `command` field must be a map containing a `program` string and +# an `args` array of command line parameter strings. +# +# Example: +# `command: { program: "alacritty", args: ["-e", "vttest"] }` +# +# Values for `mode`: +# - ~AppCursor +# - AppCursor +# - ~AppKeypad +# - AppKeypad key_bindings: - { key: V, mods: Command, action: Paste } - { key: C, mods: Command, action: Copy } From 9b694fcc547f664ed0fecdd5c84c067d7d3e7f14 Mon Sep 17 00:00:00 2001 From: trimental Date: Mon, 24 Sep 2018 00:21:47 +0800 Subject: [PATCH 23/23] Fix mesa rendering outside window borders on wayland The mesa workaround has lead to some issues with rendering on Wayland. To resolve this problem, the mesa workaround has been restructured in a way which still allows clearing the screen before rendering without killing performance with the mesa driver. The performance is identical to the master brach and there have been no recorded regressions. --- CHANGELOG.md | 1 + src/display.rs | 52 +++++++++++++++++++++++--------------------------- src/main.rs | 15 ++++++++------- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c251ec61..38ead29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Clear screen properly before rendering of content to prevent various graphical glitches - Fix build failure on 32-bit systems - Windows started as unfocused now show the hollow cursor if the setting is enabled diff --git a/src/display.rs b/src/display.rs index 4c3ffed1..928434d8 100644 --- a/src/display.rs +++ b/src/display.rs @@ -25,6 +25,7 @@ use font::{self, Rasterize}; use meter::Meter; use renderer::{self, GlyphCache, QuadRenderer}; use term::{Term, SizeInfo}; +use sync::FairMutex; use window::{self, Size, Pixels, Window, SetInnerSize}; @@ -97,7 +98,6 @@ pub struct Display { meter: Meter, font_size: font::Size, size_info: SizeInfo, - last_background_color: Rgb, } /// Can wakeup the render loop from other threads @@ -210,7 +210,6 @@ impl Display { meter: Meter::new(), font_size: font::Size::new(0.), size_info, - last_background_color: background_color, }) } @@ -325,7 +324,29 @@ impl Display { /// A reference to Term whose state is being drawn must be provided. /// /// This call may block if vsync is enabled - pub fn draw(&mut self, mut terminal: MutexGuard, config: &Config) { + pub fn draw(&mut self, terminal: &FairMutex, config: &Config) { + let terminal_locked = terminal.lock(); + let size_info = *terminal_locked.size_info(); + let visual_bell_intensity = terminal_locked.visual_bell.intensity(); + let background_color = terminal_locked.background_color(); + + // Clear when terminal mutex isn't held. Mesa for + // some reason takes a long time to call glClear(). The driver descends + // into xcb_connect_to_fd() which ends up calling __poll_nocancel() + // which blocks for a while. + // + // By keeping this outside of the critical region, the Mesa bug is + // worked around to some extent. Since this doesn't actually address the + // issue of glClear being slow, less time is available for input + // handling and rendering. + drop(terminal_locked); + + self.renderer.with_api(config, &size_info, visual_bell_intensity, |api| { + api.clear(background_color); + }); + + let mut terminal = terminal.lock(); + // Clear dirty flag terminal.dirty = !terminal.visual_bell.completed(); @@ -345,13 +366,6 @@ impl Display { } } - let size_info = *terminal.size_info(); - let visual_bell_intensity = terminal.visual_bell.intensity(); - - let background_color = terminal.background_color(); - let background_color_changed = background_color != self.last_background_color; - self.last_background_color = background_color; - { let glyph_cache = &mut self.glyph_cache; @@ -366,11 +380,6 @@ impl Display { // mutable borrow let window_focused = self.window.is_focused; self.renderer.with_api(config, &size_info, visual_bell_intensity, |mut api| { - // Clear screen to update whole background with new color - if background_color_changed { - api.clear(background_color); - } - // Draw the grid api.render_cells( terminal.renderable_cells(config, window_focused), @@ -394,19 +403,6 @@ impl Display { self.window .swap_buffers() .expect("swap buffers"); - - // Clear after swap_buffers when terminal mutex isn't held. Mesa for - // some reason takes a long time to call glClear(). The driver descends - // into xcb_connect_to_fd() which ends up calling __poll_nocancel() - // which blocks for a while. - // - // By keeping this outside of the critical region, the Mesa bug is - // worked around to some extent. Since this doesn't actually address the - // issue of glClear being slow, less time is available for input - // handling and rendering. - self.renderer.with_api(config, &size_info, visual_bell_intensity, |api| { - api.clear(background_color); - }); } pub fn get_window_id(&self) -> Option { diff --git a/src/main.rs b/src/main.rs index 0888c9b5..03a372df 100644 --- a/src/main.rs +++ b/src/main.rs @@ -173,7 +173,7 @@ fn run(mut config: Config, options: &cli::Options) -> Result<(), Box> { // Main display loop loop { // Process input and window events - let mut terminal = processor.process_events(&terminal, display.window()); + let mut terminal_lock = processor.process_events(&terminal, display.window()); // Handle config reloads if let Some(new_config) = config_monitor @@ -183,22 +183,23 @@ fn run(mut config: Config, options: &cli::Options) -> Result<(), Box> { config = new_config.update_dynamic_title(options); display.update_config(&config); processor.update_config(&config); - terminal.update_config(&config); - terminal.dirty = true; + terminal_lock.update_config(&config); + terminal_lock.dirty = true; } // Maybe draw the terminal - if terminal.needs_draw() { + if terminal_lock.needs_draw() { // Try to update the position of the input method editor - display.update_ime_position(&terminal); + display.update_ime_position(&terminal_lock); // Handle pending resize events // // The second argument is a list of types that want to be notified // of display size changes. - display.handle_resize(&mut terminal, &config, &mut [&mut pty, &mut processor]); + display.handle_resize(&mut terminal_lock, &config, &mut [&mut pty, &mut processor]); + drop(terminal_lock); // Draw the current state of the terminal - display.draw(terminal, &config); + display.draw(&terminal, &config); } // Begin shutdown if the flag was raised.