# -*- sh -*-
# vim:ft=sh:ts=8:sw=4:noet

AddConfigHandler PauseAudioOptions
AddConfigHelp "MuteAudio <boolean>" "This will mute your speakers on suspend to avoid compromising situations on resume."
AddConfigHelp "PauseAudio <boolean>" "This will pause your audio player before suspending. Audio is not unpaused on resume."

PauseAudio() {
    local auuser
    # Pause quodlibet
    for auuser in $(ps aux | grep -w '[q]uodlibet' | awk '{print $1}' | sort | uniq); do
	local homedir
	homedir=$(getent passwd "$auuser" | cut -d: -f 6)
	if [ -p $homedir/.quodlibet/control ]; then
	    vecho 1 "Pausing $auuser quodlibet.."
	    echo pause > $homedir/.quodlibet/control
	fi
    done
    # Pause xmms
    for auuser in $(ps aux | grep -w '[x]mms' | awk '{print $1}' | sort | uniq); do
	su $auuser -c 'xmms -u'
    done
    # Pause beep media player
    for auuser in $(ps aux | grep -w '[b]eep-media-player' | awk '{print $1}' | sort | uniq); do
	FindXServer
	su $auuser -c 'beep-media-player -u'
    done
    # Pause amaroK
    for auuser in $(ps aux | grep -w '[a]marok' | awk '{print $1}' | sort | uniq); do
	FindXServer
	if [ "`su $auuser -c 'dcop amarok player status'`" = "2" ]; then
	    su $auuser -c 'dcop amarok player pause'
	fi
    done
    # Add your favourite media player here.
    # And then perhaps think up a less horrific way of doing this.
    return 0
}

MuteAudio() {
    # Just try it and see!
    amixer set Master mute > /dev/null 2>&1
    return 0
}

PauseAudioOptions() {
    case $1 in
	muteaudio)
	    BoolIsOn "$1" "$2" || return 0
    	    if [ -z "$MUTEAUDIO_HOOKED" ] ; then
		AddSuspendHook 15 MuteAudio
		MUTEAUDIO_HOOKED=1
	    fi
	    ;;
	pauseaudio)
	    BoolIsOn "$1" "$2" || return 0
    	    if [ -z "$PAUSEAUDIO_HOOKED" ] ; then
		# Run before device scriptlet kills programs accessing
		# some devices. Pausing can prevent an audio player
		# from using a device and getting killed.
		AddSuspendHook 15 PauseAudio
		PAUSEAUDIO_HOOKED=1
	    fi
	    ;;
	*)
	    return 1
    esac
    return 0
}

# $Id: pause_audio 1139 2007-07-16 12:33:07Z nigel $
