pulse-cli-syntax(5)
β¨ pulse-cli-syntax(5) β the File Formats Manual entry β¨
okay bestie, sit down, hydrate, and let me tell you about pulse-cli-syntax β it's the PulseAudio Command Line Interface Syntax, and it's literally the language PulseAudio speaks to you in. π
πΈ SYNOPSIS πΈ
~/.config/pulse/default.pa
/etc/pulse/default.pa
/etc/pulse/system.pa
π«Ά DESCRIPTION π«Ά
So PulseAudio ships this adorable little command line language, right? It's used by config scripts, by the pacmd interactive shell, and by the modules module-cli and module-cli-protocol-{unix,tcp}. And the best part? Empty lines and lines that start with a hashmark (#) get silently ignored. No drama, no errors, just vibes. π§
Several commands are supported β we're gonna go through every single one, no skipping, periodt.
tiny but important note: any boolean argument can be given positively as1,t,y,true,yesoron. And negatively as0,f,n,false,nooroff. Case is ignored. So yes bestie,YES,Yesandyesall slay the same. π
π GENERAL COMMANDS π
helpβ shows a quick help on the commands available. it's giving "just tell me what's possible" and honestly? iconic.
β STATUS COMMANDS β
list-modulesβ shows all currently loaded modules, with their arguments. the whole roster, no gatekeeping.list-cardsβ shows all currently registered cards.list-sinksorlist-sourcesβ shows all currently registered sinks (resp. sources).list-clientsβ shows all currently active clients.list-sink-inputsorlist-source-outputsβ shows all currently active inputs to sinks a.k.a. playback streams (resp. outputs of sources a.k.a. recording streams). lowkey a mouthful but it's correct.statβ shows some simple statistics about the allocated memory blocks and the space used by them.infoorlsorlistβ a combination of all the status commands described above. all three commands are synonyms, so pick whichever one matches your main character energy. π
π MODULE MANAGEMENT π
load-modulename [arguments...] β loads a module specified by its name and arguments. for most modules it is OK to be loaded more than once. (yes, most. not all. read the fine print, bestie.)unload-moduleindex|name β unloads a module, specified either by its index in the module list or by its name.describe-modulename β gives information about a module specified by its name.
π VOLUME COMMANDS π
set-sink-volume|set-source-volumeindex|name volume β sets the volume of the specified sink (resp. source). you may specify the sink (resp. source) either by its index in the sink/source list or by its name. the volume should be an integer value greater or equal than0(muted). volume65536(0x10000) is 'normal' volume a.k.a. 100%. values greater than this amplify the audio signal (with clipping). π«£ so yes, you can go past 100%, but it clips, and that's not cute.set-sink-mute|set-source-muteindex|name boolean β mutes or unmutes the specified sink (resp. source). you may specify the sink (resp. source) either by its index or by its name. the mute value is either0(not muted) or1(muted).set-sink-input-volume|set-source-output-volumeindex volume β sets the volume of a sink input (resp. source output) specified by its index. the same volume rules apply as withset-sink-volume.set-sink-input-mute|set-source-output-muteindex boolean β mutes or unmutes a sink input (resp. source output) specified by its index. the same mute rules apply as withset-sink-mute.
π¦ CONFIGURATION COMMANDS π¦
set-default-sink|set-default-sourceindex|name β makes a sink (resp. source) the default. you may specify the sink (resp. source) by its index in the sink (resp. source) list or by its name. use the special name@NONE@to unset the user defined default sink or source. in this case,pulseaudiowill return to the default sink or source selection based on priority.
also note: defaults may be overridden by various policy modules or by specific stream configurations. so don't come crying to me when something else steals the crown. π
set-card-profileindex|name profile-name β changes the profile of a card.set-sink-port|set-source-portindex|name port-name β changes the profile of a sink (resp. source).set-port-latency-offsetcard-index|card-name port-name offset β changes the latency offset of a port belonging to the specified card.suspend-sink|suspend-sourcename|indextrue|falseβ suspends or resumes the specified sink or source (which may be specified either by its name or index), depending whethertrue(suspend) orfalse(resume) is passed as last argument. suspending a sink will pause all playback and suspending a source will pause all capturing. depending on the module implementing the sink or source this might have the effect that the underlying device is closed, making it available for other applications to use. the exact behaviour depends on the module. so like, it might free the device, or it might not β it's giving "it depends" and that's just the truth. πsuspendboolean β suspends all sinks and sources. all of them. every single one.
π MOVING STREAMS π
move-sink-input|move-source-outputindex sink-index|sink-name β moves sink input (resp. source output) to another sink (resp. source). relocation era. βοΈ
π PROPERTY LISTS π
update-sink-proplist|update-source-proplistindex|name properties β updates the properties of a sink (resp. source) specified by name or index. the property is specified as e.g.device.description="My Preferred Name"update-sink-input-proplist|update-source-output-proplistindex properties β updates the properties of a sink input (resp. source output) specified by index. the properties are specified as above.
π§ SAMPLE CACHE π§
list-samplesβ lists the contents of the sample cache.play-samplename sink-index|sink-name β plays a sample cache entry to a sink.remove-samplename β removes an entry from the sample cache.load-samplename filename β loads an audio file to the sample cache.load-sample-lazyname filename β creates a new entry in the sample cache, but doesn't load the sample immediately. the sample is loaded only when it is first used. after a certain idle time it is freed again. it's giving "I'll get to it when I get to it" energy and honestly, same.load-sample-dir-lazypath β loads all entries in the specified directory into the sample cache as lazy entries. a shell globbing expression (e.g.*.wav) may be appended to the path of the directory to add.
π KILLING CLIENTS/STREAMS π
kill-clientindex β removes a client forcibly from the server. there is no protection against the client reconnecting immediately. so like, it can just walk right back in. no cap.kill-sink-input|kill-source-outputindex β removes a sink input (resp. source output) forcibly from the server. this will not remove the owning client or any other streams opened by the same client from the server.
π₯ LOG COMMANDS π₯
set-log-levelnumeric-level β changes the log level.set-log-metaboolean β shows source code location in log messages.set-log-targettarget β changes the log target (null,auto,journal,syslog,stderr,file:PATH,newfile:PATH).set-log-timeboolean β shows timestamps in log messages.set-log-backtracenum-frames β shows backtrace in log messages.
π MISCELLANEOUS COMMANDS π
play-filefilename sink-index|sink-name β plays an audio file to a sink.dumpβ dumps the daemon's current configuration in CLI commands.dump-volumesβ debug: shows the current state of all volumes.sharedβ debug: shows shared properties.send-messagerecipient message message_parameters β sends a message to the specified recipient object. if applicable, an additional string containing message parameters can be specified. a string is returned as a response to the message. for available messages seehttps://cgit.freedesktop.org/pulseaudio/pulseaudio/tree/doc/messaging_api.txt.exitβ terminates the daemon. if you want to terminate a CLI connection ("log out") you might want to usectrl+d. β οΈ bestie, read that twice:exitkills the daemon,ctrl+dis just you leaving the chat. do not mix these up. π
π META COMMANDS π
the extra directives
in addition to the commands described above, there are a few meta directives supported by the command line interpreter. these are the behind-the-scenes girlies. β¨
.includefilename|folder β executes the commands from the specified script file or in all of the*.pafiles within the folder..failand.nofailβ enable (resp. disable) that following failing commands will cancel the execution of the current script file. this is ignored when used on the interactive command line..ifexistsfilename β executes the subsequent block of commands only if the specified file exists. typically filename indicates a module. relative paths are resolved using the module directory as the base. by using an absolute path, the existence of other files can be checked as well..elseand.endifβ a block of commands is delimited by an.elseor.endifmeta command. nesting conditional commands is not supported. so no conditional-ception, bestie. π
π AUTHORS π
the PulseAudio Developers <pulseaudio-discuss (at) lists (dot) freedesktop (dot) org>; PulseAudio is available from http://pulseaudio.org/
π SEE ALSO π
default.pa(5), pacmd(1), pulseaudio(1)
and that's the whole page, bestie β every flag, every argument, every warning, nothing left out. π«Ά this cutie came to you from the Manuals source, User section, pulse-cli-syntax(5), and yes, it's the same page you'd find at the bottom of the original β mwah. π
β¨
π¦ where this page comes from
- alpine 3.24: pulseaudio-doc 17.0-r7 Β· LGPL-2.1-or-later
- arch rolling: pulseaudio 17.0+r134+g77d25a1e6-1 Β· LGPL-2.1-or-later
- debian trixie: pulseaudio 17.0+dfsg1-2+b1 Β· LGPL-2.1-or-later
- fedora 43: pulseaudio 17.0-7.fc43 Β· LGPL-2.1-or-later
- fedora 43: pulseaudio 17.0-9.fc43 Β· LGPL-2.1-or-later
- fedora 44: pulseaudio 17.0-9.fc44 Β· LGPL-2.1-or-later
- nixos 26.05: pulseaudio 17.0
- nixpkgs unstable: pulseaudio 17.0
- ubuntu questing: pulseaudio 1:17.0+dfsg1-2ubuntu3
- ubuntu resolute: pulseaudio 1:17.0+dfsg1-2ubuntu4 Β· LGPL-2.1-or-later
- ubuntu stonking: pulseaudio 1:17.0+dfsg1-2ubuntu6 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms