From 258bc97fb17b7c082662215063a3477030422773 Mon Sep 17 00:00:00 2001 From: Jason Nader Date: Thu, 10 Dec 2020 13:49:53 +0900 Subject: [PATCH] pactl: add `get_default_source` command Part-of: --- man/pactl.1.xml.in | 5 +++++ src/utils/pactl.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/man/pactl.1.xml.in b/man/pactl.1.xml.in index b95afa7..3402ed7 100644 --- a/man/pactl.1.xml.in +++ b/man/pactl.1.xml.in @@ -177,6 +177,11 @@ License along with PulseAudio; if not, see . + + diff --git a/src/utils/pactl.c b/src/utils/pactl.c index e7f71ee..dc4fcb8 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; -- 2.7.4