From 89f8bfea348897f2c94fd9e6dcf152961a0fb83d Mon Sep 17 00:00:00 2001 From: Jessica Frazelle Date: Thu, 18 Jun 2015 18:02:52 -0700 Subject: [PATCH] add pulseaudio to connect to spotify Signed-off-by: Jessica Frazelle --- pulseaudio/Dockerfile | 4 + pulseaudio/client.conf | 37 +++++++++ pulseaudio/daemon.conf | 86 ++++++++++++++++++++ pulseaudio/default.pa | 180 +++++------------------------------------ skype/Dockerfile | 5 +- 5 files changed, 151 insertions(+), 161 deletions(-) create mode 100644 pulseaudio/client.conf create mode 100644 pulseaudio/daemon.conf diff --git a/pulseaudio/Dockerfile b/pulseaudio/Dockerfile index 9baa163..5548110 100644 --- a/pulseaudio/Dockerfile +++ b/pulseaudio/Dockerfile @@ -5,6 +5,8 @@ # --device /dev/snd \ # --name pulseaudio \ # -p 4713:4713 \ +# -v /var/run/dbus:/var/run/dbus \ +# -v /etc/machine-id:/etc/machine-id \ # jess/pulseaudio # FROM debian:sid @@ -28,6 +30,8 @@ WORKDIR $HOME USER pulseaudio COPY default.pa /etc/pulse/default.pa +COPY client.conf /etc/pulse/client.conf +COPY daemon.conf /etc/pulse/daemon.conf ENTRYPOINT [ "pulseaudio" ] CMD [ "--log-level=4", "--log-target=stderr", "-v" ] diff --git a/pulseaudio/client.conf b/pulseaudio/client.conf new file mode 100644 index 0000000..cb5551d --- /dev/null +++ b/pulseaudio/client.conf @@ -0,0 +1,37 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA. + +## Configuration file for PulseAudio clients. See pulse-client.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; default-sink = +; default-source = +; default-server = +; default-dbus-server = + +autospawn = no +daemon-binary = /bin/true +; extra-arguments = --log-target=syslog + +; cookie-file = + +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB + +; auto-connect-localhost = no +; auto-connect-display = no diff --git a/pulseaudio/daemon.conf b/pulseaudio/daemon.conf new file mode 100644 index 0000000..f01ae85 --- /dev/null +++ b/pulseaudio/daemon.conf @@ -0,0 +1,86 @@ +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see . + +## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for +## more information. Default values are commented out. Use either ; or # for +## commenting. + +; daemonize = no +; fail = yes +; allow-module-loading = yes +; allow-exit = yes +; use-pid-file = yes +; system-instance = no +; local-server-type = user +; enable-shm = yes +; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB +; lock-memory = no +; cpu-limit = no + +; high-priority = yes +; nice-level = -11 + +; realtime-scheduling = yes +; realtime-priority = 5 + +exit-idle-time = 180 +; scache-idle-time = 20 + +; dl-search-path = (depends on architecture) + +; load-default-script-file = yes +; default-script-file = /etc/pulse/default.pa + +; log-target = auto +; log-level = notice +; log-meta = no +; log-time = no +; log-backtrace = 0 + +; resample-method = speex-float-1 +; enable-remixing = yes +; enable-lfe-remixing = no + +flat-volumes = yes + +; rlimit-fsize = -1 +; rlimit-data = -1 +; rlimit-stack = -1 +; rlimit-core = -1 +; rlimit-as = -1 +; rlimit-rss = -1 +; rlimit-nproc = -1 +; rlimit-nofile = 256 +; rlimit-memlock = -1 +; rlimit-locks = -1 +; rlimit-sigpending = -1 +; rlimit-msgqueue = -1 +; rlimit-nice = 31 +; rlimit-rtprio = 9 +; rlimit-rttime = 200000 + +; default-sample-format = s16le +; default-sample-rate = 44100 +; alternate-sample-rate = 48000 +; default-sample-channels = 2 +; default-channel-map = front-left,front-right + +; default-fragments = 4 +; default-fragment-size-msec = 25 + +; enable-deferred-volume = yes +; deferred-volume-safety-margin-usec = 8000 +; deferred-volume-extra-delay-usec = 0 + diff --git a/pulseaudio/default.pa b/pulseaudio/default.pa index 3e3267b..699a0df 100644 --- a/pulseaudio/default.pa +++ b/pulseaudio/default.pa @@ -1,164 +1,26 @@ -#!/usr/bin/pulseaudio -nF -# -# This file is part of PulseAudio. -# -# PulseAudio is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# PulseAudio is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with PulseAudio; if not, see . - -# This startup script is used only if PulseAudio is started per-user -# (i.e. not in system mode) - -.nofail - -### Load something into the sample cache -#load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/bell.oga -#load-sample-lazy pulse-hotplug /usr/share/sounds/freedesktop/stereo/device-added.oga -#load-sample-lazy pulse-coldplug /usr/share/sounds/freedesktop/stereo/device-added.oga -#load-sample-lazy pulse-access /usr/share/sounds/freedesktop/stereo/message.oga +# Replace the *entire* content of this file with these few lines and +# read the comments .fail + # Set tsched=0 here if you experience glitchy playback. This will + # revert back to interrupt-based scheduling and should fix it. + # + # Replace the device= part if you want pulse to use a specific device + # such as "dmix" and "dsnoop" so it doesn't lock an hw: device. + + # INPUT/RECORD + load-module module-alsa-source device="default" tsched=1 + + # OUTPUT/PLAYBACK + load-module module-alsa-sink device="default" tsched=1 + + # Accept clients -- very important + load-module module-native-protocol-unix + load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1 -### Automatically restore the volume of streams and devices -load-module module-device-restore -load-module module-stream-restore -load-module module-card-restore - -### Automatically augment property information from .desktop files -### stored in /usr/share/application -load-module module-augment-properties - -### Should be after module-*-restore but before module-*-detect -load-module module-switch-on-port-available - -### Load audio drivers statically -### (it's probably better to not load these drivers manually, but instead -### use module-udev-detect -- see below -- for doing this automatically) -#load-module module-alsa-sink -#load-module module-alsa-source device=hw:1,0 -#load-module module-oss device="/dev/dsp" sink_name=output source_name=input -#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input -#load-module module-null-sink -#load-module module-pipe-sink - -### Automatically load driver modules depending on the hardware available -.ifexists module-udev-detect.so -load-module module-udev-detect -.else -### Use the static hardware detection module (for systems that lack udev support) -load-module module-detect -.endif - -### Automatically connect sink and source if JACK server is present -.ifexists module-jackdbus-detect.so .nofail -load-module module-jackdbus-detect channels=2 -.fail +.ifexists module-x11-publish.so + # Publish to X11 so the clients know how to connect to Pulse. Will + # clear itself on unload. + load-module module-x11-publish .endif - -### Automatically load driver modules for Bluetooth hardware -.ifexists module-bluetooth-policy.so -load-module module-bluetooth-policy -.endif - -.ifexists module-bluetooth-discover.so -load-module module-bluetooth-discover -.endif - -### Load several protocols -.ifexists module-esound-protocol-unix.so -load-module module-esound-protocol-unix -.endif -load-module module-native-protocol-unix - -### Network access (may be configured with paprefs, so leave this commented -### here if you plan to use paprefs) -#load-module module-esound-protocol-tcp -#load-module module-native-protocol-tcp -#load-module module-zeroconf-publish - -### Load the RTP receiver module (also configured via paprefs, see above) -#load-module module-rtp-recv - -### Load the RTP sender module (also configured via paprefs, see above) -#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" -#load-module module-rtp-send source=rtp.monitor - -### Load additional modules from GConf settings. This can be configured with the paprefs tool. -### Please keep in mind that the modules configured by paprefs might conflict with manually -### loaded modules. -.ifexists module-gconf.so -.nofail -load-module module-gconf -.fail -.endif - -### Automatically restore the default sink/source when changed by the user -### during runtime -### NOTE: This should be loaded as early as possible so that subsequent modules -### that look up the default sink/source get the right value -load-module module-default-device-restore - -### Automatically move streams to the default sink if the sink they are -### connected to dies, similar for sources -load-module module-rescue-streams - -### Make sure we always have a sink around, even if it is a null sink. -load-module module-always-sink - -### Honour intended role device property -load-module module-intended-roles - -### Automatically suspend sinks/sources that become idle for too long -load-module module-suspend-on-idle - -### If autoexit on idle is enabled we want to make sure we only quit -### when no local session needs us anymore. -#.ifexists module-console-kit.so -#load-module module-console-kit -#.endif -#.ifexists module-systemd-login.so -#load-module module-systemd-login -#.endif - -### Enable positioned event sounds -load-module module-position-event-sounds - -### Cork music/video streams when a phone stream is active -load-module module-role-cork - -### Modules to allow autoloading of filters (such as echo cancellation) -### on demand. module-filter-heuristics tries to determine what filters -### make sense, and module-filter-apply does the heavy-lifting of -### loading modules and rerouting streams. -load-module module-filter-heuristics -load-module module-filter-apply - -# X11 modules should not be started from default.pa so that one daemon -# can be shared by multiple sessions. - -### Load X11 bell module -#load-module module-x11-bell sample=x11-bell - -### Register ourselves in the X11 session manager -#load-module module-x11-xsmp - -### Publish connection data in the X11 root window -#.ifexists module-x11-publish.so -#.nofail -#load-module module-x11-publish -#.fail -#.endif - -### Make some devices default -#set-default-sink output -#set-default-source input diff --git a/skype/Dockerfile b/skype/Dockerfile index 2f75307..94f5f73 100644 --- a/skype/Dockerfile +++ b/skype/Dockerfile @@ -2,9 +2,10 @@ # (but I have a container for that) # # docker run -v /tmp/.X11-unix:/tmp/.X11-unix \ -# -v /dev/snd:/dev/snd \ # -e DISPLAY=unix$DISPLAY \ -# --link pulseaudio \ +# --link pulseaudio:pulseaudio \ +# -e PULSE_SERVER=pulseaudio \ +# --device /dev/video0 \ # jess/skype # FROM debian:jessie