Эх сурвалжийг харах

Rudimentary multimonitor support

Thomas Dy 9 жил өмнө
parent
commit
429e7e093e
1 өөрчлөгдсөн 16 нэмэгдсэн , 2 устгасан
  1. 16 2
      src/external.rs

+ 16 - 2
src/external.rs

@@ -22,6 +22,8 @@ pub fn external(tx: &Channel, _cfg: &Config) {
 
 fn parse_bspwm(line: &str) -> String {
     let mut out = String::new();
+    let mut monitor_count = 0;
+    let mut monitor_selected = false;
 
     let elems = line.split(':');
     for elem in elems {
@@ -29,10 +31,22 @@ fn parse_bspwm(line: &str) -> String {
         let kind = chars.next().unwrap();
         let name = chars.collect::<String>();
 
-        if kind != 'M' && kind != 'm' && kind != 'L' {
+        if kind == 'M' || kind == 'm' {
+            out = format!("{}%{{S{num}}}", out, num = monitor_count);
+            monitor_count += 1;
+            monitor_selected = kind.is_uppercase();
+        }
+        else if kind == 'L' {
+        }
+        else {
             let desktop = format!("%{{A:w{name}:}} {name} %{{A}}", name = name);
             if kind.is_uppercase() {
-                out = format!("{}%{{B#666666}}{}%{{B-}}", out, desktop);
+                if monitor_selected {
+                    out = format!("{}%{{B#66CC66}}{}%{{B-}}", out, desktop);
+                }
+                else {
+                    out = format!("{}%{{B#666666}}{}%{{B-}}", out, desktop);
+                }
             }
             else if kind == 'U' || kind == 'u' {
                 out = format!("{}%{{B#CC0033}}{}%{{B-}}", out, desktop);