#!/bin/bash . $(ffoom path) ffoo import pretty ffoo import saturnin_common usage() { mkusage "up" \ "down" \ "flip" \ "mute" \ "query is_muted" \ "unmute" } sound_is_muted() { # # At least one playback channel is muted # local master_status="$(amixer get Master)" echo "$master_status" \ | grep "Playback channels" \ | sed -e 's/.*: //; s/ - /\n/' \ | while read chname do grep -e "^ *$chname" <<<"$master_status" done \ | grep -qse '\[off\]$' } do_down() { # # turn volume down # amixer -q sset Master 5%- } do_flip() { # # mute or unmute # if sound_is_muted; then amixer -q sset Master unmute; else amixer -q sset Master mute; fi } do_mute() { # # mute # amixer -q sset Master mute } do_query() { # # Query properties # local query="$1" debug -v query case "$query" in is_muted) sound_is_muted; return $? ;; *) usage ;; esac } do_up() { # # turn volume up # amixer -q sset Master 5%+ } do_unmute() { # # mute # amixer -q sset Master unmute } action= while true; do case "$1" in up) action=up; shift ;; down) action=down; shift ;; flip) action=flip; shift ;; mute) action=mute; shift ;; query) action=query; shift ; break ;; unmute) action=unmute; shift ;; "") break ;; *) usage ;; esac done debug "\$*='$*'" debug -v action case $action in up|down|flip|mute|query|unmute) saturnin_wraphook "do_$action" "$@" ;; *) usage ;; esac