git.lucas.co / cce-display-manager
login greeter
git clone https://git.lucas.co/cce-display-manager.git

commit51e78d46105933fc42cac8b4898c785c7503c243
parent6a1188d6ab
authorLucas Galante <[email protected]>
date2026-05-28 20:49
fix: respect scale override in scale_factor_changed

 src/main.rs | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main.rs b/src/main.rs
index 0cdc906..9efc690 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -658,9 +658,11 @@ impl CompositorHandler for AppState {
         surface: &wl_surface::WlSurface,
         scale_factor: i32,
     ) {
-        surface.set_buffer_scale(scale_factor);
+        let sys_config = load_system_config();
+        let scale = sys_config.scale.unwrap_or(scale_factor as f64);
+        surface.set_buffer_scale(scale as i32);
         if let Some(state) = &mut self.state {
-            state.scale = scale_factor as f64;
+            state.scale = scale;
             let pw = (state.width as f64 * state.scale) as u32;
             let ph = (state.height as f64 * state.scale) as u32;
             state.resize(pw, ph);
@@ -1133,9 +1135,13 @@ fn run_greeter() {
     event_queue.roundtrip(&mut app).unwrap();
 
     let sys_config = load_system_config();
+    eprintln!("[clear-display-manager] Loaded system config: {:?}", sys_config);
     let scale = sys_config.scale.unwrap_or_else(|| {
-        clear_ui::wayland::detect_scale_factor(&app.output_state)
+        let detected = clear_ui::wayland::detect_scale_factor(&app.output_state);
+        eprintln!("[clear-display-manager] Detected scale factor from Wayland: {}", detected);
+        detected
     });
+    eprintln!("[clear-display-manager] Final resolved scale factor: {}", scale);
     let surface = app.compositor_state.create_surface(&qh);
     surface.set_buffer_scale(scale as i32);