waybar-pulseaudio(5)

✨ NAME ✨

waybar-pulseaudio β€” bestie, this is the pulseaudio module of waybar, and it's serving cunt while reporting your volume πŸ’–πŸ‘‘


🫢 DESCRIPTION 🫢

okay so. the pulseaudio module displays the current volume that PulseAudio is reporting. that's the whole gig. it just sits there in your bar looking cute and telling you how loud you're being. πŸŽ€

and ALSO β€” plot twist, keep up β€” you can control the volume by scrolling up or down while the cursor is over the module. yes bestie, your scroll wheel is a volume knob now. slay. πŸ–±οΈβœ¨


πŸ’… CONFIGURATION πŸ’…

every option, all of them, no skips, we're doing this properly:

  • format β€” typeof: string, default: {volume}% β€” the format, like, how the info should actually be displayed. this one's the fallback format: it gets used whenever no other format is specified. 🌸
  • format-bluetooth β€” typeof: string β€” this format is used when you're on bluetooth speakers. bluetooth girlies, this one's for you πŸ’™
  • format-muted β€” typeof: string β€” this format is used when the sound is muted. 🀫
  • format-source β€” typeof: string, default: {volume}% β€” this format is used for the source.
  • format-source-muted β€” typeof: string β€” this format is used when the source is muted.
  • format-icons β€” typeof: array β€” based on the current port name and volume, the corresponding icon gets selected. the order goes low to high. see Icons below πŸ‘€
  • rotate β€” typeof: integer β€” positive value to rotate the text label (in 90 degree increments). only positive, no spinning backwards, that's the rule πŸ“
  • 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. crank it for chaos πŸŒ€
  • 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. so if you set it, no more free volume knob, it's your command now periodt.
  • on-scroll-down β€” typeof: string β€” command to execute when scrolling down on the module. ⚠️ also replaces the default behaviour of volume control. same deal bestie.
  • smooth-scrolling-threshold β€” typeof: double β€” threshold to be used when scrolling.
  • 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. 🐭
  • tooltip β€” typeof: bool, default: true β€” option to disable tooltip on hover.
  • max-volume β€” typeof: integer, default: 100 β€” the maximum volume that can be set, in percentage. πŸ“ˆ
  • ignored-sinks β€” typeof: array β€” sinks in this list will not be shown as active sink by Waybar. entries should be the sink's description field.
  • 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.
  • expand β€” typeof: bool, default: false β€” enables this module to consume all left over space dynamically. greedy little module, love that for it 🫢

🌈 FORMAT REPLACEMENTS 🌈

these are the lil placeholders you can drop into your formats:

  • {desc} β€” Pulseaudio port's description; for bluetooth it'll be the device name.
  • {volume} β€” volume in percentage.
  • {icon} β€” icon, as defined in format-icons.
  • {format_source} β€” source format, format-source, format-source-muted.

πŸ¦‹ ICONS πŸ¦‹

the following strings for format-icons are supported.

  • the device name

if they are found in the current PulseAudio port name, the corresponding icons will be selected. ✨

  • default (shown, when no other port is found)
  • headphone
  • speaker
  • hdmi
  • headset
  • hands-free
  • portable
  • car
  • hifi
  • phone

additionally, suffixing a device name or port with -muted will cause the icon to be selected when the corresponding audio device is muted. this applies to default as well. so yes, you can have a muted-default icon too, iconic 🌸


πŸ’… EXAMPLES πŸ’…

look at this config, it ate:

    "pulseaudio": {
        "format": "{volume}% {icon}",
        "format-bluetooth": "{volume}% {icon}",
        "format-muted": "",
        "format-icons": {
            "alsa_output.pci-0000_00_1f.3.analog-stereo": "",
            "alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "",
            "headphone": "",
            "hands-free": "",
            "headset": "",
            "phone": "",
            "phone-muted": "",
            "portable": "",
            "car": "",
            "default": ["", ""]
        },
        "scroll-step": 1,
        "on-click": "pavucontrol"
    }
ngl some of those strings look empty in a terminal β€” that's just icon glyphs doing their shy lil thing. the config is exactly as written up there, don't come for me πŸ™ˆ

⭐ STYLE ⭐

these are the CSS selectors you get to play with, go off:

  • #pulseaudio
  • #pulseaudio.bluetooth
  • #pulseaudio.muted

and that's the whole page bestie πŸ’– this was waybar-pulseaudio(5), from waybar's File Formats Manual, dated 2026-02-08. now go crank your volume responsibly. mwah πŸŽ€πŸ¦‹βœ¨

πŸ“¦ where this page comes from