¿Cómo obtener una alerta cuando mi volumen de entrada está encendido y apagarlo si así lo deseo?

2

Como se puede ver por el nombre, soy un Panda paranoico adicional y para mantener mi bambú seguro no quiero que mi volumen de entrada esté activado por si acaso obtengo algún spyware que escuche mi entrada de sonido. Básicamente, solo quiero estar lo más seguro posible para que ningún otro Panda escuche mis secretos de bambú de Panda (donde lo puse todo).

Básicamente, esto es lo que quiero, un script que:

  • Comprueba si el volumen de entrada para mi micrófono (o cualquier dispositivo de entrada de sonido) está en 0% a intervalos regulares

  • Me avisa notify-sendcada 5 minutos si está activado

  • Una opción dentro del script (como un booleano o algo así) que no está activada de manera predeterminada, pero si está activada, hará que cuando el volumen de entrada esté activado, se me avisará que estaba activado y que se ha desactivado, y para el script obviamente también (probablemente antes de alertarme) para apagar el volumen de entrada

  • Es capaz de escanear múltiples fuentes de entrada de modo que, por ejemplo, si tengo 2 micrófonos, 1 está silenciado, pero el otro no, no solo supone que todo está bien

Estoy ejecutando Ubuntu GNOME 15.10 con GNOME 3.18. ¿Cómo se puede hacer esto? No espero que haya uno (es por eso que estoy pidiendo un script), pero si hay una aplicación que pueda hacer esto, entonces recomiéndelo.


fuente
Si puedo encontrar una forma confiable de obtener el volumen de entrada de todos los dispositivos de entrada, el resto es fácil :)
Jacob Vlijm
@JacobVlijm: Podrías hacer un grepping inteligente con la salida de pactl list sources.

Respuestas:

3

Aquí hay un script simple que escanea una fuente de entrada de pulseaudio dada para silenciarla * .

La fuente se puede dar como número de índice de fuente pulseaudio como se puede enumerar con:

pactl list sources

Si la fuente no fue silenciada, se mostrará un mensaje de advertencia en una notificación de escritorio.

#!/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

Guarde esa secuencia de comandos con cualquier nombre (p micmute. Ej. ) Y dele permiso de ejecución. El guión se puede llamar con

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

<source>es el número de índice de la fuente del micrófono a escanear.
<wait>definirá el tiempo en segundos después del cual repetiremos nuestra consulta para un dispositivo fuente silenciado.
--forcees una bandera opcional para forzar el silenciamiento de nuestra fuente.


Para mí, la siguiente línea de ejemplo consultará el estado de silencio de mi micrófono (índice 2) cada 5 minutos, y lo silenciará forzadamente si no está silenciado.

./micmute 2 300 --force

* Preferí silenciar en lugar de configurar el volumen 0debido a la ventaja de restaurar la configuración de volumen anterior al desactivar el silencio.

Takkat
fuente
Entonces, si tuviera dos micrófonos, uno silenciado y el otro no, ¿supondría que todo está bien?
Es una buena respuesta que ha publicado, sin embargo, lo siento, pero como no coincide completamente con mis especificaciones, no puedo aceptarla en su estado actual, aunque le he dado un voto positivo.
@ParanoidPanda: vea la edición de un script que solo consulta una fuente determinada. Para escuchar dos o más fuentes al mismo tiempo, ejecútelo varias veces con diferentes parámetros.
Takkat