summaryrefslogtreecommitdiff
path: root/modules/10-i3/i3status/run.sh
diff options
context:
space:
mode:
authorGalen Guyer <galen@galenguyer.com>2022-12-07 13:49:41 -0500
committerGalen Guyer <galen@galenguyer.com>2022-12-07 13:49:41 -0500
commit33e99935b0c4477f87aac470411056cb20b42a7f (patch)
tree5281d0dfc4817e50e563489c10663526f19dc306 /modules/10-i3/i3status/run.sh
parent84806a9cbdc26ac05036bbdc901364789c7380cd (diff)
Update i3 config
Diffstat (limited to 'modules/10-i3/i3status/run.sh')
-rwxr-xr-xmodules/10-i3/i3status/run.sh73
1 files changed, 73 insertions, 0 deletions
diff --git a/modules/10-i3/i3status/run.sh b/modules/10-i3/i3status/run.sh
new file mode 100755
index 0000000..dcb5ce0
--- /dev/null
+++ b/modules/10-i3/i3status/run.sh
@@ -0,0 +1,73 @@
+#!/usr/bin/env bash
+
+# This i3status wrapper allows to add custom information in any position of the statusline
+# It was developed for i3bar (JSON format)
+
+# The idea is to define "holder" modules in i3status config and then replace them
+
+# In order to make this example work you need to add
+# order += "tztime holder__hey_man"
+# and
+# tztime holder__hey_man {
+# format = "holder__hey_man"
+# }
+# in i3staus config
+
+# Don't forget that i3status config should contain:
+# general {
+# output_format = i3bar
+# }
+#
+# and i3 config should contain:
+# bar {
+# status_command exec /path/to/this/script.sh
+# }
+
+# Make sure jq is installed
+# That's it
+
+# You can easily add multiple custom modules using additional "holders"
+
+function update_holder {
+ local instance="$1"
+ local replacement="$2"
+ echo "$json_array" | jq --argjson arg_j "$replacement" "(.[] | (select(.instance==\"$instance\"))) |= \$arg_j"
+}
+
+function remove_holder {
+ local instance="$1"
+ echo "$json_array" | jq "del(.[] | (select(.instance==\"$instance\")))"
+}
+
+function hey_man {
+ local rand_val=$((RANDOM % 3))
+ if [ $rand_val == 1 ] ; then
+ local json='{ "full_text": "Hey Man!", "color": "#00FF00" }'
+ json_array=$(update_holder holder__hey_man "$json")
+ elif [ $rand_val == 0 ] ; then
+ local json='{ "full_text": "Hey Man!", "color": "#FF0000" }'
+ json_array=$(update_holder holder__hey_man "$json")
+ else
+ json_array=$(remove_holder holder__hey_man)
+ fi
+}
+
+function notif {
+ if [[ "$(dunstctl is-paused)" == "true" ]]; then
+ local json='{ "full_text": "N: paused", "color": "#FF0000" }'
+ json_array=$(update_holder holder__notif "$json")
+ else
+ local json='{ "full_text": "N: active" }'
+ json_array=$(update_holder holder__notif "$json")
+ fi
+}
+
+_pre=""
+i3status | (read line; echo "$line"; read line; echo "$line"; while true
+do
+ read line
+ json_array="$(echo $line | sed -e 's/^,//')"
+ notif
+ echo "$_pre$json_array"
+ _pre=","
+done)