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}]'`
)
|