diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2018-11-15 19:57:15 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-15 19:57:15 +0000 |
commit | d68ecb0deff8b966a0c7d09203d14bfdf5ccd8ad (patch) | |
tree | 4b0326cf4ea450d6870d2604f464b8ecfd354c9c | |
parent | ba76ac8661539727c96362d501590d4a18936b39 (diff) | |
download | alacritty-d68ecb0deff8b966a0c7d09203d14bfdf5ccd8ad.tar.gz alacritty-d68ecb0deff8b966a0c7d09203d14bfdf5ccd8ad.zip |
Add option for dynamic padding (#1780)
This adds the `window.dynamic_padding` option which allows disabling the
dynamic spread of additional padding around the grid's content.
Based on the feedback I've gotten so far and the fact that most other
terminal emulators do not seem to center the content inside themselves,
I've changed the default configuration option to disable centering of the grid.
This fixes #1778.
-rw-r--r-- | CHANGELOG.md | 10 | ||||
-rw-r--r-- | alacritty.yml | 3 | ||||
-rw-r--r-- | alacritty_macos.yml | 3 | ||||
-rw-r--r-- | alacritty_windows.yml | 3 | ||||
-rw-r--r-- | src/config.rs | 9 | ||||
-rw-r--r-- | src/display.rs | 17 |
6 files changed, 37 insertions, 8 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 675d5d9a..1c8cbbc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added + +- Option for evenly spreading extra padding around the terminal (`window.dynamic_padding`) + +### Changed + +- Extra padding is not evenly spread around the terminal by default anymore + ## Version 0.2.3 ### Fixed diff --git a/alacritty.yml b/alacritty.yml index 4a62b920..f66269a1 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -29,6 +29,9 @@ window: x: 2 y: 2 + # Spread additional padding evenly around the terminal content. + dynamic_padding: false + # Window decorations # # Values for `decorations`: diff --git a/alacritty_macos.yml b/alacritty_macos.yml index e5f622b3..59f2ccb0 100644 --- a/alacritty_macos.yml +++ b/alacritty_macos.yml @@ -29,6 +29,9 @@ window: x: 2 y: 2 + # Spread additional padding evenly around the terminal content. + dynamic_padding: false + # Window decorations # # Available values: diff --git a/alacritty_windows.yml b/alacritty_windows.yml index 1da098f7..debf06ff 100644 --- a/alacritty_windows.yml +++ b/alacritty_windows.yml @@ -29,6 +29,9 @@ window: x: 2 y: 2 + # Spread additional padding evenly around the terminal content. + dynamic_padding: false + # Window decorations # # Values for `decorations`: diff --git a/src/config.rs b/src/config.rs index b638ea43..ee30c085 100644 --- a/src/config.rs +++ b/src/config.rs @@ -376,6 +376,10 @@ pub struct WindowConfig { /// Draw the window with title bar / borders #[serde(default)] decorations: Decorations, + + /// Spread out additional padding evenly + #[serde(default, deserialize_with = "failure_default")] + dynamic_padding: bool, } fn default_padding() -> Delta<u8> { @@ -398,6 +402,10 @@ impl WindowConfig { pub fn decorations(&self) -> Decorations { self.decorations } + + pub fn dynamic_padding(&self) -> bool { + self.dynamic_padding + } } impl Default for WindowConfig { @@ -406,6 +414,7 @@ impl Default for WindowConfig { dimensions: Default::default(), padding: default_padding(), decorations: Default::default(), + dynamic_padding: false, } } } diff --git a/src/display.rs b/src/display.rs index a664b4a2..3fe5fbc4 100644 --- a/src/display.rs +++ b/src/display.rs @@ -152,22 +152,19 @@ impl Display { let dimensions = options.dimensions() .unwrap_or_else(|| config.dimensions()); - let mut padding_x = f64::from(config.padding().x) * dpr; - let mut padding_y = f64::from(config.padding().y) * dpr; + let mut padding_x = (f64::from(config.padding().x) * dpr).floor(); + let mut padding_y = (f64::from(config.padding().y) * dpr).floor(); if dimensions.columns_u32() > 0 && dimensions.lines_u32() > 0 { // Calculate new size based on cols/lines specified in config let width = cell_width as u32 * dimensions.columns_u32(); let height = cell_height as u32 * dimensions.lines_u32(); - padding_x = padding_x.floor(); - padding_y = padding_y.floor(); - viewport_size = PhysicalSize::new( f64::from(width) + 2. * padding_x, f64::from(height) + 2. * padding_y, ); - } else { + } else if config.window().dynamic_padding() { // Make sure additional padding is spread evenly let cw = f64::from(cell_width); let ch = f64::from(cell_height); @@ -331,8 +328,12 @@ impl Display { let mut padding_x = f32::from(config.padding().x) * dpr as f32; let mut padding_y = f32::from(config.padding().y) * dpr as f32; - padding_x = (padding_x + ((width - 2. * padding_x) % cell_width) / 2.).floor(); - padding_y = (padding_y + ((height - 2. * padding_y) % cell_height) / 2.).floor(); + + if config.window().dynamic_padding() { + padding_x = (padding_x + ((width - 2. * padding_x) % cell_width) / 2.).floor(); + padding_y = (padding_y + ((height - 2. * padding_y) % cell_height) / 2.).floor(); + } + self.size_info.padding_x = padding_x; self.size_info.padding_y = padding_y; |