aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Duerr <chrisduerr@users.noreply.github.com>2018-11-15 19:57:15 +0000
committerGitHub <noreply@github.com>2018-11-15 19:57:15 +0000
commitd68ecb0deff8b966a0c7d09203d14bfdf5ccd8ad (patch)
tree4b0326cf4ea450d6870d2604f464b8ecfd354c9c
parentba76ac8661539727c96362d501590d4a18936b39 (diff)
downloadalacritty-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.md10
-rw-r--r--alacritty.yml3
-rw-r--r--alacritty_macos.yml3
-rw-r--r--alacritty_windows.yml3
-rw-r--r--src/config.rs9
-rw-r--r--src/display.rs17
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;