Containerized Tizonia cloud music player that uses the host's sound system.
Tizonia connects as a client directly to the hosts PulseAudio server and uses its configuration/devices to output the sound. This is achieved by mapping the UNIX socket used by PulseAudio in the host into the container and configuring its use.
Credits: Method borrowed from docker-pulseaudio-example.
Use the convenience script docker-tizonia.
The script bind mounts the host's '$HOME/.config/tizonia' to make 'tizonia.conf' available inside the container.
NOTE: The Tizonia process running inside the container needs 'rwx' permissions on this directory.
The script also bind mounts the host's '$HOME/.cache' to allow debug logs to be written to disk. For example, gmusicapi logs for Google Play Music can be found at '$HOME/.cache/gmusicapi/log/gmusicapi.log'
Once the script is in your path, and the permissions of '$HOME/.config/tizonia' have been changed, just use the usual Tizonia commands:
# Change Tizonia's config dir permissions
$ chmod a+wrx $HOME/.config/tizonia
# Install the wrapper script in a location in your PATH
$ sudo install docker-tizonia /usr/local/bin
# Pass the usual Tizonia commands to the wrapper
$ docker-tizonia --youtube-audio-mix-search "Queen Official"
It is required that PulseAudio to be installed via homebrew
(brew install pulseaudio
), and the following lines in
/usr/local/Cellar/pulseaudio/13.0/etc/pulse/default.pa
to be uncommented:
load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp
To choose the device being used for output, bring up a list of possible output devices and select one as the default sink:
pactl list short sinks
pacmd set-default-sink n # where n is the chosen output number
Start the Pulseaudio daemon:
pulseaudio --load=module-native-protocol-tcp --exit-idle-time=-1 --daemon
You should now be able to utilize the docker-tizonia
script to route audio from the docker
container to the host machine!
The Unlicense.
See tizonia-openmax-il.