summaryrefslogtreecommitdiff
path: root/doc/cli.html.in
blob: 0db96c36609587dbf3ae49d4222d4e05ba9619f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>polypaudio: Simple Command Line Language</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
<h1>Simple Command Line Language</h1>

<p><tt>polypaudio</tt> provides a simple command line language used by
configuration scripts as well as the modules <tt>module-cli</tt>
and <tt>module-cli-protocol-{unix,tcp}</tt>. Empty lines and lines
beginning with a hashmark (<tt>#</tt>) are silently ignored. Several
commands are supported:</p>

<h2>Miscellaneous Commands</h2>

<h3><tt>help</tt></h3>

<p>Show a quick help on the commands available.</p>

<h3><tt>exit</tt></h3>

<p>Terminate the daemon. If you want to terminate a CLI connection
("log out") you might want to use <tt>C-d</tt>.</p>

<h2>Status Commands</h2>

<h3><tt>list-modules</tt></h3>

<p>Show all currently loaded modules with their arguments.</p>

<h3><tt>list-sinks/list-sources</tt></h3>

<p>Show all currently registered sinks (resp. sources).</p>

<h3><tt>list-clients</tt></h3>

<p>Show all currently active clients.</p>

<h3><tt>list-sink-inputs/list-sink-outputs</tt></h3>

<p>Show all currently active inputs to sinks (resp. outputs of sources).</p>

<h3><tt>stat</tt></h3>

<p>Show some simple statistics about the allocated memory blocks and
the space used by them.</p>

<h3><tt>info</tt></h3>

<p>A combination of all status commands described above. <tt>ls</tt>
and <tt>list</tt> are synonyms for <tt>info</tt>.</p>

<h2>Module Management</h2>

<h3><tt>load-module</tt></h3>

<p>Load a module specified by its name and arguments. For most modules
it is OK to be loaded more than once.</p>

<h3><tt>unload-module</tt></h3>

<p>Unload a module specified by its index in the module list as
returned by <tt>modules</tt>.</p>

<h2>Configuration Commands</h2>

<h3><tt>set-sink-volume</tt>/<tt>set-source-volume</tt></h3>

<p>Set the volume of the specified sink or source. You may specify the sink/source either
by its index in the sink/source list or by its name. The volume should be an
integer value greater or equal than 0 (= muted). Volume 65536
(<tt>0x10000</tt>) is normal volume, values greater than this amplify
the audio signal (with clipping).</p>

<h3><tt>set-sink-mute</tt>/<tt>set-source-mute</tt></h3>

<p>Mute or unmute the specified sink our source. You may specify the
sink/source either by its index or by its name. The mute value is
either 0 or 1.</p>

<h3><tt>set-sink-input-volume</tt></h3>

<p>Set the volume of a sink input specified by its index the the sink
input list. The same volume rules apply as with <tt>sink_volume</tt>.</p>

<h3><tt>set-default-sink</tt>/<tt>set-default-source</tt></h3>

<p>Make a sink (resp. source) the default. You may specify the sink
(resp. ssource) by its index in the sink (resp. source) list or by its
name.</p>

<h2>Sample Cache</h2>

<h3><tt>list-samples</tt></h3>

<p>Lists the contents of the sample cache.</p>

<h3><tt>play-sample</tt></h3>

<p>Play a sample cache entry to a sink. Expects the sample name and the sink name as arguments.</p>

<h3><tt>remove-sample</tt></h3>

<p>Remove an entry from the sample cache. Expects the sample name as argument.</p>

<h3><tt>load-sample</tt></h3>

<p>Load an audio file to the sample cache. Expects the file name to load and the desired sample name as arguments.</p>

<h3><tt>load-sample-lazy</tt></h3>

<p>Create a new entry in the sample cache, but don't load the sample
immediately. The sample is loaded only when it is first used. After a
certain idle time it is freed again. Expects the the desired sample
name and file name to load as arguments.</p>

<h3><tt>load-sample-dir-lazy</tt></h3>

<p>Load all entries in the specified directory into the sample cache
as lazy entries. A shell globbing expression (e.g. <tt>*.wav</tt>) may
be appended to the path of the directory to add.</p>

<h2>Module Autoloading</h2>

<h3><tt>list-autoload</tt></h3>

<p>Lists all currently defined autoloading entries.</p>

<h3><tt>add-autoload-sink/add-autoload-source</tt></h3>

<p>Adds an autoloading entry for a sink (resp. source). Expects the sink name (resp. source name), the module name and the module arguments as arguments.</p>

<h3><tt>remove-autoload-sink/remove-autoload-source</tt></h3>

<p>Remove an autoloading entry. Expects the sink name (resp. source name) as argument.</p>

<h2>Miscellaneous Commands</h2>

<h3><tt>play-file</tt></h3>

<p>Play an audio file to a sink. Expects the file name and the sink name as argumens.</p>

<h3><tt>dump</tt></h3>

<p>Dump the daemon's current configuration in CLI commands.</p>

<h2>Killing Clients/Streams</h2>

<h3><tt>kill-client</tt></h3>

<p>Remove a client forcibly from the server. There is no protection that
the client reconnects immediately.</p>

<h3><tt>kill-sink-input/kill-source-output</tt></h3>

<p>Remove a sink input (resp. source output) forcibly from the
server. This will not remove the owning client or any other streams
opened by the client from the server.</p>

<h2>Meta Commands</h2>

<p>In addition the the commands described above there a few meta
directives supported by the command line interpreter:</p>

<h3><tt>.include</tt></h3>

<p>Executes the commands from the specified script file.</p>

<h3><tt>.fail/.nofail</tt></h3>

<p>Enable (resp. disable) that following failing commands will cancel
the execution of the current script file. This is a ignored when used
on the interactive command line.</p>

<h3><tt>.verbose/.noverbose</tt></h3>
<p>Enable (resp. disable) extra verbosity.</p>

<h2>Example Configuration Script</h2>

<p>Mark the following script as executable (<tt>chmod +x</tt>) and run it for a sensible polypaudio configuration.</p>

<pre>
#!/usr/bin/polaudio -nF

# Create autoload entries for the device drivers
add-autoload-sink output module-alsa-sink device=plughw:0,0 rate=48000 sink_name=output
add-autoload-sink output2 module-oss device=/dev/dsp1 record=0 sink_name=output2
add-autoload-sink combined module-combine master=output slaves=output2 sink_name=combined

add-autoload-source input module-alsa-source device=hw:1,0 source_name=input

# Load several protocols
load-module module-esound-protocol-unix
load-module module-simple-protocol-tcp
load-module module-native-protocol-unix
load-module module-cli-protocol-unix

# Make some devices default
set-default-sink combined
set-default-source input

# Don't fail if the audio files referred to below don't exist
.nofail

# Load an audio to the sample cache for usage with module-x11-bell
load-sample-lazy  /usr/share/sounds/KDE_Notify.wav x11-bell
load-module module-x11-bell sample=x11-bell

# Play a welcome sound
play-file /usr/share/sounds/startup3.wav combined
</pre>

<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, April 2006</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>