Как получить оповещение, когда моя входная громкость включена, и отключить ее, если я так захочу?
Как вы можете сказать по названию, я - дополнительный параноик 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
из-за преимущества восстановить прежние настройки громкости при включении звука.