dotfiles/de/home/.config/eww/modules/bar/workspaces.yuck
2026-01-14 00:11:02 -08:00

50 lines
2.7 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 ${((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == 'Work') ? 'profile-work' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == '20') ? 'profile-school' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == '10') ? 'profile-development' : ((jq(sway_info,'workspace_info[] | select(.is_focused) | .profile_name','r') == '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.position == 'l') && !entry.is_focused) ? true : false}
:content {((entry.position == 'l') && !entry.is_focused) ? "(workspace :ws entry :side 'left')" : "(box :visible false)"}))))
(box
:class "ws-center ${wsreveal}"
(for entry in array
(literal
:visible {entry.is_focused ? true : false}
:content {entry.is_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.position == 'r') && !entry.is_focused) ? true : false}
:content {((entry.position == 'r') && !entry.is_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')}))))