3 # - global, builtin : ALLCAPS
4 # - global, public : Camel_Snake_Man_Bear_Pig
5 # - global, private : _snake_case_prefixed_underscore
8 # - global, public : snake_case
10 # -----------------------------------------------------------------------------
12 # -----------------------------------------------------------------------------
18 msg
["type"] ==
"data" {
19 cache_update
(msg
["node"], msg
["module"], msg
["key"], msg
["val"])
22 msg
["node"] == Node
&& \
23 msg
["module"] ==
"khatus_sensor_datetime" && \
24 msg
["type"] ==
"data" {
25 # Code for bar_make_status is expected to be passed as an
26 # additional source file, using -f flag.
27 msg_out_status_bar
(bar_make_status
())
30 # -----------------------------------------------------------------------------
32 # -----------------------------------------------------------------------------
34 function bar_make_status_energy_percent
() {
35 return cache_get_fmt_def
("khatus_sensor_energy", "battery_percentage", 0, "%d")
38 function bar_make_status_energy_direction
( state
, direction_of_change
) {
39 cache_get
(state
, "khatus_sensor_energy", "battery_state", 0)
40 if (state
["value"] ==
"discharging") {
41 direction_of_change =
"<"
42 } else if (state
["value"] ==
"charging") {
43 direction_of_change =
">"
45 direction_of_change =
"="
47 return direction_of_change
50 # -----------------------------------------------------------------------------
52 # -----------------------------------------------------------------------------
54 function bar_make_status_mem_percent
( total
, used
, percent
, percent_str
) {
55 cache_get
(total
, "khatus_sensor_memory", "total", 5)
56 cache_get
(used
, "khatus_sensor_memory", "used" , 5)
57 # Checking total["value"] to avoid division by zero when data is missing
58 if (!total
["is_expired"] && \
59 !used
["is_expired"] && \
62 percent = num_round
((used
["value"] / total
["value"]) * 100)
63 percent_str =
sprintf("%d", percent
)
70 # -----------------------------------------------------------------------------
72 # -----------------------------------------------------------------------------
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
83 # Additionally, not documented in ps man page:
86 function bar_make_status_procs_count_all
() {
87 return cache_get_fmt_def
("khatus_sensor_procs", "total_procs", 15, "%d")
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")
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")
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")
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")
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")
115 # -----------------------------------------------------------------------------
117 # -----------------------------------------------------------------------------
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")
124 function bar_make_status_cpu_temperature
() {
125 return cache_get_fmt_def
("khatus_sensor_temperature", "temp_c", 5, "%d")
128 function bar_make_status_cpu_fan_speed
() {
129 return cache_get_fmt_def
("khatus_sensor_fan", "speed", 5, "%4d")
132 # -----------------------------------------------------------------------------
134 # -----------------------------------------------------------------------------
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")
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")
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")
151 # -----------------------------------------------------------------------------
153 # -----------------------------------------------------------------------------
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"] ==
1)
164 function bar_make_status_net_addr
(interface
, src
) {
165 src =
"khatus_sensor_net_addr_io"
166 addr = cache_get_fmt_def
(src
, "addr" Kfs interface
, 5, "%s")
167 return addr ? addr
: "--"
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")
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")
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")
185 function bar_make_status_net_wifi_link
(interface
, link
) {
186 cache_get_fmt_def
(link
, "khatus_sensor_net_wifi_status", "link" Kfs interface
, 10)
187 if (!link
["is_expired"] && link
["value"] > 0)
188 return sprintf("%d%%", link
["value"])
193 # -----------------------------------------------------------------------------
195 # -----------------------------------------------------------------------------
197 function bar_make_status_bluetooth_power
( src
) {
198 src =
"khatus_sensor_bluetooth_power"
199 return cache_get_fmt_def
(src
, "power_status", 10, "%s")
202 # -----------------------------------------------------------------------------
203 # Backlight (screen brightness)
204 # -----------------------------------------------------------------------------
206 function bar_make_status_backlight_percent
( src
) {
207 src =
"khatus_sensor_screen_brightness"
208 return cache_get_fmt_def
(src
, "percentage", 5, "%d")
211 # -----------------------------------------------------------------------------
213 # -----------------------------------------------------------------------------
215 function bar_make_status_volume_alsa_device
(device
, m
, l
, r
, show
) {
216 cache_get
(m
, "khatus_sensor_volume", "mute" Kfs device
, 5)
217 cache_get
(l
, "khatus_sensor_volume", "vol_left" Kfs device
, 5)
218 cache_get
(r
, "khatus_sensor_volume", "vol_right" Kfs device
, 5)
220 if (!m
["is_expired"] && !l
["is_expired"] && !r
["is_expired"]) {
221 if (m
["value"] ==
"yes")
223 else if (m
["value"] ==
"no")
224 show = l
["value"] #" " r["value"]
227 "bar_make_status_volume_alsa_device: " device
". ", \
228 "Unexpected value for 'mute' field: " m
["value"] \
234 # -----------------------------------------------------------------------------
236 # -----------------------------------------------------------------------------
238 function bar_make_status_mpd
( state
, status
) {
239 cache_get
(state
, "khatus_sensor_mpd", "state", 5)
240 if (!state
["is_expired"] && state
["value"]) {
241 if (state
["value"] ==
"play") {
242 status = bar_make_status_mpd_state_known
("▶")
243 } else if (state
["value"] ==
"pause") {
244 status = bar_make_status_mpd_state_known
("❚❚")
245 } else if (state
["value"] ==
"stop") {
246 status = bar_make_status_mpd_state_known
("⬛")
249 "bar_make_status_mpd", \
250 "Unexpected value for 'state' field: " state
["value"] \
260 function bar_make_status_mpd_state_known
(symbol
, s
, song
, time
, percentage
) {
261 s =
"khatus_sensor_mpd"
262 #song = cache_get_fmt_def(s, "song" , 5, "%s", "?")
263 time = cache_get_fmt_def
(s
, "play_time_minimal_units", 5, "%s", "?")
264 percent = cache_get_fmt_def
(s
, "play_time_percentage" , 5, "%s", "?")
265 #song = substr(song, 1, Opt_Mpd_Song_Max_Chars)
266 return sprintf("%s %s %s", symbol
, time
, percent
)
269 # -----------------------------------------------------------------------------
271 # -----------------------------------------------------------------------------
273 function bar_make_status_weather_temp_f
( src
, hour
) {
274 src =
"khatus_sensor_weather"
276 return cache_get_fmt_def
(src
, "temperature_f", 3 * hour
, "%d")
279 # -----------------------------------------------------------------------------
281 # -----------------------------------------------------------------------------
283 function bar_make_status_datetime
( dt
) {
284 return cache_get_fmt_def
("khatus_sensor_datetime", "datetime", 5, "%s")