Demi Marie Obenour <demiobenour@gmail.com> writes:
WirePlumber is completely overkill as a session manager here, and ideally a trivial session manager would be used instead. PipeWire is configured to listen on the PulseAudio socket, so PulseAudio compatibility works. pw-record and pw-play both work, and if PulseAudio is installed paplay and parecord also work. This does install a lot of unnecessary files into the VMs, which will hopefully be removed later as part of a debloating effort.
Only run-qemu has had a virtio-sound device added, as crosvm and Cloud Hypervisor require a virtio-user sound device and that is more complex to set up.
PipeWire and WirePlumber require that "$XDG_RUNTIME_DIR" exist, so create it in rc.init. Having a separate service to create a single directory is not worthwhile.
Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com> ---
This looks good to me now, with the exception of a couple of copyright fixes.
diff --git a/img/app/etc/pipewire/pipewire.conf b/img/app/etc/pipewire/pipewire.conf new file mode 100644 index 0000000000000000000000000000000000000000..5f1e34145e9dcb1497f7aa7bb0461f0f13931b1a --- /dev/null +++ b/img/app/etc/pipewire/pipewire.conf @@ -0,0 +1,227 @@ +# SPDX-License-Identifier: MIT + +# Copyright © 2018 Wim Taymans +# Copyright © 2025 Demi Marie Obenour
We should keep our own copyright notices in the SPDX-FileCopyrightText format. (It's fine to leave third party ones as they are though.)
diff --git a/img/app/etc/wireplumber/wireplumber.conf.d/99_spectrum.conf b/img/app/etc/wireplumber/wireplumber.conf.d/99_spectrum.conf new file mode 100644 index 0000000000000000000000000000000000000000..277e6019c46582afba12af9b1a27bb16ddd9e804 --- /dev/null +++ b/img/app/etc/wireplumber/wireplumber.conf.d/99_spectrum.conf @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: MIT +# SPDX-FileCopyrightText: 2019-2021 Collabora Ltd. +# SPDX-FileCopyrightText: 2025 Demi Marie Obenour + +# Copyright © 2019-2021 Collabora Ltd. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +wireplumber.profiles = { + spectrum = { + # Spectrum VMs are essentially embedded systems, in that they are + # not at all general-purpose. + inherits = [ main-embedded ] + # Disable video and Bluetooth + hardware.video-capture = disabled + hardware.bluetooth = disabled + # Media Session is definitely not running + check.no-media-session = disabled + } +} + +wireplumber.settings = { + # Default to 100% sink volume. The host will adjust this as needed. + device.routes.default-sink-volume = 1.0 +}
There is no way there is anything left in this file that is non-trivial creative expression owned by Collabora. It should be licensed CC0 like other configuration files in Spectrum, and the Collabora copyright should be dropped.