git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commit600533930ae108c81a2fcb1f2bf0977b032b31ce
parentecc9fc2685
authorLucas Galante <[email protected]>
date2026-06-15 08:28
Fix border color parsing bug by replicating color channel bytes to 32-bit format

 src/server/config.rs         | 16 ++++++++--------
 src/server/window_manager.rs |  6 +++---
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/server/config.rs b/src/server/config.rs
index 2851851..565590e 100644
--- a/src/server/config.rs
+++ b/src/server/config.rs
@@ -570,16 +570,16 @@ pub fn parse_config(path: &str, state: &mut crate::window_manager::WindowManager
     state.layout.floating_border_width = config.layout.floating_border_width as i32;
     
     let border_color_val = parse_hex_color(&config.layout.border_color);
-    state.layout.border_r = (border_color_val >> 16) & 0xFF;
-    state.layout.border_g = (border_color_val >> 8) & 0xFF;
-    state.layout.border_b = border_color_val & 0xFF;
-    state.layout.border_a = 255;
+    state.layout.border_r = ((border_color_val >> 16) & 0xFF) * 0x01010101;
+    state.layout.border_g = ((border_color_val >> 8) & 0xFF) * 0x01010101;
+    state.layout.border_b = (border_color_val & 0xFF) * 0x01010101;
+    state.layout.border_a = 0xFFFFFFFF;
 
     let background_color_val = parse_hex_color(&config.layout.background_color);
-    state.layout.background_r = (background_color_val >> 16) & 0xFF;
-    state.layout.background_g = (background_color_val >> 8) & 0xFF;
-    state.layout.background_b = background_color_val & 0xFF;
-    state.layout.background_a = 255;
+    state.layout.background_r = ((background_color_val >> 16) & 0xFF) * 0x01010101;
+    state.layout.background_g = ((background_color_val >> 8) & 0xFF) * 0x01010101;
+    state.layout.background_b = (background_color_val & 0xFF) * 0x01010101;
+    state.layout.background_a = 0xFFFFFFFF;
 
     state.layout.border_font_size = config.layout.border_font_size as i32;
     state.layout.transition_duration = config.layout.transition_duration as i32;
diff --git a/src/server/window_manager.rs b/src/server/window_manager.rs
index 3ef7482..306b6f3 100644
--- a/src/server/window_manager.rs
+++ b/src/server/window_manager.rs
@@ -1503,9 +1503,9 @@ impl WindowManager {
                     "transition_duration" => { if let Ok(v) = val.parse::<i32>() { self.layout.transition_duration = v; } }
                     "border_color" => {
                         let border_color_val = crate::config::parse_hex_color(val);
-                        self.layout.border_r = (border_color_val >> 16) & 0xFF;
-                        self.layout.border_g = (border_color_val >> 8) & 0xFF;
-                        self.layout.border_b = border_color_val & 0xFF;
+                        self.layout.border_r = ((border_color_val >> 16) & 0xFF) * 0x01010101;
+                        self.layout.border_g = ((border_color_val >> 8) & 0xFF) * 0x01010101;
+                        self.layout.border_b = (border_color_val & 0xFF) * 0x01010101;
                     }
                     "side_panel_width" => { if let Ok(v) = val.parse::<i32>() { self.layout.side_panel_width = v; } }
                     "side_panel_behavior" => { self.layout.side_panel_behavior = val.to_string(); }