# WirePlumber

WirePlumber is a modular session / policy manager for PipeWire 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

# Table of Contents

The WirePlumber Daemon

- Installing WirePlumber
  - Dependencies
  - Compilation
  - Additional options
  - Installation
- Running the WirePlumber daemon
  - Systemd
  - Run from the PipeWire source tree
  - Run independently or without installing
  - Replacing pipewire-media-session
- Configuration
  - Locations of files
  - Main configuration file
  - Lua configuration files
  - Running multiple instances
  - ALSA configuration
  - Bluetooth configuration
  - Policy Configuration
  - Access configuration
- Debug Logging
  - Examples
  - Relationship with the GLib log handler & G_MESSAGES_DEBUG
  - Relationship with the PipeWire log handler & PIPEWIRE_DEBUG

The WirePlumber Library

- C API Documentation
  - Library Initialization
  - Core
  - WpObject
  - Object Manager
  - Object Interest
  - Iterator
  - Transitions
  - Error Codes
  - Debug Logging
  - PipeWire Proxy
  - PipeWire Object
  - PipeWire Global Object Proxy
  - PipeWire Node
  - PipeWire Port
  - PipeWire Link
  - PipeWire Device
  - PipeWire Client
  - PipeWire Metadata
  - PipeWire Endpoint
  - Spa Device
  - Local Nodes
  - Local Modules
  - Properties Dictionary
  - Spa Type Information
  - Spa Json
  - Spa Pod (Plain Old Data)
  - Plugins
  - Component Loader
  - Session Items
  - Session Items Interfaces
  - Session Items Factory
  - State Storage
- Lua API Documentation
  - Introduction
  - GObject Integration
  - Core
  - Debug Logging
  - WpObject
  - Object Manager
  - Object Interest
  - PipeWire Proxies
  - Session Item
  - Spa Device
  - Spa Pod
  - Local Modules

Resources

- Contributing to WirePlumber
  - Coding style
  - Tests
  - Running in gdb / valgrind / etc…
  - Merge requests
- Testing
  - Automated unit tests
  - WirePlumber examples
  - Native API clients
  - PulseAudio compat API clients
  - ALSA compat API clients
  - JACK compat API clients
  - Device Reservation
- Community Resources
  - Discussion chat room
  - Mailing list
  - Reporting issues
- Releases
  - WirePlumber 0.4.10
  - Past releases