]> code.delx.au - mediapc-tools/blob - mediawrap
mediawrap: fixed small bug
[mediapc-tools] / mediawrap
1 #!/bin/bash
2
3 PIDFILE="$HOME/.mediawrap.pid"
4 PULSESTATE="$HOME/.pulseaudio.state"
5 KEYPATH="/apps/gnome_settings_daemon/keybindings"
6
7 # Wait for any other wrapped software to finish
8 for i in $(seq 6); do
9 if [ ! -r "$PIDFILE" ]; then
10 break
11 fi
12 if [ "$(ps -o cmd= -p "$(cat "$PIDFILE")" | wc -l)" -eq 0 ]; then
13 rm -f "$PIDFILE"
14 break
15 fi
16 sleep 0.5
17 done
18 if [ -r "$PIDFILE" ]; then
19 exit 1
20 fi
21 echo $$ > "$PIDFILE"
22
23 # Disable volume keys
24 if [ "$1" = "--disable-volume-keys" ]; then
25 disable_volume_keys=1
26 shift
27 gconftool --set --type string "$KEYPATH/volume_up" ''
28 gconftool --set --type string "$KEYPATH/volume_down" ''
29 gconftool --set --type string "$KEYPATH/volume_mute" ''
30 fi
31
32 # Unmute everything and turn volume to full
33 if [ "$1" = "--max-volume" ]; then
34 max_volume=1
35 shift
36 pacmd 'dump' | grep 'set-sink' > "$PULSESTATE"
37 cat "$PULSESTATE" | grep 'set-sink-mute' | awk '{print $2;}' | \
38 while read device; do
39 pacmd "set-sink-volume $device 0x10000" > /dev/null
40 pacmd "set-sink-mute $device no" > /dev/null
41 done
42 fi
43
44 # Run the program
45 "$@" &> /dev/null
46
47
48 # Restore volume levels and mute status
49 if [ -n "$max_volume" ]; then
50 cat "$PULSESTATE" | pacmd > /dev/null
51 fi
52
53 # Enable volume keys
54 if [ -n "$disable_volume_keys" ]; then
55 gconftool --set --type string "$KEYPATH/volume_up" 'XF86AudioRaiseVolume'
56 gconftool --set --type string "$KEYPATH/volume_down" 'XF86AudioLowerVolume'
57 gconftool --set --type string "$KEYPATH/volume_mute" 'XF86AudioMute'
58 fi
59
60 # Cleanup so other programs can start
61 rm -f "$PIDFILE"
62