#!/bin/sh set -e while [ $# -gt 0 ] ; do case "$1" in "--newline") newline=1 ;; "--unit") unitsymbol="%" ;; "--no-value") no_value=1 ;; "--socket") _pipe_dir="${XDG_RUNTIME_DIR:-/tmp/$(id -u)-runtime}/acejuice" mkdir -p "$_pipe_dir" NPIPE_OUT="$_pipe_dir/main.sock" unset _pipe_dir if ! mkfifo "$NPIPE_OUT" 2> /dev/null; then printf "fifo '%s' already present\n" "$NPIPE_OUT" >&2 fi ;; "--icon") case $2 in "ascii"|""|"--"*) case "$2" in "--"*|"") : # skip if it's a parameter or is empty ;; *) shift ;; esac iconize=1 iconlvl0="[----]" iconlvl1="[#---]" iconlvl2="[##--]" iconlvl3="[###-]" iconlvl4="[####]" ;; "nerd") shift iconize=1 icon_nerd=1 iconlvl0= iconlvl1= iconlvl2= iconlvl3= iconmute= ;; *) printf "Icon coding not supported. Aborting...\n" exit 1 ;; esac ;; "--icon-mute") iconize_mute=1 ;; *) printf "Parameter not recognized. Aborting...\n" exit 1 ;; esac shift done DEFAULT_SINK_NAME="" DEFAULT_SOURCE_NAME="" lvl="" __lvlbar(){ if [ "$iconize_mute" = 1 ] && [ "$2" = "muted" ]; then icon="$iconmute" else if [ "$icon_nerd" = 1 ]; then if [ "$1" -le 0 ]; then icon="${iconlvl0}" elif [ "$1" -le 30 ]; then icon="${iconlvl1}" elif [ "$1" -le 85 ]; then icon="${iconlvl2}" elif [ "$1" -le 100 ]; then icon="${iconlvl3}" else icon="${iconlvl4}" fi else if [ "$1" -le 5 ]; then icon="${iconlvl0}" elif [ "$1" -le 15 ]; then icon="${iconlvl0}" elif [ "$1" -le 35 ]; then icon="${iconlvl1}" elif [ "$1" -le 65 ]; then icon="${iconlvl2}" elif [ "$1" -le 97 ]; then icon="${iconlvl3}" else icon="${iconlvl4}" fi fi fi } __send(){ case $1 in DEFAULT_SINK_NAME) DEFAULT_SINK_NAME="$2" ;; DEFAULT_SOURCE_NAME) DEFAULT_SOURCE_NAME="$2" ;; SINKVOL) [ "$no_value" = 1 ] && : || lvl=$3 [ "$iconize" = 1 ] && __lvlbar "$3" "$2" || : ;; *) : ;; esac if [ -n "$NPIPE_OUT" ]; then printf ":SET audi %b%s%s%s%s%b%s" "${color}" "${icon}" "${status}" "${lvl}" "${unitsymbol}" "${colend}${colbgend}" "${sep}" > "$NPIPE_OUT" else printf ":SET audi %b%s%s%s%s%b%s" "${color}" "${icon}" "${status}" "${lvl}" "${unitsymbol}" "${colend}${colbgend}" "${sep}" fi if [ "$newline" = 1 ]; then if [ -n "$NPIPE_OUT" ]; then printf "\n" > "$NPIPE_OUT" else printf "\n" fi fi } if [ -t 0 ]; then _pipe_dir="${XDG_RUNTIME_DIR:-/tmp/$(id -u)-runtime}/acejuice" mkdir -p "$_pipe_dir" NPIPE_IN="$_pipe_dir/acejuice-pulse.sock" unset _pipe_dir if ! mkfifo "$NPIPE_IN" 2> /dev/null; then printf "fifo '%s' already present\n" "$NPIPE_IN" >&2 fi while read -r line ; do __send $line done < "$NPIPE_IN" else while read -r line ; do __send $line done fi