Skip to content

Audio4Linux/PulseConnectionListener

Repository files navigation

PulseConnectionListener

Listen for sink changes on the default Pulseaudio server

Build from sources

Clone repository:

git clone https://github.com/Audio4Linux/PulseConnectionListener cd PulseConnectionListener 

Install dependencies (glibmm-2.4, giomm-2.4 and libpulse):

# Arch Linux sudo pacman -S glibmm pulseaudio

Compile project:

mkdir build && cd build cmake .. make 

You should end up with a binary called pa_conn_watcher:

./pa_conn_watcher --help 
Watch for pulseaudio sink changes Usage: ./pa_conn_watcher [OPTION...] -o, --once Wait for one event and exit -r, --run arg Execute shell command on sink update -f, --filter arg Filter by sink name -c, --contains Filter modifier: don't require exact match -s, --silent Disable output -h, --help Print this message 

Usage

First you need to find the name of the sink you want to watch:

pactl list sinks | grep "Name:" -A1 

I'll use my Bluetooth earbuds (bluez_sink.80_7B_3E_21_79_EC.a2dp_sink) for the following examples. (You can also leave this filter out if you want to receive events from all sinks.)

Launch the pa_conn_watcher executable with the corresponding parameters:

./pa_conn_watcher --filter "bluez_sink.80_7B_3E_21_79_EC.a2dp_sink" 

We can also run a shell command when an event has been received. For example, we can print something to stdout or run external scripts:

./pa_conn_watcher --run "echo 'Something happened!'" --silent --filter "bluez_sink.80_7B_3E_21_79_EC.a2dp_sink" ./pa_conn_watcher --run "viper restart" --once --filter "bluez_sink.80_7B_3E_21_79_EC.a2dp_sink" 

NOTE: If you intend to use this program with Viper4Linux (viper restart), keep in mind that this causes an endless loop:

Watcher detects update -> restart viper -> restart causes sink update -> watcher detects update -> ... 

To prevent this you can provide a --once flag and call the executable from a bash loop with sleep 5 appended to the command.

Debugging

You can enable debug output using this environment variable:

export G_MESSAGES_DEBUG=all 

About

Listen for sink changes in Pulseaudio

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published