File: pause_audio

package info (click to toggle)
hibernate 2.0%2B15%2Bg88d54a8-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch, wheezy
  • size: 740 kB
  • ctags: 114
  • sloc: sh: 1,223; makefile: 17
file content (71 lines) | stat: -rw-r--r-- 2,042 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -*- 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$