Skip to content

Instantly share code, notes, and snippets.

@farsil
Created March 6, 2020 09:41
Show Gist options
  • Save farsil/e1a4bd16349e1900156ae9be25b463bc to your computer and use it in GitHub Desktop.
Save farsil/e1a4bd16349e1900156ae9be25b463bc to your computer and use it in GitHub Desktop.
Sound Controller
#!/usr/bin/env bash
VALUE_FONT=${font:-$(xrescat i3xrocks.value.font "Source Code Pro Medium 13")}
VALUE_COLOR=$(xrescat i3xrocks.nominal white)
LABEL_COLOR=${label_color:-$(xrescat i3xrocks.label.color "#7B8394")}
read -r DEVICE MIXER <<< "$BLOCK_INSTANCE"
[[ -z "$DEVICE" ]] && DEVICE="default"
[[ -z "$MIXER" ]] && MIXER="Master"
case $BLOCK_BUTTON in
3) amixer -q -D "$DEVICE" set "$MIXER" toggle ;;
4) amixer -q -D "$DEVICE" set "$MIXER" 1db+ ;;
5) amixer -q -D "$DEVICE" set "$MIXER" 1db- ;;
esac
PATTERN='\[[0-9]+%\] (\[(-?[0-9]+)\.([0-9]+)dB\] )?\[(on|off)\]'
if [[ $(amixer -D $DEVICE get $MIXER) =~ $PATTERN ]]; then
VOL=${BASH_REMATCH[2]}
VOL_DEC=${BASH_REMATCH[3]}
STATE=${BASH_REMATCH[4]}
else
LABEL_ICON="$(echo -e '\uf026')"
VALUE_COLOR=$(xrescat i3xrocks.warning yellow)
LABEL_COLOR=$(xrescat i3xrocks.warning yellow)
printf "<span color=\"%s\">%s</span><span font_desc=\"%s\" color=\"%s\">No Sound</span>\n" \
"$LABEL_COLOR" "$LABEL_ICON" "$VALUE_FONT" "$VALUE_COLOR"
exit 0
fi
if [[ $STATE = "off" ]]; then
LABEL_ICON="$(echo -e '\uf026')"
VALUE_COLOR=$(xrescat i3xrocks.warning yellow)
LABEL_COLOR=$(xrescat i3xrocks.warning yellow)
elif [ "$VOL" -le -31 ]; then
LABEL_ICON="$(echo -e '\uf027')"
else
LABEL_ICON="$(echo -e '\uf028')"
fi
printf "<span color=\"%s\">%s</span><span font_desc=\"%s\" color=\"%s\"> %d.%02d dB</span>\n" \
"$LABEL_COLOR" "$LABEL_ICON" "$VALUE_FONT" "$VALUE_COLOR" "$VOL" "$VOL_DEC"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment