]> code.delx.au - mediapc-tools/blob - mediawrap
mediawrap: support xfce4-volumed on ubuntu
[mediapc-tools] / mediawrap
1 #!/bin/bash
2
3 LOCKFILE="$HOME/.mediawrap.lock"
4 PULSESTATE="$HOME/.pulseaudio.state"
5
6 (
7 if ! flock -w 10 -x 200; then
8 echo "Failed to get a lock!"
9 exit 1
10 fi
11 echo "got lock"
12
13 # Unmute everything and turn volume to full
14 if [ "$1" = "--max-volume" ]; then
15 echo "max volume"
16 max_volume=1
17 shift
18 pacmd 'dump' | grep 'set-sink' > "$PULSESTATE"
19 cat "$PULSESTATE" | grep 'set-sink-mute' | awk '{print $2;}' | \
20 while read device; do
21 pacmd "set-sink-volume $device 0x10000" > /dev/null
22 pacmd "set-sink-mute $device no" > /dev/null
23 done
24 fi
25
26 # Switch volume keys to F8/F9/F10 with xmodmap
27 if [ "$1" = "--pause-gnome-volume" ]; then
28 echo "disable gnome volume"
29 pause_gnome_volume=1
30 shift
31 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-mute ''
32 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-down ''
33 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-up ''
34 fi
35
36 # Stop XFCE4 volume control
37 if [ "$1" = "--pause-xfce4-volumed" ]; then
38 echo "killall xfce4-volumed*"
39 if killall -q xfce4-volumed; then
40 pause_xfce4_volumed="xfce4-volumed"
41 elif killall -q xfce4-volumed-pulse; then
42 pause_xfce4_volumed="xfce4-volumed-pulse"
43 fi
44 shift
45 fi
46
47 # Run the program
48 "$@" &> /dev/null
49
50
51 # Restore volume levels and mute status
52 if [ -n "$max_volume" ]; then
53 cat "$PULSESTATE" | pacmd > /dev/null
54 fi
55
56 # Restore volume keys
57 if [ -n "$pause_gnome_volume" ]; then
58 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-mute 'XF86AudioMute'
59 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-down 'XF86AudioLowerVolume'
60 gsettings set org.gnome.settings-daemon.plugins.media-keys volume-up 'XF86AudioRaiseVolume'
61 fi
62
63 # Restore volume keys
64 if [ -n "$pause_xfce4_volumed" ]; then
65 "$pause_xfce4_volumed"
66 fi
67
68 ) 200>"$LOCKFILE"
69
70 # Cleanup so other programs can start
71 rm -f "$LOCKFILE"
72