-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.dhall
157 lines (131 loc) · 4.71 KB
/
config.dhall
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
let prelude = ./prelude/package.dhall
let types = ./types/package.dhall
let utils = ./utils/package.dhall
-- * Types
let AbsolutePosition = types.AbsolutePosition
let Address = types.Address
let Assertion = types.Assertion
let Bar = types.Bar
let Button = types.Button
let Carrier = types.Carrier
let Check = types.Check
let Color = types.Color
let Configuration = types.Configuration
let Direction = types.Direction
let Event = types.Event
let Fade = types.Fade
let Hook = types.Hook
let Image = types.Image
let Marquee = types.Marquee
let Padding = types.Padding
let Plugin = types.Plugin
let Position = types.Position
let Settings = types.Settings
let Shell = types.Shell
let Slider = types.Slider
let Source = types.Source
let State = types.State
let StateMap = types.StateMap
let Transition = types.Transition
let Variable = types.Variable
let VerticalDirection = types.VerticalDirection
-- * Utility functions
let mkAddress : Text → Address = utils.mkAddress
let mkEvent : Text → Event = utils.mkEvent
let mkState : Text → State = utils.mkState
let mkVariable : Text → Variable = utils.mkVariable
let showAddress : Address → Text = utils.showAddress
let showEvent : Event → Text = utils.showEvent
let showState : State → Text = utils.showState
let showVariable : Variable → Text = utils.showVariable
let mkBashHook : Shell → Hook = utils.mkBashHook
let addHook : Hook → Transition → Transition = utils.addHook
let mkFade : VerticalDirection → Natural → Natural → Fade = utils.mkFade
let mkSlider : Fade → Fade → Natural → Slider = utils.mkSlider
let mkMarquee : Natural → Natural → Bool → Marquee = utils.mkMarquee
let mkTransition : Event → State → State → Transition = utils.mkTransition
let mkTransitions : Event → List State → State → Transition = utils.mkTransitions
let emit : Event → Shell = utils.emit
let get : Variable → Shell = utils.get
let getEvent : Shell = utils.getEvent
let getCurrentState : Shell = utils.getCurrentState
let getNextState : Shell = utils.getNextState
let query : Address → Shell = utils.query
let set : Variable → Shell → Shell = utils.set
let defaults = utils.defaults
let bar
: Bar
= λ(Bar : Type)
→ λ(cr : Carrier Bar)
→ -- Text primitives:
let text : Text → Bar = cr.text
let markup : Text → Bar = cr.markup
-- Combining multiple `Bar`s into one:
let join : List Bar → Bar = cr.join
-- Primitives of Dzen markup language:
let fg : Color → Bar → Bar = cr.fg
let bg : Color → Bar → Bar = cr.bg
let i : Image → Bar = cr.i
let r : Natural → Natural → Bar = cr.r
let ro : Natural → Natural → Bar = cr.ro
let c : Natural → Bar = cr.c
let co : Natural → Bar = cr.co
let p : Position → Bar → Bar = cr.p
let pa : AbsolutePosition → Bar → Bar = cr.pa
let ca : Button → Shell → Bar → Bar = cr.ca
let ib : Bar → Bar = cr.ib
-- Animations:
let slider : Slider → List Bar → Bar = cr.slider
let marquee : Marquee → Bar → Bar = cr.marquee
-- Other:
let pad : Natural → Padding → Bar → Bar = cr.pad
let trim : Natural → Direction → Bar → Bar = cr.trim
let source : Source → Bar = cr.source
let plug : Plugin → Bar = cr.plug
let automaton
: Address → List Transition → StateMap Bar → Bar
= cr.automaton
let check : Text → Assertion → Bar = cr.check
let scope : Bar → Bar = cr.scope
let define : Variable → Text → Bar = cr.define
-- Utilities:
let bash : Natural → Shell → Bar = utils.mkBash Bar cr
let bashWithBinaries
: List Text → Natural → Shell → Bar
= utils.mkBashWithBinaries Bar cr
let reader : Variable → Natural → Bar = utils.mkReader Bar cr
let separateBy : Bar → List Bar → Bar = utils.mkSeparateBy Bar cr
let separate : List Bar → Bar = separateBy (text " | ")
-- Pre-defined bars
let memoryUsage
: Bar
= bashWithBinaries
[ "free", "grep", "awk" ]
5000
''
free -b | grep Mem | awk '{ printf("%.0f\n", $3 * 100 / $2) }';
''
let swapUsage
: Bar
= bashWithBinaries
[ "free", "grep", "awk" ]
5000
''
free -b | grep Swap | awk '{ printf("%.0f\n", $3 * 100 / $2) }';
''
let date
: Bar
= bashWithBinaries [ "date" ] 1000 "date +'%d.%m.%Y'"
let time
: Bar
= bashWithBinaries [ "date" ] 1000 "date +'%H:%M'"
let accent : Bar → Bar = fg "white"
in -- Your bar definition starts below.
separate
[ join [ text "Mem: ", accent memoryUsage, text "%" ]
, join [ text "Swap: ", accent swapUsage, text "%" ]
, join [ date, text " ", accent time ]
-- You can add new plugins right here.
]
: Bar
in utils.mkConfigs [ { bar = bar, settings = defaults.settings } ] : List Configuration