WirePlumber-Konfigurationssystem wechselt von LUA zu JSON
Die Entwickler von WirePlumber, einem Sessionmanager für PipeWire, haben den Code refaktoriert und die unflexible Konfiguration via LUA durch JSON ersetzt.
Die kommende Version 0.5 von WirePlumber vollzieht den Wechsel des Konfigurationssystem weg von LUA, hin zu JSON. WirePlumber ist ein Sessionmanager für das Linux-Audio-Framework PipeWire. Der Sprachwechsel soll zahlreiche Verbesserungen bringen.
In einem ausführlichen Blog-Beitrag erläutert der Entwickler Ashok Sidipotu die Änderungen. Er habe im vergangenen Jahr den Code refaktoriert. WirePlumber nutze LUA für Scripting, aber auch für die Konfiguration. Die Änderungen betreffen ausschließlich die Konfiguration des Systems.
LUA hat seine Berechtigung
Die Verwendung von Lua als Konfigurationssprache böte einige Vorteile, da sie sich leicht und problemlos sowohl in Lua- als auch in C-Code integrieren lasse, erklärt Sidipotu. Ein weiterer Vorteil sei, dass die Implementierung von regelbasierten Einstellungen in Lua ein Kinderspiel ist. Allerdings gebe es auch einige gravierende Nachteile. Die Einstellungen ließen sich nicht zur Laufzeit ändern, da es sich um statische Einstellungen handele. Das Übersteuern von Einstellungen durch Nutzer sei zwar möglich, aber weder elegant noch intuitiv, und die Validierung der Konfiguration mit einem Schema sei nahezu unmöglich. Daher sei es an der Zeit, sich von LUA für die Konfiguration zu verabschieden.
Der Wechsel auf (SPA-)JSON-Syntax für Konfigurationseinstellungen sei sorgsam abgewägt. Damit seien die Nachteile der LUA-Konfiguration passé und es ergebe sich ein einheitlicherer Konfigurationsansatz über das gesamte PipeWire-Ökosystem.
Das neue JSON-Konfigurationssystem definiert Einstellungen nun unter einer neuen Sektion "wireplumber.settings" in der Haupt-Konfigurationsdatei wireplumber.conf
. Die Sektion sei nicht monolithisch definiert, sondern liege verteilt in mehreren unterschiedlichen Konfigurationsdateien (*.conf) im Pfad wireplumber.conf.d/
. Beim Start geht WirePlumber durch diese Dateien hindurch und fügt sie zusammen.
Metadaten-Strippenzieher
WirePlumber sammele all die Einstellungen in ein PipeWire-Metadatenobjekt namens "sm-settings". LUA-Skripte, Module und WirePlumber-Clients können die PipeWire-Metadaten-Werkzeuge und -API nutzen, um Einstellungen zur Laufzeit zu ändern. Es gebe dazu auch Kommandozeilenwerkzeuge, die Einstellungen zur Laufzeit ändern können und die direkt in WirePlumber angewendet und umgesetzt werden.
Weitere Verbesserungen umfassen Callbacks, durch die etwa Skripte sich über bestimmte Konfigurationsänderungen informieren lassen können. Benutzereinstellungen sollen einfacher werden. Die WirePlumber-Konfiguration nutze damit nun dieselbe Syntax wie andere PipeWire-Konfigurationsdateien. Für Änderungen zur Laufzeit lässt sich die Option "Persistency" aktivieren, wodurch sie gespeichert und etwa über einen Reboot hinaus erhalten bleiben.
Detaillierte Informationen liefert Sidipotu Interessierten in dem Blogbeitrag. WirePlumber 0.5 mit den vorgestellten Änderungen soll noch vor dem Jahreswechsel erscheinen.
(dmk)