From 7381e5df379aedf89b999f20f16b09835340b4c4 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sun, 10 Mar 2024 17:42:06 +0100 Subject: [PATCH] cursor: respect XCURSOR_SIZE --- src/cursor.rs | 11 +++++++++++ src/ifs/wl_seat.rs | 8 +++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/cursor.rs b/src/cursor.rs index afcab31b..57bb62b0 100644 --- a/src/cursor.rs +++ b/src/cursor.rs @@ -16,6 +16,7 @@ use { byteorder::{LittleEndian, ReadBytesExt}, isnt::std_1::primitive::IsntSliceExt, num_derive::FromPrimitive, + once_cell::sync::Lazy, std::{ cell::Cell, convert::TryInto, @@ -38,10 +39,20 @@ const XCURSOR_PATH_DEFAULT: &[u8] = b"~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons"; const XCURSOR_PATH: &str = "XCURSOR_PATH"; const XCURSOR_THEME: &str = "XCURSOR_THEME"; +const XCURSOR_SIZE: &str = "XCURSOR_SIZE"; const HOME: &str = "HOME"; const HEADER_SIZE: u32 = 16; +pub static DEFAULT_CURSOR_SIZE: Lazy = Lazy::new(|| { + if let Ok(size) = env::var(XCURSOR_SIZE) { + if let Ok(val) = size.parse() { + return val; + } + } + 24 +}); + pub trait Cursor { fn render(&self, renderer: &mut Renderer, x: Fixed, y: Fixed); fn render_hardware_cursor(&self, renderer: &mut Renderer); diff --git a/src/ifs/wl_seat.rs b/src/ifs/wl_seat.rs index be0d1c87..5c036ed9 100644 --- a/src/ifs/wl_seat.rs +++ b/src/ifs/wl_seat.rs @@ -13,7 +13,7 @@ use { crate::{ async_engine::SpawnedFuture, client::{Client, ClientError, ClientId}, - cursor::{Cursor, KnownCursor}, + cursor::{Cursor, KnownCursor, DEFAULT_CURSOR_SIZE}, fixed::Fixed, globals::{Global, GlobalName}, ifs::{ @@ -166,8 +166,6 @@ pub struct WlSeatGlobal { const CHANGE_CURSOR_MOVED: u32 = 1 << 0; const CHANGE_TREE: u32 = 1 << 1; -const DEFAULT_CURSOR_SIZE: u32 = 16; - impl Drop for WlSeatGlobal { fn drop(&mut self) { self.state.remove_cursor_size(self.cursor_size.get()); @@ -212,13 +210,13 @@ impl WlSeatGlobal { output: CloneCell::new(state.dummy_output.get().unwrap()), desired_known_cursor: Cell::new(None), changes: NumCell::new(CHANGE_CURSOR_MOVED | CHANGE_TREE), - cursor_size: Cell::new(DEFAULT_CURSOR_SIZE), + cursor_size: Cell::new(*DEFAULT_CURSOR_SIZE), hardware_cursor: Cell::new(state.globals.seats.len() == 0), constraint: Default::default(), idle_notifications: Default::default(), last_input_usec: Cell::new(now_usec()), }); - state.add_cursor_size(DEFAULT_CURSOR_SIZE); + state.add_cursor_size(*DEFAULT_CURSOR_SIZE); let seat = slf.clone(); let future = state.eng.spawn(async move { loop {