#!/bin/sh printf "{\"version\":1}\n" printf "[\n" if ! command -v jq >/dev/null; then while true; do printf '[{ "full_text":" jq: command not found ", "urgent":true, "separator_block_width":0 },],' sleep 1 done fi while true; do printf "[" # keyboard layout swaymsg -t get_inputs | jq -Mcj ' [.[] | select(.type=="keyboard")][0] | { "full_text":([" ",.xkb_active_layout_name," "]|join("")), "urgent":.xkb_active_layout_index, "separator_block_width":0 }, ","' # battery # shellcheck disable=SC2002 cat /sys/class/power_supply/BAT0/capacity | jq -Mcj ' if .<20 then { "full_text":([" ",.," % "]|join("")), "urgent":true, "separator_block_width":0 } else { "full_text":([" ",.," % "]|join("")), "separator_block_width":0 } end, ","' # date date +%c | jq -RMcj '{ "full_text":([" ",.," "]|join("")), "separator_block_width":0 }, ","' # scratchpad swaymsg -t get_tree | jq -Mcj ' .nodes[] | select(.name=="__i3").nodes[] | select(.name=="__i3_scratch").floating_nodes | if length>0 then { "full_text":([" ",length," "]|join("")), "urgent":true, "separator_block_width":0 }, "," else "" end' # notifications makoctl list | jq -Mcj ' .data[] | if length>0 then { "full_text":([" (",length,") ",.[0].summary.data," "]|join("")), "urgent":(.[0].urgency.data==2), "separator_block_width":0 }, "," else "" end' printf "]," # timeout timeout 1 swaymsg -t subscribe '["input","binding"]' >/dev/null done