Skip to content

Instantly share code, notes, and snippets.

@westurner
Created September 9, 2012 02:00
Show Gist options
  • Save westurner/3682054 to your computer and use it in GitHub Desktop.
Save westurner/3682054 to your computer and use it in GitHub Desktop.
PulseAudio Configuration
#!/bin/bash -x
export PULSE_SERVER=127.0.0.1
DEFAULT_COOKIE="/etc/pulse/default_cookie"
SOUNDCHECK="/usr/share/sounds/alsa/Front_Center.wav"
# see: http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules#module-native-protocol-.7Bunix.2Ctcp.7D
COOKIE_CONFIG="auth-anonymous=0 auth-cookie-enabled=1 \
auth-cookie=${DEFAULT_COOKIE}"
# COOKIE_CONFIG="${COOKIE_CONFIG} auth-ip-acl=127.0.0.0/8;192.168.0.0/24"
configure_libao() {
CONF="/etc/libao.conf"
if ! [ -f "$CONF" ]; then
echo 'default_driver=pulse' > $CONF
echo 'quiet' >> $CONF
else
sed -i 's/default_driver=.*/default_driver=pulse/g' $CONF
fi
}
new_cookie() {
DEST=${1:-$DEFAULT_COOKIE}
if [ -f "$DEST" ]; then
echo "Error: '$DEST' exists."
else
dd if=/dev/urandom of="$DEST" bs=256 count=1
fi
}
install_client() {
apt-get install -y pulseaudio pulseaudio-utils paman paprefs pavucontrol
configure_libao
echo 'If pulseaudio was not already installed, you may need to'
echo 'log out and log back in again.'
}
install_server() {
apt-get install -y pulseaudio
CONF="/etc/pulse/default.pa"
SYSCONF="/etc/pulse/system.pa"
DEFAULT="/etc/default/pulseaudio"
sed -i 's/PULSEAUDIO_SYSTEM_START=0/PULSEAUDIO_SYSTEM_START=1/g' "$DEFAULT"
sed -i 's/DISALLOW_MODULE_LOADING=0/DISALLOW_MODULE_LOADING=1/g' "$DEFAULT"
sed -i "s/#load-module module-native-protocol-tcp/load-module module-native-protocol-tcp $COOKIE_CONFIG/g" "$CONF"
sed -i "s/#load-module module-rtp-recv/load-module module-rtp-recv/g" "$CONF"
sed -i "s/load-module module-native-protocol.*/load-module module-native-protocol-tcp $COOKIE_CONFIG/g" $SYSCONF || \
echo "load-module module-native-protocol-tcp $COOKIE_CONFIG" >> $SYSCONF
/etc/init.d/pulseaudio start
/etc/init.d/pulseaudio restart
}
start() {
pax11publish -e -r
pulseaudio --start --log-target=syslog
pacmd load-module module-native-protocol-tcp
pacmd load-module module-device-manager
pax11publish -e -S $PULSE_SERVER
status
pacat "$SOUNDCHECK"
pavucontrol 2>&1 &
}
stop() {
pax11publish -e -r
sleep 1
pulseaudio -k
sleep 2
status
}
status(){
ps aufx | grep pulse
}
case "$1" in
server) install_server ;;
client) install_client ;;
new_cookie) new_cookie $2 ;;
push_cookie) scp "$DEFAULT_COOKIE" "$2" ;;
start) start ;;
status) status ;;
stop) stop ;;
restart) status; stop; start; status ;;
*) echo "usage: $0 <server|client|new_cookie|push_cookie|start|status|stop>" ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment