dotfiles/de/home/.config/eww/modules/bar/workspaces.yuck
2025-09-01 12:30:01 -07:00

50 lines
2.4 KiB
Text

(deflisten activeWorkspace :initial '1'
'scripts/bar/active-workspace')
(deflisten workspacesArray :initial '[{"name": "placeholder","focused":true,"num":0}]'
'scripts/bar/workspaces')
(defvar wsreveal false)
(defwidget workspaces [array]
(eventbox
:onhover "${EWW_CMD} update wsreveal=true"
:onhoverlost "${EWW_CMD} update wsreveal=false"
(box :class "workspaces ${((activeWorkspace > '30') ? 'profile-work' : ((activeWorkspace > '20') ? 'profile-school' : ((activeWorkspace > '10') ? 'profile-development' : ((activeWorkspace > '0') ? 'profile-personal' : ''))))}"
:orientation "h"
:space-evenly false
:halign "start"
(revealer
:class "ws-left"
:reveal wsreveal
:transition "slideleft"
:duration "500ms"
(box
(for entry in array
(literal
:visible {((entry.num <= activeWorkspace) && !entry.focused) ? true : false}
:content {((entry.num <= activeWorkspace) && !entry.focused) ? "(workspace :ws entry :side 'left')" : "(box :visible false)"}))))
(box
:class "ws-center ${wsreveal}"
(for entry in array
(literal
:visible {entry.focused ? true : false}
:content {entry.focused ? "(workspace :ws entry :side 'center' :lastws ${jq(array,'.[-1].num')})" : "(box :visible false)"})))
(revealer
:class "ws-right"
:reveal wsreveal
:transition "slideright"
:duration "500ms"
(box
(for entry in array
(literal
:visible {((entry.num >= activeWorkspace) && !entry.focused) ? true : false}
:content {((entry.num >= activeWorkspace) && !entry.focused) ? "(workspace :ws entry :side 'right')" : "(box :visible false)"})))))))
(defwidget workspace [ws side ?lastws ?firstws]
(button :onclick `swaymsg workspace "${ws.name}"`
:class '${side} ${ws.num == lastws ? "last-workspace" : (ws.num == firstws ? "first-workspace" : "middle-workspace")} ${((ws.num > '30') ? 'profile-work' : ((ws.num > '20') ? 'profile-school' : ((ws.num > '10') ? 'profile-development' : ((ws.num > '0') ? 'profile-personal' : ''))))}'
(box
'${replace(ws.name,".*:","")}'
(label
:class "workspace-number"
:text {jq(captures(ws.num, '[0-9]$'),'.[].[]','r')}))))