Как получить оповещение, когда моя входная громкость включена, и отключить ее, если я так захочу?

Как вы можете сказать по названию, я - дополнительный параноик Panda, и для того, чтобы сохранить свой бамбук в безопасности, я не хочу, чтобы мой уровень громкости входного сигнала был включен на всякий случай, если я получу шпионское ПО, которое слушает мой звук. По сути, я просто хочу быть настолько безопасным, насколько это возможно, чтобы никто другой Панда не слушал мои бамбуковые секреты Панды (где я все это помещал).

Так что в основном это то, что я хочу, скрипт, который:

  • Проверяет, находится ли уровень входного сигнала для моего микрофона (или любых устройств ввода звука) на 0% через равные промежутки времени

  • Предупреждает меня через notify-send каждые 5 минут, если он включен

  • Опция в скрипте (например, логическое значение или что-то в этом роде), которая не включена по умолчанию, но если она включена, сделает так, чтобы при включении громкости входного сигнала меня уведомляли о том, что он включен и выключен, и для сценария, очевидно, также (вероятно, до предупреждения меня), чтобы отключить громкость ввода

  • Может сканировать несколько источников входного сигнала, так что, например, если у меня 2 микрофона, 1 отключен, а другой нет, он не просто предполагает, что все хорошо

Я использую Ubuntu GNOME 15.10 с GNOME 3.18. Как это может быть сделано? Я не ожидаю, что будет один (вот почему я прошу сценарий), но если есть приложение, которое может сделать это, то, пожалуйста, порекомендуйте его.

1 ответ

Решение

Вот простой сценарий, который сканирует заданный источник входного импульса и звук для отключения звука *.

Источник может быть задан в виде порядкового номера источника импульса, который может быть указан с помощью:

pactl list sources

Если источник не был отключен, в уведомлении на рабочем столе будет отображаться предупреждение.

#!/bin/bash
#
# Forces a pulseaudio source to be muted
#
# Usage:
# micmute <source> <wait> <--force>
# <source>: pulseaudio source index number
# <wait>: seconds to wait for checking
# <--force>: force muting microphone and notify
source="$1"
wait="$2"
force="$3"

echo "Scanning input #$source every $wait seconds."

while true; do
    if ! (pactl list sources | sed -n '/^Source #'"$source"'/,/^$/p' | grep "Mute: yes"); then
        if [[ $force == "--force" ]]; then
            pactl set-source-mute $source 1
            notify-send "Muting input $source"
        else
            notify-send "WARNING - input $source is not muted"
        fi
    fi
    sleep $wait  ## CLI option seconds to wait
done

Сохраните этот скрипт под любым именем (например, micmute) и дайте ему исполняемое разрешение. Сценарий затем может быть вызван с

./micmute <source> <wait> [--force]

<source> это порядковый номер сканируемого источника микрофона.
<wait> определит время в секундах, после которого мы повторим наш запрос для приглушенного исходного устройства.
--force необязательный флаг для принудительного отключения нашего источника.


Для меня следующая строка примера будет запрашивать состояние отключения моего микрофона (индекс 2) каждые 5 минут, и он будет принудительно отключать звук, если он был включен.

./micmute 2 300 --force

* Я предпочел отключить звук, а не громкость 0 из-за преимущества восстановить прежние настройки громкости при включении звука.

Другие вопросы по тегам