summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Nader <jason.nader@protonmail.com>2020-12-10 13:49:53 +0900
committerPulseAudio Marge Bot <pulseaudio-maintainers@lists.freedesktop.org>2021-05-17 15:35:07 +0000
commit258bc97fb17b7c082662215063a3477030422773 (patch)
tree3e54ad5548f602b6344af11dc6864acdc09e9027
parent75390822b4d31aa626ee0bb9ee6274dbc1cff32c (diff)
downloadpulseaudio-258bc97fb17b7c082662215063a3477030422773.tar.gz
pactl: add `get_default_source` command
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/430>
-rw-r--r--man/pactl.1.xml.in5
-rw-r--r--src/utils/pactl.c20
2 files changed, 25 insertions, 0 deletions
diff --git a/man/pactl.1.xml.in b/man/pactl.1.xml.in
index b95afa724..3402ed707 100644
--- a/man/pactl.1.xml.in
+++ b/man/pactl.1.xml.in
@@ -177,6 +177,11 @@ License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
</option>
<option>
+ <p><opt>get-default-source</opt></p>
+ <optdesc><p>Returns the symbolic name of the default source.</p></optdesc>
+ </option>
+
+ <option>
<p><opt>set-default-source</opt> <arg>SOURCE</arg></p>
<optdesc><p>Make the specified source (identified by its symbolic name or numerical index) the default source.</p></optdesc>
</option>
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index e7f71ee4b..dc4fcb896 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -124,6 +124,7 @@ static enum {
GET_DEFAULT_SINK,
SET_DEFAULT_SINK,
SET_SOURCE_PORT,
+ GET_DEFAULT_SOURCE,
SET_DEFAULT_SOURCE,
GET_SINK_VOLUME,
SET_SINK_VOLUME,
@@ -203,6 +204,18 @@ static void get_default_sink(pa_context *c, const pa_server_info *i, void *userd
complete_action();
}
+static void get_default_source(pa_context *c, const pa_server_info *i, void *userdata) {
+ if (!i) {
+ pa_log(_("Failed to get server information: %s"), pa_strerror(pa_context_errno(c)));
+ quit(1);
+ return;
+ }
+
+ printf(_("%s\n"), i->default_source_name);
+
+ complete_action();
+}
+
static void get_server_info_callback(pa_context *c, const pa_server_info *i, void *useerdata) {
char ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
@@ -1528,6 +1541,10 @@ static void context_state_callback(pa_context *c, void *userdata) {
o = pa_context_set_source_port_by_name(c, source_name, port_name, simple_callback, NULL);
break;
+ case GET_DEFAULT_SOURCE:
+ o = pa_context_get_server_info(c, get_default_source, NULL);
+ break;
+
case SET_DEFAULT_SOURCE:
o = pa_context_set_default_source(c, source_name, simple_callback, NULL);
break;
@@ -2086,6 +2103,9 @@ int main(int argc, char *argv[]) {
source_name = pa_xstrdup(argv[optind+1]);
+ } else if (pa_streq(argv[optind], "get-default-source")) {
+ action = GET_DEFAULT_SOURCE;
+
} else if (pa_streq(argv[optind], "get-sink-volume")) {
action = GET_SINK_VOLUME;