aboutsummaryrefslogtreecommitdiff
path: root/roles/home/desktop/eww/panels/bar.yuck
blob: 6dc47714e47cecd47b03d144027ece6c70335ea8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
(defwidget bar []
    (centerbox :class "bar"
        :orientation "h"

        (box
            :orientation "h"
            :spacing 8
            :space-evenly false

            (tooltip :class "panel"
                {EWW_TIME}
                {formattime(EWW_TIME, "%T", "America/Los_Angeles")}
            )

            (tooltip :class "panel"
                {formattime(EWW_TIME, "%F", "America/Los_Angeles")}
                {formattime(EWW_TIME, "%A, %B %d, %Y", "America/Los_Angeles")}
            )
        )

        (box
            :orientation "h"
            :spacing 8
            :space-evenly false

            ;(label :class "panel"
            ;    :text "i have no idea what to put here :3"
            ;)

            (box :class "unpadded panel"
                (ws :num  0 :icon "󱄅" :name "Main")
                (ws :num  1 :icon "" :name "Terminal")
                (ws :num  2 :icon "󰈹" :name "Browser")
                (ws :num  3 :icon "󰙯" :name "Chat")
                (ws :num  4 :icon "󰓓" :name "Gaming")
                (ws :num  5 :icon "󰎱" :name "5")
                (ws :num  6 :icon "󰎳" :name "6")
                (ws :num  7 :icon "󰎶" :name "7")
                (ws :num  8 :icon "󰄛" :name "Meow")
                (ws :num  9 :icon "󰲸" :name "Music")
                (ws :num 10 :icon "󰁴" :name "Misc")
            )
        )

        (box
            :orientation "h"
            :spacing 8
            :space-evenly false
            :halign "end"

            (box :class "unpadded panel"
                :space-evenly false
                (button :class "sleep icon"
                    :width 31
                    "󰤄"
                )

                (button :class "restart icon"
                    :width 33
                    "󰜉"
                )

                (button :class "shutdown icon"
                    :width 31
                    "󰐥"
                )
            )

            (box :class "unpadded panel"
                (button :class "dismiss icon"
                    :width 29
                    :onclick `${EWW_CMD} close sys`
                    "󰅖"
                )
            )
        )
    )
)

(defwidget ws [num icon name]
    (tooltip {name}
        (button :class {"ws"
                + (ws-status[num].active  ? " active"  : "")
                + (ws-status[num].visible ? " visible" : "")
                + (ws-status[num].focused ? " focused" : "")
                + (ws-status[num].urgent  ? " urgent"  : "")
            }
            :width {
                num ==  0 ? 31 :
                num == 10 ? 31 :
                33
            }

            {icon}
        )
    )
)

(defpoll ws-status
    :interval "0.1s"
    `i3-msg -t get_workspaces | jq -caM 'map({"ws-\\(.num)": {visible, focused, urgent, active: true}}) | add as $orig | [range(0;11)] | [.[] as $i | $orig."ws-\\($i)" // {visible: false, focused: false, urgent: false, active: false}]'`
)