Commit | Line | Data |
---|---|---|
c4fd5e7d SK |
1 | # Naming convention: |
2 | # Variables: | |
3 | # - global, builtin : ALLCAPS | |
b1c097d6 | 4 | # - global, public : Camel_Snake_Man_Bear_Pig |
c4fd5e7d SK |
5 | # - global, private : _snake_case_prefixed_underscore |
6 | # - local : snake_case | |
7 | # Functions: | |
8 | # - global, public : snake_case | |
9 | ||
75b23ff8 SK |
10 | # ----------------------------------------------------------------------------- |
11 | # Input | |
12 | # ----------------------------------------------------------------------------- | |
81336934 SK |
13 | { |
14 | delete msg | |
15 | msg_parse(msg, $0) | |
16 | } | |
17 | ||
18 | msg["type"] == "data" { | |
8482fea6 | 19 | cache_update(msg["node"], msg["module"], msg["key"], msg["val"]) |
75b23ff8 SK |
20 | } |
21 | ||
81336934 SK |
22 | msg["node"] == Node && \ |
23 | msg["module"] == "khatus_sensor_datetime" && \ | |
24 | msg["type"] == "data" { | |
03c229bf | 25 | # Code for bar_make_status is expected to be passed as an |
ab9fe663 | 26 | # additional source file, using -f flag. |
8482fea6 | 27 | msg_out_status_bar(bar_make_status()) |
75b23ff8 SK |
28 | } |
29 | ||
75b23ff8 | 30 | # ----------------------------------------------------------------------------- |
e62110ca | 31 | # Energy |
75b23ff8 SK |
32 | # ----------------------------------------------------------------------------- |
33 | ||
65034298 SK |
34 | function bar_make_status_energy_percent() { |
35 | return cache_get_fmt_def("khatus_sensor_energy", "battery_percentage", 0, "%d") | |
e62110ca | 36 | } |
75b23ff8 | 37 | |
e62110ca SK |
38 | function bar_make_status_energy_direction( state, direction_of_change) { |
39 | cache_get(state, "khatus_sensor_energy", "battery_state", 0) | |
269df6fa | 40 | if (state["value"] == "discharging") { |
75b23ff8 | 41 | direction_of_change = "<" |
269df6fa | 42 | } else if (state["value"] == "charging") { |
75b23ff8 SK |
43 | direction_of_change = ">" |
44 | } else { | |
45 | direction_of_change = "=" | |
46 | } | |
e62110ca SK |
47 | return direction_of_change |
48 | } | |
75b23ff8 | 49 | |
e62110ca SK |
50 | # ----------------------------------------------------------------------------- |
51 | # Memory | |
52 | # ----------------------------------------------------------------------------- | |
53 | ||
e62110ca | 54 | function bar_make_status_mem_percent( total, used, percent, percent_str) { |
c4fd5e7d SK |
55 | cache_get(total, "khatus_sensor_memory", "total", 5) |
56 | cache_get(used , "khatus_sensor_memory", "used" , 5) | |
269df6fa SK |
57 | # Checking total["value"] to avoid division by zero when data is missing |
58 | if (!total["is_expired"] && \ | |
59 | !used["is_expired"] && \ | |
60 | total["value"] \ | |
61 | ) { | |
8482fea6 | 62 | percent = num_round((used["value"] / total["value"]) * 100) |
e62110ca | 63 | percent_str = sprintf("%d", percent) |
75b23ff8 | 64 | } else { |
e62110ca | 65 | percent_str = "__" |
75b23ff8 | 66 | } |
e62110ca | 67 | return percent_str |
75b23ff8 SK |
68 | } |
69 | ||
e62110ca SK |
70 | # ----------------------------------------------------------------------------- |
71 | # Processes | |
72 | # ----------------------------------------------------------------------------- | |
65034298 SK |
73 | # From man ps: |
74 | # D uninterruptible sleep (usually IO) | |
75 | # R running or runnable (on run queue) | |
76 | # S interruptible sleep (waiting for an event to complete) | |
77 | # T stopped by job control signal | |
78 | # t stopped by debugger during the tracing | |
79 | # W paging (not valid since the 2.6.xx kernel) | |
80 | # X dead (should never be seen) | |
81 | # Z defunct ("zombie") process, terminated but not reaped by its parent | |
82 | # | |
83 | # Additionally, not documented in ps man page: | |
84 | # I Idle | |
b9d5cfd4 | 85 | |
e62110ca SK |
86 | function bar_make_status_procs_count_all() { |
87 | return cache_get_fmt_def("khatus_sensor_procs", "total_procs", 15, "%d") | |
88 | } | |
89 | ||
90 | function bar_make_status_procs_count_r( src) { | |
91 | src = "khatus_sensor_procs" | |
92 | return cache_get_fmt_def(src, "total_per_state" Kfs "R", 15, "%d", "0") | |
93 | } | |
94 | ||
95 | function bar_make_status_procs_count_d( src) { | |
96 | src = "khatus_sensor_procs" | |
97 | return cache_get_fmt_def(src, "total_per_state" Kfs "D", 15, "%d", "0") | |
98 | } | |
99 | ||
100 | function bar_make_status_procs_count_t( src) { | |
101 | src = "khatus_sensor_procs" | |
102 | return cache_get_fmt_def(src, "total_per_state" Kfs "T", 15, "%d", "0") | |
103 | } | |
104 | ||
105 | function bar_make_status_procs_count_i( src) { | |
106 | src = "khatus_sensor_procs" | |
107 | return cache_get_fmt_def(src, "total_per_state" Kfs "I", 15, "%d", "0") | |
108 | } | |
109 | ||
110 | function bar_make_status_procs_count_z( src) { | |
111 | src = "khatus_sensor_procs" | |
112 | return cache_get_fmt_def(src, "total_per_state" Kfs "Z", 15, "%d", "0") | |
113 | } | |
114 | ||
115 | # ----------------------------------------------------------------------------- | |
116 | # CPU | |
117 | # ----------------------------------------------------------------------------- | |
118 | ||
e62110ca SK |
119 | function bar_make_status_cpu_loadavg( src) { |
120 | src = "khatus_sensor_loadavg" | |
121 | return cache_get_fmt_def(src, "load_avg_1min", 5, "%4.2f") | |
122 | } | |
123 | ||
124 | function bar_make_status_cpu_temperature() { | |
125 | return cache_get_fmt_def("khatus_sensor_temperature", "temp_c", 5, "%d") | |
126 | } | |
127 | ||
128 | function bar_make_status_cpu_fan_speed() { | |
129 | return cache_get_fmt_def("khatus_sensor_fan", "speed", 5, "%4d") | |
130 | } | |
131 | ||
132 | # ----------------------------------------------------------------------------- | |
133 | # Disk | |
134 | # ----------------------------------------------------------------------------- | |
135 | ||
e62110ca SK |
136 | function bar_make_status_disk_space( src) { |
137 | src = "khatus_sensor_disk_space" | |
138 | return cache_get_fmt_def(src, "disk_usage_percentage", 10, "%s") | |
139 | } | |
140 | ||
141 | function bar_make_status_disk_io_w( src) { | |
142 | src = "khatus_sensor_disk_io" | |
143 | return cache_get_fmt_def(src, "sectors_written", 5, "%0.3f") | |
144 | } | |
145 | ||
146 | function bar_make_status_disk_io_r( src) { | |
147 | src = "khatus_sensor_disk_io" | |
148 | return cache_get_fmt_def(src, "sectors_read", 5, "%0.3f") | |
149 | } | |
150 | ||
151 | # ----------------------------------------------------------------------------- | |
152 | # Network | |
153 | # ----------------------------------------------------------------------------- | |
154 | ||
01da02dd SK |
155 | function bar_make_status_net_iface_status(interface, is_plugged_in) { |
156 | # TODO: Integrate connection/address status into the symbol somehow. | |
157 | cache_get(is_plugged_in, "khatus_sensor_net_carrier", interface, 5) | |
158 | if (!is_plugged_in["is_expired"] && is_plugged_in["value"]) | |
159 | return "<>" | |
887d3829 SK |
160 | else |
161 | return "--" | |
162 | } | |
163 | ||
e62110ca SK |
164 | function bar_make_status_net_addr(interface, src) { |
165 | src = "khatus_sensor_net_addr_io" | |
6facb1a2 SK |
166 | addr = cache_get_fmt_def(src, "addr" Kfs interface, 5, "%s") |
167 | return addr ? addr : "--" | |
e62110ca SK |
168 | } |
169 | ||
170 | function bar_make_status_net_io_w(interface, src) { | |
171 | src = "khatus_sensor_net_addr_io" | |
172 | return cache_get_fmt_def(src, "bytes_written" Kfs interface, 5, "%0.3f") | |
173 | } | |
174 | ||
175 | function bar_make_status_net_io_r(interface, src) { | |
176 | src = "khatus_sensor_net_addr_io" | |
177 | return cache_get_fmt_def(src, "bytes_read" Kfs interface, 5, "%0.3f") | |
178 | } | |
179 | ||
180 | function bar_make_status_net_wifi(interface, src) { | |
181 | src = "khatus_sensor_net_wifi_status" | |
182 | return cache_get_fmt_def(src, "status" Kfs interface, 10, "%s") | |
183 | } | |
184 | ||
185 | # ----------------------------------------------------------------------------- | |
186 | # Bluetooth | |
187 | # ----------------------------------------------------------------------------- | |
188 | ||
e62110ca | 189 | function bar_make_status_bluetooth_power( src) { |
269df6fa | 190 | src = "khatus_sensor_bluetooth_power" |
e62110ca | 191 | return cache_get_fmt_def(src, "power_status", 10, "%s") |
75b23ff8 SK |
192 | } |
193 | ||
e62110ca | 194 | # ----------------------------------------------------------------------------- |
65034298 | 195 | # Backlight (screen brightness) |
e62110ca SK |
196 | # ----------------------------------------------------------------------------- |
197 | ||
e62110ca | 198 | function bar_make_status_backlight_percent( src) { |
269df6fa | 199 | src = "khatus_sensor_screen_brightness" |
e62110ca | 200 | return cache_get_fmt_def(src, "percentage", 5, "%d") |
75b23ff8 SK |
201 | } |
202 | ||
e62110ca SK |
203 | # ----------------------------------------------------------------------------- |
204 | # Volume | |
205 | # ----------------------------------------------------------------------------- | |
206 | ||
07d37103 SK |
207 | function bar_make_status_volume_alsa_device(device, m, l, r, show) { |
208 | cache_get(m, "khatus_sensor_volume", "mute" Kfs device, 5) | |
209 | cache_get(l, "khatus_sensor_volume", "vol_left" Kfs device, 5) | |
210 | cache_get(r, "khatus_sensor_volume", "vol_right" Kfs device, 5) | |
767766df | 211 | show = "--" |
07d37103 | 212 | if (!m["is_expired"] && !l["is_expired"] && !r["is_expired"]) { |
774d8cd1 SK |
213 | if (m["value"] == "yes") |
214 | show = "X" | |
215 | else if (m["value"] == "no") | |
216 | show = l["value"] #" " r["value"] | |
217 | else | |
8482fea6 | 218 | msg_out_log_error(\ |
0c4f892e | 219 | "bar_make_status_volume_alsa_device: " device ". ", \ |
07d37103 | 220 | "Unexpected value for 'mute' field: " m["value"] \ |
75b23ff8 | 221 | ) |
75b23ff8 | 222 | } |
e62110ca | 223 | return show |
75b23ff8 SK |
224 | } |
225 | ||
e62110ca SK |
226 | # ----------------------------------------------------------------------------- |
227 | # MPD | |
228 | # ----------------------------------------------------------------------------- | |
229 | ||
65034298 | 230 | function bar_make_status_mpd( state, status) { |
c4fd5e7d | 231 | cache_get(state, "khatus_sensor_mpd", "state", 5) |
269df6fa SK |
232 | if (!state["is_expired"] && state["value"]) { |
233 | if (state["value"] == "play") { | |
03c229bf | 234 | status = bar_make_status_mpd_state_known("▶") |
269df6fa | 235 | } else if (state["value"] == "pause") { |
03c229bf | 236 | status = bar_make_status_mpd_state_known("❚❚") |
269df6fa | 237 | } else if (state["value"] == "stop") { |
03c229bf | 238 | status = bar_make_status_mpd_state_known("⬛") |
75b23ff8 | 239 | } else { |
8482fea6 | 240 | msg_out_log_error(\ |
03c229bf | 241 | "bar_make_status_mpd", \ |
269df6fa | 242 | "Unexpected value for 'state' field: " state["value"] \ |
75b23ff8 SK |
243 | ) |
244 | status = "--" | |
245 | } | |
246 | } else { | |
247 | status = "--" | |
248 | } | |
e62110ca | 249 | return status |
75b23ff8 SK |
250 | } |
251 | ||
03c229bf | 252 | function bar_make_status_mpd_state_known(symbol, s, song, time, percentage) { |
75b23ff8 | 253 | s = "khatus_sensor_mpd" |
ac294969 | 254 | #song = cache_get_fmt_def(s, "song" , 5, "%s", "?") |
c4fd5e7d SK |
255 | time = cache_get_fmt_def(s, "play_time_minimal_units", 5, "%s", "?") |
256 | percent = cache_get_fmt_def(s, "play_time_percentage" , 5, "%s", "?") | |
ac294969 SK |
257 | #song = substr(song, 1, Opt_Mpd_Song_Max_Chars) |
258 | return sprintf("%s %s %s", symbol, time, percent) | |
75b23ff8 SK |
259 | } |
260 | ||
e62110ca SK |
261 | # ----------------------------------------------------------------------------- |
262 | # Weather | |
263 | # ----------------------------------------------------------------------------- | |
264 | ||
e62110ca | 265 | function bar_make_status_weather_temp_f( src, hour) { |
fd710ac0 | 266 | src = "khatus_sensor_weather" |
75b23ff8 | 267 | hour = 60 * 60 |
e62110ca | 268 | return cache_get_fmt_def(src, "temperature_f", 3 * hour, "%d") |
75b23ff8 SK |
269 | } |
270 | ||
e62110ca SK |
271 | # ----------------------------------------------------------------------------- |
272 | # Datetime | |
273 | # ----------------------------------------------------------------------------- | |
274 | ||
03c229bf | 275 | function bar_make_status_datetime( dt) { |
c4fd5e7d | 276 | return cache_get_fmt_def("khatus_sensor_datetime", "datetime", 5, "%s") |
75b23ff8 | 277 | } |