diff options
author | Galen Guyer <galen@galenguyer.com> | 2022-12-07 13:49:41 -0500 |
---|---|---|
committer | Galen Guyer <galen@galenguyer.com> | 2022-12-07 13:49:41 -0500 |
commit | 33e99935b0c4477f87aac470411056cb20b42a7f (patch) | |
tree | 5281d0dfc4817e50e563489c10663526f19dc306 /modules/10-i3/i3status/run.sh | |
parent | 84806a9cbdc26ac05036bbdc901364789c7380cd (diff) |
Update i3 config
Diffstat (limited to 'modules/10-i3/i3status/run.sh')
-rwxr-xr-x | modules/10-i3/i3status/run.sh | 73 |
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) |