From 5123a3eda25957e1efe4e0b280e3c25e414a2b87 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 28 Feb 2024 13:42:48 +0100 Subject: eww, Hyprland: Fix various issues related to multimonitor --- .config/eww/eww.yuck | 4 ++-- .config/eww/scripts/active-workspace-listener | 2 +- .config/eww/scripts/workspace-list-listener | 25 +++++++++++-------------- 3 files changed, 14 insertions(+), 17 deletions(-) (limited to '.config/eww') diff --git a/.config/eww/eww.yuck b/.config/eww/eww.yuck index b50fcc0..b1b02ca 100644 --- a/.config/eww/eww.yuck +++ b/.config/eww/eww.yuck @@ -2,7 +2,7 @@ (deflisten active-workspace `stdbuf -oL scripts/active-workspace-listener`) -(deflisten workspace-list :initial '[1]' +(deflisten workspace-list :initial '[[1]]' `stdbuf -oL scripts/workspace-list-listener`) (deflisten datetime @@ -73,7 +73,7 @@ (defwidget workspaces [monitor] (box :class "workspaces" :space-evenly false - (for id in workspace-list + (for id in {workspace-list[monitor]} (button :class {active-workspace[monitor] == id ? "active" : ""} :onclick `hyprctl dispatch workspace ${id}` id)))) diff --git a/.config/eww/scripts/active-workspace-listener b/.config/eww/scripts/active-workspace-listener index 3f57ec5..3c47e87 100755 --- a/.config/eww/scripts/active-workspace-listener +++ b/.config/eww/scripts/active-workspace-listener @@ -11,4 +11,4 @@ readonly IPC=/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock hyprctl -j monitors esac done -} | jq -cr '[.[] | .activeWorkspace.name]' +} | jq -cr '[.[] | .activeWorkspace.id % 10]' diff --git a/.config/eww/scripts/workspace-list-listener b/.config/eww/scripts/workspace-list-listener index 9ad35ca..5ab5c19 100755 --- a/.config/eww/scripts/workspace-list-listener +++ b/.config/eww/scripts/workspace-list-listener @@ -2,20 +2,17 @@ readonly IPC=/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock -ws="`hyprctl -j workspaces | jq -r 'sort_by(.id) | .[] | .name'`" -jo -a $ws +hyptctl -j workspaces | jq -cr ' + [.[].id] + | group_by(. / 10 | floor) + | [.[] | map(. % 10)] +' socat -u UNIX-CONNECT:"$IPC" - \ | stdbuf -oL grep -E '^(create|destroy)workspace>>' \ - | while IFS='>>' read -r e _ n - do - case "$e" in - c*) - ws="`printf '%s\n%s\n' "$ws" $n | sort -n`" - ;; - d*) - ws="`echo "$ws" | grep -v "^$n$"`" - ;; - esac - jo -a $ws - done + | while read -r _; do hyprctl -j workspaces; done \ + | jq -cr ' + [.[].id] + | group_by(. / 10 | floor) + | [.[] | map(. % 10) | sort_by(.)] + ' -- cgit v1.2.3