Recent Releases
0.5.607 Nov 2024 14:15
minor feature:
Additions: - Implemented before/after dependencies for components, to ensure correct load order in custom configurations. - Implemented profile inheritance in the configuration file. This allows profiles to inherit all the feature specifications of other profiles, which is useful to avoid copying long lists of features just to make small changes. - Added multi-instance configuration profiles, tested and documented them. - Added a `main-systemwide` profile, which is now the default for instances started via the system-wide systemd service and disables features that depend on the user session. - Added a `wp_core_connect_fd` method, which allows making a connection to PipeWire via an existing open socket (useful for portal-based connections). : - The Bluetooth auto-switch script now uses the common event source object managers, which should improve its stability (!663). - an where switching between Bluetooth profiles would temporarily link active audio streams to the internal speakers (!655).
0.5.502 Jul 2024 08:45
minor feature:
Highlights:
- Hotrelease to address crashes in the Bluetooth HSP/HFP autoswitch
functionality that were side-effects of some changes that were part
of the role-based linking policy.
Improvements:
- wpctl will now properly show a '*' in front of sink filters when they are
selected as the default sink (!660).
Past releases.
0.5.427 Jun 2024 13:25
minor bugfix:
Highlights:
- Refactored the role-based linking policy (previously known also as.
"endpoints" or "virtual items" policy) to blend in with the standard desktop.
Policy. It is now possible use role-based sinks alongside standard desktop
Audio operations and they will only be used for streams that have a
"media.role" defined. It is also possible to force streams to have a.
Media.role, using a setting. Other features include: blending with smart
Filters in the graph and allowing hardware DSP nodes to be also used easily
Instead of requiring software loopbacks for all roles. (#610, !649)
Improvements:
- Filters that are not declared as smart will now behave again as normal.
Application streams, instead of being treated sometimes differently (!657)
:
- an that would cause WirePlumber to crash at startup if an.
Empty configuration file was present in one of the search paths
- Bluetooth profile auto-switching when a filter is permanently linked
to the Bluetooth source (!650).
- an in the software-dsp script that would cause DSP filters to.
Stay around and cause after their device node was destroyed (!651)
- an in the autoswitch-bluetooth-profile script that could cause
an infinite loop of switching between profiles (!652, #617).
- a rare that could cause WirePlumber to crash when dealing with
a device object that didn't have the "device.name" property set.
Past releases.
0.5.303 Jun 2024 02:05
minor bugfix:
:
- a long standing that would cause many device nodes to have.
Inconsistent naming, with a '.N' suf(where N is a number = 2) being
Appended at seemingly random times
- an that would cause unavailable device profiles to be selected
if they were previously stored in the state file, sometimes requiring users
to manually remove the state file to get things working again.
- an occasional crash that could sometimes be triggered by hovering.
The volume icon on the KDE taskbar, and possibly other similar actions
(#628, !644).
Camera device deduplication logic when the same device is available.
Through both V4L2 and libcamera, and the libcamera one groups multiple V4L2
Devices together (#623, !636)
Applying the default volume on streams that have no volume previously.
Stored in the state file
- an that would prevent some camera nodes - in some cases -.
From being destroyed when the camera device is removed
- an that would cause video stream nodes to be linked with audio.
Smart filters, if smart audio filters were configured (!647)
- an that would cause WP to re-activate device profiles even.
Though they were already active (!639)
- Configuration files in standard JSON format (starting with a ' ', among.
Other things) are now correctly parsed
Overriding non-container values when merging JSON objects.
- Functions marked with WP_PRIVATE_API are now also marked as.
Non-introspectable in the gobject-introspection metadata
Improvements:
- Logging on the systemd journal now includes the log topic and also the log.
Level and location directly on the message string when the log level is
High enough, which is useful for gathering additional context in logs
Submitted by users (!640)
- Added a video-only profile in wireplumber.conf, for systems where only.
Camera screensharing are to be used
- Improved seat state monitoring so that Bluetooth devices are only enabled.
When the user is active on a local seat, instead of allowing remote users
as well (!641).
- Impr
0.5.223 Apr 2024 09:05
minor bugfix:
Highlights:
- Added support for loading configuration files other than the default
wireplumber.conf within Lua scripts (!629).
- Added support for loading single-section configuration files, without
fragments (!629).
- Updated the node.software-dsp script to be able to load filter-chain graphs
from external configuration files, which is needed for Asahi Linux audio
DSP configuration (!629).
:
- destroying camera nodes when the camera device is removed (#627, !631).
- an with Bluetooth BAP device set naming (!632).
- an caused by the pipewire event loop not being "entered" as
expected (!634, #638).
- A false positive warning about no modules being loaded is now suppressed
when using libpipewire = 1.0.5.
- Default nodes can now be selected using priority.driver when
priority.session is not set.
Changes:
- The library version is now generated following pipewire's versioning scheme:
libwireplumber-0.5.so.0.5.2 becomes libwireplumber-0.5.so.0.0502.0 (!633).
Past releases.
0.5.131 Mar 2024 12:05
minor bugfix:
Highlights:
- Added a guide documenting how to migrate configuration from 0.4 to 0.5.
Also available online at:
Https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html
If you are packaging WirePlumber for a distribution, please consider.
Informing users about this.
:
- an odd where microphones would stop being usable when a
Bluetooth headset was connected in the HSP/HFP profile (#598, !620).
- an where it was not possible to store the volume/mute state of.
System notifications
- a rare crash that could occur when a node was destroyed while the.
'select-target' event was still being processed (!621).
Deleting all the persistent settings via `wpctl --delete` (!622).
Using Bluetooth autoswitch with A2DP profiles that have an input route.
(!624).
Sending an error to clients when linking fails due to a format.
Mismatch (!625)
Additions:
- Added a check that prints a verbose warning when old-style 0.4.x Lua.
Configuration files are found in the system.
- The "policy-dsp" script, used in Asahi Linux to provide a software DSP.
For Apple Sillicon devices, has now been ported to 0.5 properly and
Documented (#619, !627)
Past releases.
0.5.020 Mar 2024 07:05
major bugfix:
Changes:
- Bumped the minimum required version of PipeWire to 1.0.2, because we.
Make use of the 'api.bluez5.internal' property of the BlueZ monitor (!613)
- Improved the naming of Bluetooth nodes when the auto-switching loopback.
Node is present (!614)
- Updated the documentation on "settings", the Bluetooth monitor, the Access.
Configuration, the file search locations and added a document on how to
Modify the configuration file (#595, !616)
:
Checking for available routes when selecting the default node (!609).
- an that was causing an infinite loop storing routes in the.
State file (!610)
The interpretation of boolean values in the alsa monitor rules (#586, !611).
- a Lua crash when we have 2 smart filters, one with a target and one.
Without (!612)
- an where the default nodes would not be updated when the.
Currently selected default node became unavailable (#588, !615)
- an that would cause the Props (volume, mute, etc) of loopbacks.
And other filter nodes to not be restored at startup (#577, !617)
How some constants were represented in the gobject-introspection file.
Mostly by converting them from defines to enums (#540, #591)
- an using WirePlumber headers in other projects due to.
Redefinition of G_LOG_DOMAIN
Past releases.
0.4.9005 Mar 2024 10:25
minor feature:
This is the first release candidate (RC1) of WirePlumber 0.5.0.
Highlights:
- The configuration system has been changed back to load files from the
WirePlumber configuration directories, such as `/etc/wireplumber` and.
` XDG_CONFIG_HOME/wireplumber`, unlike in the pre-releases. This was done.
Because were observed with installations that use a different pre for pipewire and wireplumber. If you had a `wireplumber.conf` file in
`/etc/pipewire` or ` XDG_CONFIG_HOME/pipewire`, you should move it to.
`/etc/wireplumber` or ` XDG_CONFIG_HOME/wireplumber` respectively (!601).
- The internal base directories lookup system now also respects the.
`XDG_CONFIG_DIRS` and `XDG_DATA_DIRS` environment variables, and their.
Default values as per the XDG spec, so it is possible to install
Configuration files also in places like `/etc/xdg/wireplumber` and
Override system-wide data paths (!601)
- `wpctl` now has a `settings` subcommand to show, change and delete.
Settings at runtime. This comes with changes in the `WpSettings` system to
Validate settings using a schema that is defined in the configuration file.
The schema is also exported on a metadata object, so it is available to any.
Client that wants to expose WirePlumber settings (!599, !600)
- The `WpConf` API has changed to not be a singleton and support opening.
Arbitrary config files. The main config file now needs to be opened prior to
Creating a `WpCore` and passed to the core using a property. The core uses
That without letting the underlying `pw_context` open and read the default
`client.conf`. The core also the `WpConf` after all components.
Are loaded, which means all the config loading is done early at startup.
Finally, `WpConf` loads all sections lazily, keeping the underlying files.
Memory mapped until it is and merging them on demand (!601, !606)
Past releases.
0.4.8215 Feb 2024 07:05
minor feature:
This is a second pre-release of WirePlumber 0.5.0, made available for testing
Purposes. This is not API/ABI stable yet and there is still pending work to do
Before the final 0.5.0 release, both in the codebase and the documentation.
Highlights:
- Bluetooth auto-switching is now implemented with a virtual source node. When
an application links to it, the actual device switches to the HSP/HFP.
Profile to provide the real audio stream. This is a more robust solution
That works with more applications and is more user-friendly than the
Previous application whitelist approach
- Added support for dynamic log level changes via the PipeWire `settings`.
Metadata. Also added support for log level patterns in the configuration
File
- The "persistent" (i.e. stored) settings approach has changed to use two.
Different metadata objects: `sm-settings` and `persistent-sm-settings`.
Changes in the former are applied in the current session but not stored.
While changes in the latter are stored and restored at startup. Some work
Was also done to expose a `wpctl` interface to read and change these
Settings, but more is underway
- Several WirePlumber-specific node properties that used to be called.
`target.*` have been renamed to `node.*` to match the PipeWire.
Convention of `node.dont-reconnect`. These are also now fully documented
Other changes:
- Many documentation updates.
- Added support for SNAP container permissions.
Multiple related to restoring the Route parameter of devices.
Which includes volume state
- Smart filters can now be targetted by specific streams directly when.
The `filter.smart.targetable` property is set
- Ported the mechanism to override device profile priorities in the.
Configuration, which is used to re-prioritize Bluetooth codecs
- WpSettings is no longer a singleton class and there is a built-in component
to preload an instance of it.
Past releases.
0.4.8131 Jan 2024 14:14
minor feature:
This is a preliminary release of WirePlumber 0.5.0, which is made available
for testing purposes. Please test it and report feedback (merge requests are
also welcome ;) ). This is not API/ABI stable yet and there is still pending
work to do before the final 0.5.0 release, both in the codebase and the
documentation.
Highlights:
- Lua scripts have been refactored to use the new event dispatcher API, which
allows them to be split into multiple small fragments that react to
events in a specified order. This allows scripts to be more modular and
easier to maintain, as well as more predictable in terms of execution
order.
- The configuration system has been refactored to use a single SPA-JSON file,
like PipeWire does, with support for fragments that can override options.
This file is also now loaded using PipeWire's configuration API, which
effectively means that the file is now loaded from the PipeWire configuration
directories, such as ``/etc/pipewire`` and `` XDG_CONFIG_HOME/pipewire``.
- The configuration system now has the concept of profiles, which are groups
of components that can be loaded together, with the ability to mark certain
components as optional. This allows having multiple configurations that
can be loaded using the same configuration file. Optional components also
allow loading the same profile gracefully on different setups, where some
components may not be available (ex, loading of the session D-Bus plugin on
a system-wide PipeWire setup now does not fail).
- Many configuration options are now exposed in the ``sm-settings`` metadata,
which allows changing them at runtime. This can be leveraged in the future
to implement configuration tools that can modify WirePlumber's behaviour
dynamically, without restarting.
- A new "filters" system has been implemented, which allows specifying chains
of "filter" nodes to be dynamically linked in-between streams and devices.