79 lines
2.5 KiB
Common Lisp
79 lines
2.5 KiB
Common Lisp
;; -*-lisp-*-
|
|
(deflisten sway--data :initial '{"mode": "default"}'
|
|
`sway_listen`)
|
|
|
|
(defvar hypr--data '{}')
|
|
|
|
(defwidget sway--workspace [ws]
|
|
(button :onclick "swaymsg workspace ${ws['index']}"
|
|
(circular-progress
|
|
:class 'indicator-circle sway--ws ${ws.active ? "sway--active" : ""} ${ws.visible ? "sway--visible" : ""} ${ws.focused ? "sway--focused" : ""} ${ws.alerted ? "sway--alerted" : ""}'
|
|
:value 100
|
|
:start-at 0
|
|
:clockwise true
|
|
:width 16
|
|
:thickness 1
|
|
(box :class 'fill' ))))
|
|
|
|
(defwidget hypr--workspace [ws]
|
|
(button :onclick "hyprmsg dispatch workspace ${ws['index']}"
|
|
(circular-progress
|
|
:class 'indicator-circle sway--ws ${ws.active ? "sway--active" : ""} ${ws.visible ? "sway--visible" : ""} ${ws.focused ? "sway--focused": ""}'
|
|
:value 100
|
|
:start-at 0
|
|
:clockwise true
|
|
:width 15
|
|
:thickness 1
|
|
(box :class 'fill' :visible {ws.focused}))))
|
|
|
|
(defwidget sway-mode []
|
|
(box :orientation "v"
|
|
:halign "center"
|
|
:space-evenly false
|
|
:spacing 0
|
|
:class "module text"
|
|
:visible {sway--data != '' && sway--data.mode != "default"}
|
|
(label :class "special"
|
|
:text "${hypr--data.mode}")
|
|
"sway mode"))
|
|
|
|
(defwidget sway-workspace [group]
|
|
(box :orientation "v"
|
|
:halign "center"
|
|
:valign "center"
|
|
:space-evenly false
|
|
:spacing 0
|
|
:class 'module text'
|
|
(label :class '${sway--data.visible[group].focused ? "special" : "offline"} nebula medium small'
|
|
:text '${sway--data.visible[group].name}')))
|
|
; (label :text "current workspace")))
|
|
|
|
(defwidget hypr-workspace [group]
|
|
(box :orientation "v"
|
|
:halign "center"
|
|
:space-evenly false
|
|
:spacing 0
|
|
:class 'module text'
|
|
(label :class '${hypr--data.visible[group].focused ? "special" : "offline"}'
|
|
:text '${hypr--data.visible[group].name}')
|
|
(label :text "current workspace")))
|
|
|
|
(defwidget sway-workspaces [group]
|
|
(box :orientation "h"
|
|
:halign "start"
|
|
:visible {sway--data != ''}
|
|
:space-evenly false
|
|
:spacing 5
|
|
:class "sway--root"
|
|
(for workspace in {sway--data.ws[sway--data.context ?: "personal"][group]}
|
|
(sway--workspace :ws workspace))))
|
|
|
|
(defwidget hypr-workspaces [group]
|
|
(box :orientation "h"
|
|
:halign "start"
|
|
:space-evenly false
|
|
:spacing 5
|
|
:class "sway--root"
|
|
(for workspace in {hypr--data.ws[hypr--data.context ?: "personal"][group]}
|
|
(hypr--workspace :ws workspace))))
|