git.lucas.co / cce-status-interface
status bar
git clone https://git.lucas.co/cce-status-interface.git

commit2d8c5a5bda348c7e6ddf656a3c7173bcf3e5817d
parent84ea5f7f9d
authorLucas Galante <[email protected]>
date2026-06-29 19:38
Extract font size from status_font config key if present to support custom status bar font size

 src/main.rs | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/main.rs b/src/main.rs
index 9b71802..1a39b3a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2806,6 +2806,12 @@ fn parse_srgb_color_from_key(content: &str, key: &str) -> Option<[f32; 4]> {
 }
 
 fn read_status_font_from_config() -> String {
+    let content = std::fs::read_to_string("/home/lsgalante/.config/cce/config.kdl").unwrap_or_default();
+    let val = parse_json(&content);
+    if let Some(font_str) = json_find_key(&val, "status_font").and_then(|v| v.as_str()) {
+        return font_str.to_string();
+    }
+
     let font_conf_path = "/home/lsgalante/.config/fontconfig/fonts.conf";
     if let Ok(content) = std::fs::read_to_string(font_conf_path) {
         if let Some(font) = parse_font_for_alias(&content, "status-interface") {
@@ -2824,6 +2830,14 @@ fn read_status_height_from_config() -> f32 {
 fn read_status_font_size_from_config() -> f32 {
     let content = std::fs::read_to_string("/home/lsgalante/.config/cce/config.kdl").unwrap_or_default();
     let val = parse_json(&content);
+    
+    if let Some(font_str) = json_find_key(&val, "status_font").and_then(|v| v.as_str()) {
+        let (_, parsed_size) = cce_ui::layout::parse_font_string(font_str);
+        if let Some(size) = parsed_size {
+            return size;
+        }
+    }
+    
     json_find_key(&val, "status_font_size").and_then(|v| v.as_f64()).map(|n| n as f32).unwrap_or(11.0)
 }
 
@@ -2976,7 +2990,7 @@ mod tests {
     fn test_status_config() {
         let content = r##"
 style {
-    status normal_color=(color)"#ccccd8" background_color=(color)"#151520e6" background_blur=(f64)0.8
+    status normal_color=(color)"#ccccd8" background_color=(color)"#151520e6" background_blur=(f64)0.8 font="Berkeley Mono 14"
 }
 "##;
         let val = parse_json(content);
@@ -2991,5 +3005,10 @@ style {
         println!("blur_val = {:?}", blur_val);
         assert!(blur_val.is_some());
         assert_eq!(blur_val.unwrap().as_f64().unwrap(), 0.8);
+
+        let font_val = json_find_key(&val, "status_font");
+        println!("font_val = {:?}", font_val);
+        assert!(font_val.is_some());
+        assert_eq!(font_val.unwrap().as_str().unwrap(), "Berkeley Mono 14");
     }
 }