Evie Litherland-Smith
be1d5fa798
Save reference for later Enable upower daemon and add simple bar with the essentials for now, TODO more later
71 lines
2.2 KiB
Plaintext
Executable file
71 lines
2.2 KiB
Plaintext
Executable file
export HYPRLAND_INSTANCE_SIGNATURE=$(ls /tmp/hypr/ | sort | tail -n 1)
|
|
colors=("#f38ba8" "#a6e3a1" "#89b4fa" "#fab387")
|
|
dimmed=("#794554" "#537150" "#445a7d" "#7d5943")
|
|
empty="#302d41"
|
|
focusedws=1
|
|
declare -A o=([1]=0 [2]=0 [3]=0 [4]=0 [5]=0 [6]=0 [7]=0 [8]=0 [9]=0 [10]=0)
|
|
declare -A monitormap
|
|
declare -A workspaces
|
|
# sets color
|
|
status() {
|
|
if [[ ''${o[$1]} -eq 1 ]]; then
|
|
mon=''${monitormap[''${workspaces[$1]}]}
|
|
if [[ $focusedws -eq $1 ]]; then
|
|
echo -n "color: ''${colors[$mon]};"
|
|
else
|
|
echo -n "color: ''${dimmed[$mon]};"
|
|
fi
|
|
else
|
|
echo -n "color: $empty;"
|
|
fi
|
|
}
|
|
# handles workspace create/destroy
|
|
workspace_event() {
|
|
o[$1]=$2
|
|
while read -r k v; do workspaces[$k]=$v; done < <(hyprctl -j workspaces | jq -r '.[]|"\(.id) \(.monitor)"')
|
|
}
|
|
# handles monitor (dis)connects
|
|
monitor_event() {
|
|
while read -r k v; do monitormap[$k]=$v; done < <(hyprctl -j monitors | jq -r '.[]|"\(.name) \(.id) "')
|
|
}
|
|
# generates the eww widget
|
|
generate() {
|
|
echo -n '(eventbox :onscroll "echo {} | sed -e \"s/up/-1/g\" -e \"s/down/+1/g\" | xargs hyprctl dispatch workspace" (box :orientation "h" :class "module" :spacing 5 :space-evenly "true" '
|
|
for i in {1..10}; do
|
|
echo -n "(button :onclick \"hyprctl dispatch workspace $i\" :class \"ws\" :style \"$(status $i)\" \"●\") "
|
|
done
|
|
echo '))'
|
|
}
|
|
# setup
|
|
# add monitors
|
|
monitor_event
|
|
# add workspaces
|
|
workspace_event 1 1
|
|
# check occupied workspaces
|
|
for num in ''${!workspaces[@]}; do
|
|
o[$num]=1
|
|
done
|
|
# generate initial widget
|
|
generate
|
|
# main loop
|
|
socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r line; do
|
|
case ''${line%>>*} in
|
|
"workspace")
|
|
focusedws=''${line#*>>}
|
|
;;
|
|
"activemon")
|
|
focusedws=''${line#*,}
|
|
;;
|
|
"createworkspace")
|
|
workspace_event ''${line#*>>} 1
|
|
;;
|
|
"destroyworkspace")
|
|
workspace_event ''${line#*>>} 0
|
|
;;
|
|
"monitor"*)
|
|
monitor_event
|
|
;;
|
|
esac
|
|
generate
|
|
done
|