#! /bin/sh

. "${PM_FUNCTIONS}"

get_pulse_users() {
    ps -C pulseaudio -o uid= | tr -d ' '
}

get_pulse_sinks() {
    echo list-sinks | pacmd | awk '/\* index:/ {print $3}'
}

get_pulse_sources() {
    echo list-sources | pacmd | awk '/\* index:/ {print $3}'
}

suspend_pulse() {
    for i in $(get_pulse_users); do
        for j in $(get_pulse_sinks); do
            echo set-sink-mute $j true | sudo -H -u \#$i pacmd &> /dev/null
        done
        for j in $(get_pulse_sources); do
            echo set-source-mute $j true | sudo -H -u \#$i pacmd &> /dev/null
        done
        echo suspend true | sudo -H -u \#$i pacmd &> /dev/null
    done
}

resume_pulse() {
    for i in $(get_pulse_users); do
        for j in $(get_pulse_sinks); do
            echo set-sink-mute $j false | sudo -H -u \#$i pacmd &> /dev/null
        done
        for j in $(get_pulse_sources); do
            echo set-source-mute $j false | sudo -H -u \#$i pacmd &> /dev/null
        done
        echo suspend false | sudo -H -u \#$i pacmd &> /dev/null
    done
}

case $1 in 
    hibernate|suspend)
        suspend_pulse
        ;;
    thaw|resume)
        resume_pulse
        ;;
    *) exit $NA
        ;;
esac
