Skip to content

Module: WirePlumber

github-actions[bot] edited this page Jul 4, 2026 · 16 revisions

DESCRIPTION

The wireplumber module displays the current volume reported by WirePlumber.

CONFIGURATION

format:
typeof: string
default: {volume}%
The format, how information should be displayed. This format is used when other formats aren't specified.

format-muted:
typeof: string
This format is used when the sound is muted.

format-bluetooth:
typeof: string
This format is used when the active sink is a Bluetooth device (its node name contains bluez or a2dp-sink).

format-bluetooth-muted:
typeof: string
This format is used when the active sink is a Bluetooth device and the sound is muted.

format-source:
typeof: string
default: {volume}%
The format used to render the source (microphone) volume sub-string that is exposed through the {format_source} replacement.

format-source-muted:
typeof: string
The format used for the {format_source} sub-string when the source (microphone) is muted.

format-icons:
typeof: array
Based on the current volume, the corresponding icon gets selected. The order is low to high.

node-type:
typeof: string
default: Audio/Sink
The WirePlumber node type to attach to. Use Audio/Source to manage microphones etc.

only-physical:
typeof: bool
default: false
When enabled, resolve through virtual/filter-chain sinks to the underlying physical sink and report its volume instead.

tooltip:
typeof: bool
default: true
Option to disable tooltip on hover.

tooltip-format:
typeof: string
default: {node_name}
The format of information displayed in the tooltip.

rotate:
typeof: integer
Positive value to rotate the text label (in 90 degree increments).

states:
typeof: object
A number of volume states which get activated on certain volume levels. See waybar-states(5).

max-length:
typeof: integer
The maximum length in character the module should display.

min-length:
typeof: integer
The minimum length in characters the module should accept.

align:
typeof: float
The alignment of the label within the module, where 0 is left-aligned and 1 is right-aligned. If the module is rotated, it will follow the flow of the text.

justify:
typeof: string
The alignment of the text within the module's label, allowing options 'left', 'right', or 'center' to define the positioning.

scroll-step:
typeof: float
default: 1.0
The speed at which to change the volume when scrolling.

scroll-scale:
typeof: string
default: cubic_percent

The scale to use for the scrolling volume change. Options are 'linear', 'db', 'cubic', and 'cubic_percent'.

reverse-scrolling:
typeof: bool
Option to reverse the scroll direction for touchpads.

reverse-mouse-scrolling:
typeof: bool
Option to reverse the scroll direction for mice.

on-click:
typeof: string
Command to execute when clicked on the module.

on-click-middle:
typeof: string
Command to execute when middle-clicked on the module using mousewheel.

on-click-right:
typeof: string
Command to execute when you right-click on the module.

on-update:
typeof: string
Command to execute when the module is updated.

on-scroll-up:
typeof: string
Command to execute when scrolling up on the module. This replaces the default behaviour of volume control.

on-scroll-down:
typeof: string
Command to execute when scrolling down on the module. This replaces the default behaviour of volume control.

max-volume:
typeof: float
default: 100
The maximum volume that can be set, in percentage.

menu:
typeof: string
Action that popups the menu.

menu-file:
typeof: string
Location of the menu descriptor file. There need to be an element of type

GtkMenu with id menu

menu-actions:
typeof: array
The actions corresponding to the buttons of the menu.

FORMAT REPLACEMENTS

{volume}: Volume in percentage, cubic scale as integer.

{volume_linear}: Volume in linear scale as float.

{volume_cubic}: Volume in cubic scale as float.

{volume_db}: Volume in decibel scale as float.

{icon}: Icon, as defined in format-icons.

{node_name}: The node's nickname as reported by WirePlumber (node.nick property)

{source_volume}: Source (microphone) volume in percentage, cubic scale as integer.

{source_volume_linear}: Source (microphone) volume in linear scale as float.

{source_volume_cubic}: Source (microphone) volume in cubic scale as float.

{source_volume_db}: Source (microphone) volume in decibel scale as float.

{source_desc}: The source node's nickname/description as reported by WirePlumber.

{format_source}: The pre-rendered source (microphone) volume sub-string, formatted with format-source/format-source-muted.

EXAMPLES

Basic:

"wireplumber": {
	"format": "{volume}%",
	"format-muted": "",
	"on-click": "helvum"
}

Separate Sink and Source Widgets

"wireplumber#sink": {
    "format": "{volume}% {icon}",
    "format-muted": "󰅶",
    "format-icons": ["", "", ""],
    "on-click": "helvum",
    "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
    "scroll-step": 5
},
"wireplumber#source": {
    "node-type": "Audio/Source",
    "format": "{volume}% ",
    "format-muted": "",
    "on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
    "scroll-step": 5
}

Use a Different Scale

"wireplumber": {
	"format": "{volume_db:.2f}dB",
	"scroll-scale": "db",
	"scroll-step": 2.5
}

STYLE

·

#wireplumber

·

#wireplumber.muted

·

#wireplumber.sink-muted

·

#wireplumber.source-muted

·

#wireplumber.bluetooth

Clone this wiki locally