{ setting, util, ... }: { text = util.trimTabs '' #!/usr/bin/env bash function _tmux_battery() { local IFS=$'\n' local batteries=($(ls /sys/class/power_supply/ | grep ^BAT[0-9]$)) [[ "''${batteries}" = "" ]] && return 1 local battery="/sys/class/power_supply/''${batteries[0]}" local level=$(cat ''${battery}/capacity) local status=$(cat ''${battery}/status) local is_charging=false [[ "''${status}" = "Charging" ]] && is_charging=true local icon if ((level>=${toString(setting.tmux.status.battery.threshold.high)})) then icon="󱊣" elif ((level>=${toString(setting.tmux.status.battery.threshold.medium)})) then icon="󱊢" elif ((level>=${toString(setting.tmux.status.battery.threshold.low)})) then icon="󱊡" else icon="󰂎" fi echo -n "''${icon}" ''${is_charging} && echo -n "󱐋" echo echo -n "''${level}" } function _tmux_volume() { local IFS=$'\n' local level=$(wpctl get-volume @DEFAULT_SINK@ | cut -d\ -f2 | sed -e "s/^0//" -e "s/\.//") [[ "''${level}" = "" ]] && return 1 [[ "''${level}" = "00" ]] && level="0" local icon if ((level>=${toString(setting.tmux.status.volume.threshold.high)})) then icon="󰕾" elif ((level>=${toString(setting.tmux.status.volume.threshold.medium)})) then icon="󰖀" elif ((level>=${toString(setting.tmux.status.volume.threshold.low)})) then icon="" else icon="󰝟" fi local muted=$(wpctl get-volume @DEFAULT_SINK@ | grep '[MUTED]') if [[ "''${muted}" != "" ]]; then icon="󰸈" fi echo "''${icon}" echo -n "''${level}" } function _tmux_statusbar() { local IFS=$'\n' local sep="" local thr_volume=${toString(setting.tmux.status.volume.threshold.show)} local thr_battery=${toString(setting.tmux.status.battery.threshold.show)} local is_uber=$(cat "/tmp/.tmux_uber" || echo -n false) # Get data. battery=($(_tmux_battery)) volume=($(_tmux_volume)) # Prepare separators. sep_batvol=" " if ''${is_uber} || [[ "''${battery[1]}" -lt "''${thr_battery}" ]] || [[ "''${volume[1]}" -gt "''${thr_volume}" ]]; then sep_batvol=" ''${sep} " fi if [[ "''${battery[0]}" = "" ]]; then sep_batvol="" fi # Print. echo -n " " # Assemble. if ''${is_uber}; then local lang=($(_tmux_language)) [[ "''${lang[0]}" != "" ]] && { echo -n "''${lang[0]} ''${sep} " }; [[ "''${volume[0]}" != "" ]] && echo -n "''${volume[0]} ''${volume[1]}%''${sep_batvol}" [[ "''${battery[0]}" != "" ]] && echo -n "''${battery[0]} ''${battery[1]}%" else [[ "''${volume[0]}" != "" ]] && { echo -n "''${volume[0]}" [[ "''${volume[1]}" -gt 100 ]] && echo -n " ''${volume[1]}%" echo -n "''${sep_batvol}" }; [[ "''${battery[0]}" != "" ]] && { echo -n "''${battery[0]}" [[ "''${battery[1]}" -lt 40 ]] && echo -n " ''${battery[1]}%" }; fi echo -n " " } function _tmux_language() { local IFS=$'\n' local lang=$(swaymsg -t get_inputs | jq 'map(select(has("xkb_active_layout_name")))[0].xkb_active_layout_name') echo -n ''${lang:1:2} } function _tmux_client_count() { local IFS=$'\n' local session=''${1} local count=$(tmux list-clients -t ''${session} | wc -l) [ ''${count} -gt 1 ] && echo -n "+''${count} " } function _tmux_toggle_statusbar() { local file="/tmp/.tmux_uber" if [[ ! -f ''${file} ]]; then echo "true" > ''${file} elif $(cat ''${file}); then echo "false" > ''${file} else echo "true" > ''${file} fi } IFS=$'\n' action=''${1} session=''${2} case "''${action}" in "statusbar") _tmux_statusbar ;; "client_count") _tmux_client_count ''${session} ;; "togglestatusbar") _tmux_toggle_statusbar ;; esac ''; }