aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/config')
-rw-r--r--alacritty/src/config/window.rs70
1 files changed, 38 insertions, 32 deletions
diff --git a/alacritty/src/config/window.rs b/alacritty/src/config/window.rs
index f866e180..d2e5da68 100644
--- a/alacritty/src/config/window.rs
+++ b/alacritty/src/config/window.rs
@@ -15,26 +15,14 @@ pub const DEFAULT_NAME: &str = "Alacritty";
#[serde(default)]
#[derive(Deserialize, Debug, Clone, PartialEq, Eq)]
pub struct WindowConfig {
- /// Initial dimensions.
- #[serde(deserialize_with = "failure_default")]
- pub dimensions: Dimensions,
-
/// Initial position.
#[serde(deserialize_with = "failure_default")]
pub position: Option<Delta<i32>>,
- /// Pixel padding.
- #[serde(deserialize_with = "failure_default")]
- pub padding: Delta<u8>,
-
/// Draw the window with title bar / borders.
#[serde(deserialize_with = "failure_default")]
pub decorations: Decorations,
- /// Spread out additional padding evenly.
- #[serde(deserialize_with = "failure_default")]
- pub dynamic_padding: bool,
-
/// Startup mode.
#[serde(deserialize_with = "failure_default")]
pub startup_mode: StartupMode,
@@ -55,9 +43,21 @@ pub struct WindowConfig {
#[serde(deserialize_with = "option_explicit_none")]
pub gtk_theme_variant: Option<String>,
+ /// Spread out additional padding evenly.
+ #[serde(deserialize_with = "failure_default")]
+ pub dynamic_padding: bool,
+
+ /// Pixel padding.
+ #[serde(deserialize_with = "failure_default")]
+ padding: Delta<u8>,
+
/// Use dynamic title.
#[serde(default, deserialize_with = "failure_default")]
dynamic_title: DefaultTrueBool,
+
+ /// Initial dimensions.
+ #[serde(deserialize_with = "failure_default")]
+ dimensions: Dimensions,
}
pub fn default_title() -> String {
@@ -74,6 +74,30 @@ impl WindowConfig {
pub fn set_dynamic_title(&mut self, dynamic_title: bool) {
self.dynamic_title.0 = dynamic_title;
}
+
+ #[inline]
+ pub fn set_dimensions(&mut self, dimensions: Dimensions) {
+ self.dimensions = dimensions;
+ }
+
+ #[inline]
+ pub fn dimensions(&self) -> Option<Dimensions> {
+ if self.dimensions.columns.0 != 0
+ && self.dimensions.lines.0 != 0
+ && self.startup_mode != StartupMode::Maximized
+ {
+ Some(self.dimensions)
+ } else {
+ None
+ }
+ }
+
+ #[inline]
+ pub fn padding(&self, dpr: f64) -> (f32, f32) {
+ let padding_x = (f32::from(self.padding.x) * dpr as f32).floor();
+ let padding_y = (f32::from(self.padding.y) * dpr as f32).floor();
+ (padding_x, padding_y)
+ }
}
impl Default for WindowConfig {
@@ -137,29 +161,11 @@ impl Default for Decorations {
pub struct Dimensions {
/// Window width in character columns.
#[serde(deserialize_with = "failure_default")]
- columns: Column,
+ pub columns: Column,
/// Window Height in character lines.
#[serde(deserialize_with = "failure_default")]
- lines: Line,
-}
-
-impl Dimensions {
- pub fn new(columns: Column, lines: Line) -> Self {
- Dimensions { columns, lines }
- }
-
- /// Get lines.
- #[inline]
- pub fn lines_u32(&self) -> u32 {
- self.lines.0 as u32
- }
-
- /// Get columns.
- #[inline]
- pub fn columns_u32(&self) -> u32 {
- self.columns.0 as u32
- }
+ pub lines: Line,
}
/// Window class hint.