X-Git-Url: https://code.delx.au/mediapc-tools/blobdiff_plain/d08ee4bb7aa002393b02f128c64c5e79c0fd6227..1c7fa10015a5f6970bc0e8de76fe02ced5edb430:/mediawrap diff --git a/mediawrap b/mediawrap index 7a19264..312072a 100755 --- a/mediawrap +++ b/mediawrap @@ -1,42 +1,19 @@ #!/bin/bash -PIDFILE="$HOME/.mediawrap.pid" -PULSESTATE="$HOME/.pulseaudio.state" -KEYPATH="/apps/gnome_settings_daemon/keybindings" +LOCKFILE="$HOME/.mediawrap.lock" -while true; do - if [ ! -r "$PIDFILE" ]; then - break - fi - if [ "$(ps -o cmd= -p "$(cat "$PIDFILE")" | wc -l)" -eq 0 ]; then - break - fi - sleep 0.5 -done - -# Disable volume keys -gconftool --set --type string "$KEYPATH/volume_up" '' -gconftool --set --type string "$KEYPATH/volume_down" '' -gconftool --set --type string "$KEYPATH/volume_mute" '' - -# Unmute everything and turn volume to full -pacmd 'dump' | grep 'set-sink' > "$PULSESTATE" -cat "$PULSESTATE" | grep 'set-sink-mute' | awk '{print $2;}' | \ - while read device; do - pacmd "set-sink-volume $device 0x10000" > /dev/null - pacmd "set-sink-mute $device no" > /dev/null - done +( +if ! flock -w 10 -x 200; then + echo "Failed to get a lock!" + exit 1 +fi # Run the program -"$@" +"$@" &> /dev/null -# Restore volume levels and mute status -cat "$PULSESTATE" | pacmd > /dev/null -# Enable volume keys -gconftool --set --type string "$KEYPATH/volume_up" 'XF86AudioRaiseVolume' -gconftool --set --type string "$KEYPATH/volume_down" 'XF86AudioLowerVolume' -gconftool --set --type string "$KEYPATH/volume_mute" 'XF86AudioMute' +) 200>"$LOCKFILE" -rm -f "$PIDFILE" +# Cleanup so other programs can start +rm -f "$LOCKFILE"