|
@@ -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);
|