Выполнение скрипта, когда pipewire открывает поток

Я использую Pipewire с Wireplumber на Ubuntu 21.10. Я хотел бы выполнить сценарий, когда любое приложение начинает запись (например, когда я иду на собрание, и приложение открывает микрофон). Это не только для Zoom, оно должно работать с любым приложением, включая браузерное. Мой вариант использования — включить свет через OpenHAB, когда я нахожусь на собрании. На данный момент мы используем Zoom, Gather, Slack и Discord, и неизвестно что в будущем.

Моя мысль состояла в том, чтобы отслеживать Pipewire/Wireplumber, чтобы увидеть, когда приложение открывает исходный поток, но я не могу найти, как это подключить. Любые идеи?

1 ответ

Вот что я придумал, воспользовавшись тем, чтоpactlтакже работает с PipeWire:

      #!/bin/bash

source_number=""

pactl subscribe | while read x event y type num; do
    if [ $event == "'new'" -a $type == 'source-output' ]; then
        source_number=$num
        notify-send -u normal -a "Microphone Monitor" "Microphone ON" "Microphone has been turned ON"
        echo "$(date -Is) Microphone on"
    fi

    if [ $event == "'remove'" -a $type == 'source-output' -a $num == "$source_number" ]; then
        source_number=""
        notify-send -u normal -a "Microphone Monitor" "Microphone OFF" "Microphone has been turned OFF"
        echo "$(date -Is) Microphone off"
    fi
done
Другие вопросы по тегам