Find a file
Julian Bouzas a824ae910f m-lua-scripting: only hold a strong reference of the Lua state when the script is enabled
Scripts are always deactivated (and not finalized) before core disconnects, so
we need to make sure the scripts don't hold a strong reference when creating
them. They must only hold a strong reference of the Lua state if activated.

In order to implement this properly, the lua_State has been wrapped into a
GObject so that the 'lua-engine' construct-only property is a weak reference of
the Lua state. Then, when the script is activated, a strong reference of the Lua
state is held so the script can work. This strong reference is later dropped
when the script is deactivated (right before the core is disconnected), avoiding
leaked proxy warning messages in the log if a script has a global variable
holding a proxy (Eg the alsa monitor in alsa.lua).
2026-06-01 07:37:02 -04:00
docs state: Add new WpStateMetadata class 2026-05-12 17:08:55 +03:00
lib pw-obj-mixin: apply filter when enumerating cached params 2026-06-01 10:09:52 +00:00
modules m-lua-scripting: only hold a strong reference of the Lua state when the script is enabled 2026-06-01 07:37:02 -04:00
po update zh_CN.po 2026-05-07 17:03:41 +08:00
src monitors/alsa: Set profile to Off and restore it back if node state changes to error 2026-05-24 09:59:36 +03:00
subprojects meson: update lua wrap to 5.5.0 2026-01-29 11:06:00 +01:00
tests m-lua-scripting: only hold a strong reference of the Lua state when the script is enabled 2026-06-01 07:37:02 -04:00
.editorconfig editorconfig: remove obsolete entry and add python script rules 2021-05-26 09:36:41 +03:00
.gitignore gitignore: remove obsolete entry 2021-05-26 09:38:03 +03:00
.gitlab-ci.yml ci: adapt pipewire build options based on the pw version we are building 2025-12-02 12:32:01 +02:00
AGENTS.md Add AGENTS.md 2025-10-10 18:03:07 +03:00
LICENSE LICENSE: update copyright years 2021-05-26 09:33:18 +03:00
Makefile Makefile: run valgrind with better arguments & environment 2021-10-15 14:00:05 +03:00
meson.build meson: fix tools build without daemon 2026-04-14 18:38:55 +03:00
meson_options.txt meson: make sure the boolean options have boolean values 2024-03-09 15:58:01 +02:00
NEWS.rst 0.5.14 2026-03-25 12:49:03 +02:00
README.rst README: remove broken badge 2024-02-10 11:44:19 +02:00
wp-uninstalled.sh wp-uninstalled: Allow to pass WIREPLUMBER_CONFIG_DIR 2026-03-18 17:29:42 +02:00

WirePlumber
===========

.. image:: https://gitlab.freedesktop.org/pipewire/wireplumber/badges/master/pipeline.svg
   :alt: Pipeline status

.. image:: https://scan.coverity.com/projects/21488/badge.svg
   :alt: Coverity Scan Build Status

.. image:: https://img.shields.io/badge/license-MIT-green
   :alt: License

.. image:: https://img.shields.io/badge/dynamic/json?color=informational&label=tag&query=%24%5B0%5D.name&url=https%3A%2F%2Fgitlab.freedesktop.org%2Fapi%2Fv4%2Fprojects%2F2941%2Frepository%2Ftags
   :alt: Tag

WirePlumber is a modular session / policy manager for
`PipeWire <https://pipewire.org>`_ and a GObject-based high-level library
that wraps PipeWire's API, providing convenience for writing the daemon's
modules as well as external tools for managing PipeWire.

The WirePlumber daemon implements the session & policy management service.
It follows a modular design, having plugins that implement the actual
management functionality.

The WirePlumber Library provides API that allows you to extend the WirePlumber
daemon, to write management or status tools for PipeWire
(apps that don't do actual media streaming) and to write custom session managers
for embedded devices.

Documentation
-------------

The latest version of the documentation is available online
`here <https://pipewire.pages.freedesktop.org/wireplumber/>`_