7 de agosto de 2015

script para quitar el volumen cuando se desconectan los audifonos

penguin-159784_640

Me ha pasado que mientras la gente estaba durmiendo en horas de la madrugada, yo escuchaba música heavy a todo volumen y por error desconecte los audífonos lo que hizo que se sonara por toda la casa (creo que en ese momento me odiaron jaja). Así que programe un pequeño script que cuando se desconectan, pone en mute el volumen:

Lo primero fue instalar alsa-utils para poder manejar el volumen desde comandos de forma fácil:

sudo pacman -S alsa-utils

Lo siguiente fue descubrir por medio de una búsqueda en Google que alsa guarda en archivos de texto plano (se puede leer con cualquier editor de texto, en Windows todo esto sería mucho mas complicado) el estado de las tarjetas de sonido y que solo hace falta copiar el archivo y luego comparar los cambios.

El archivo es:
/proc/asound/card0/codec#0

Esto puede variar en algunos casos por ejemplo si tenemos mas de una tarjeta de sonido. Si quieren saber mas dejo el enlace de la documentación de alsa: http://alsa.opensrc.org/Proc_asound_documentation

Conecto los audífonos y copio el archivo:
mkdir $HOME/.audifonos && cp "/proc/asound/card0/codec#0" "$HOME/.audifonos/con.txt"

Luego desconecto los audífonos y utilizo el comando diff que muestra las lineas diferentes entre los dos archivos:
diff "/proc/asound/card0/codec#0" ".audifonos/con.txt"

hay algunos datos que no nos interesan asi que hay que filtrar con grep para que solo muestre las lineas que tienen la palabra “Pin-ctls”.

diff "/proc/asound/card0/codec#0" ".audifonos/con" | grep Pin-ctls

en caso de que el comando no muestre nada por pantalla significa que tenemos puestos los audifonos. como no puede devolver nada nos devuelve error.

Para ver este error tecleamos:
echo $?

si nos muestra un uno por pantalla nos indica sobre el error.

consola

por otro lado si cuando ejecutamos esto nos devuelve algo entonces tenemos los audifonos desconectados en cuyo caso no devolverá error:
echo $?

hola

ya con esto en mente y conociendo bash es facil hacerlo:

Audifonos.sh

Lo descargo, doy permisos de ejecución para abrirlo por primera vez para que se “instale”(solo pide que conecten audífonos y copia el archivo que que explique al inicio)
wget http://paste.desdelinux.net/?dl=5178 && chmod +x audifonos.sh && ./audifonos.sh

Para terminar hago que inicie de forma automática cada vez que prendo el pc

Desde Xfce me voy a aplicaciones > configuración > Sesión e inicio > autoarranque de aplicaciones > añadir y coloco el script


Fuente: Desde Linux

0 comentarios: