first commit
This commit is contained in:
parent
f08be84b3f
commit
e7fc62c950
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@ -0,0 +1,35 @@
|
||||
# Run pulseaudio server in a container
|
||||
#
|
||||
# TODO
|
||||
# - reset volume to 80% and keep it enabled when the container runs
|
||||
#
|
||||
|
||||
FROM debian:jessie
|
||||
MAINTAINER Andrey Arapov <andrey.arapov@nixaid.com>
|
||||
# Inspired by Jessica Frazelle <jess@docker.com>
|
||||
|
||||
# To avoid problems with Dialog and curses wizards
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# Define a user under which the pulseaudio server will be running
|
||||
ENV USER pulseaudio
|
||||
ENV UID 1000
|
||||
ENV GROUPS audio
|
||||
ENV HOME /home/$USER
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -yq pulseaudio pulseaudio-module-x11 \
|
||||
&& rm -rf /var/lib/apt/lists
|
||||
|
||||
COPY [ "default.pa", "client.conf", "daemon.conf", "/etc/pulse/" ]
|
||||
|
||||
RUN useradd -u $UID -m -d $HOME -s /usr/sbin/nologin $USER \
|
||||
&& usermod -aG $GROUPS $USER \
|
||||
&& chmod 0644 -- /etc/pulse/* \
|
||||
&& mkdir -p $HOME/.config/pulse \
|
||||
&& chown -Rh $USER:$USER -- $HOME
|
||||
|
||||
WORKDIR $HOME
|
||||
USER $USER
|
||||
VOLUME [ "/tmp", "$HOME/.config/pulse" ]
|
||||
ENTRYPOINT [ "/usr/bin/pulseaudio" ]
|
28
README.md
Normal file
28
README.md
Normal file
@ -0,0 +1,28 @@
|
||||
Readme
|
||||
======
|
||||
|
||||
Launching pulseaudio
|
||||
```
|
||||
echo "autospawn = no" > ~/.config/pulse/client.conf
|
||||
pulseaudio --kill
|
||||
rm -rf ~/.config/pulse/
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
If you wish your host system to use your docker pulseaudio server, e.g.
|
||||
accepting Fn volume Up/Down and On/Off keys, issue the following command
|
||||
```
|
||||
xprop -root -f PULSE_SERVER 8s -set PULSE_SERVER "tcp:localhost:4713"
|
||||
```
|
||||
|
||||
To remove pulseaudio properties from environment variables
|
||||
```
|
||||
pax11publish -e
|
||||
```
|
||||
|
||||
To test whether pulseaudio is working
|
||||
```
|
||||
PULSE_SERVER="tcp:localhost:4713" pactl list
|
||||
PULSE_SERVER="tcp:localhost:4713" alsamixer
|
||||
PULSE_SERVER="tcp:localhost:4713" mplayer some.avi
|
||||
```
|
2
client.conf
Normal file
2
client.conf
Normal file
@ -0,0 +1,2 @@
|
||||
autospawn = no
|
||||
daemon-binary = /bin/true
|
4
daemon.conf
Normal file
4
daemon.conf
Normal file
@ -0,0 +1,4 @@
|
||||
exit-idle-time = 180
|
||||
flat-volumes = yes
|
||||
log-target = stderr
|
||||
log-level = 4
|
37
default.pa
Normal file
37
default.pa
Normal file
@ -0,0 +1,37 @@
|
||||
.nofail
|
||||
# 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.
|
||||
# use aplay -l to find your device
|
||||
# test with: speaker-test -D plughw:PCH -l 3 -t sine -c 1
|
||||
|
||||
# INPUT/RECORD
|
||||
# load-module module-alsa-source device="default" tsched=1
|
||||
load-module module-alsa-source device="plughw:PCH" tsched=1
|
||||
|
||||
# OUTPUT/PLAYBACK
|
||||
# load-module module-alsa-sink device="default" tsched=1
|
||||
load-module module-alsa-sink device="plughw:PCH" tsched=1
|
||||
|
||||
# TODO: the below block has not been fully testsd yet (in this Docker container)
|
||||
### 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
|
||||
|
||||
# Accept clients -- very important!
|
||||
load-module module-native-protocol-unix
|
||||
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.0/8;172.0.0.0/8 auth-anonymous=1
|
||||
|
||||
.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
|
||||
|
||||
.fail
|
21
docker-compose.yml
Normal file
21
docker-compose.yml
Normal file
@ -0,0 +1,21 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
pulseaudio:
|
||||
build: ./
|
||||
read_only: true
|
||||
hostname: localhost
|
||||
networks:
|
||||
- net
|
||||
ports:
|
||||
- "4713:4713"
|
||||
devices:
|
||||
- /dev/snd
|
||||
volumes:
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix
|
||||
- /var/run/dbus:/var/run/dbus
|
||||
environment:
|
||||
DISPLAY: unix$DISPLAY
|
||||
|
||||
networks:
|
||||
net: {}
|
Loading…
Reference in New Issue
Block a user