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


13 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Azulejo dijo

    ¿De casualidad usas algún WM? Es que al menos en Arch con Gnome-Shell 3.16 conserva los cambios que haya en los controles de volumen, por ejemplo, cuando conecto el HDMI me muestra el máximo de volumen, cuando conecto audífonos me muestra volumen muy bajo y en las bocinas integradas casi lo máximo.

    Aunque de hecho estuve en algún tiempo buscando hacer eso, era una joda tener que bajar el volumen para poder usar las bocinas y que el sonido no fuese estridente o molesto para los demás. Muchas gracias por el aporte.

    1.    rain dijo

      por nada 🙂 , uso xfce 😛

      1.    Azulejo dijo

        Acabo de recordar que una vez estaba viendo p0rn y tenía los audífonos y los hdp se desconectaron y escucharon los gemidos de Shyla :c
        Lo bueno es que solo fue un fragmento de al menos un eterno segundo y sonaba como a las pelis de terror cuando mataban a una prosti XD
        Pensandolo bien lo voy a agregar a favoritos

  2.   Yeyo Moreno dijo

    Jajajajajaja a mi me paso lo mismo cuando una vez como a media noche lo desconecte sin querer y sonó un buen Hard Core a todo volumen XD mi familia quedo asustada :v

  3.   noxonsoftwares dijo

    Buena la información me sera útil en algún momento. muchas gracias

  4.   Andréser dijo

    A mi no me engañas, tú estabas viendo por*o gay en español y se desconectaron tus audífonos xD
    Gracias por el aporte, en Linux Mint se conserva el volumen, por ejemplo si pongo mute y luego conecto los audífonos, en los audífonos tendré sonido y sin ellos no.
    Saludos.

    1.    rain dijo

      jajaja, no pero en esos casoss tambien sirve(?)

      1.    Andréser dijo

        Sí, también sirve en esos casos ( ͡° ͜ʖ ͡°)

  5.   deni dijo

    Buena la información, una sugerencia, si el sistema soporta ‘devd’ como procedo a copiar o crear este archivo?

    [code] $PREFIX/share/examples/cups/ulpt-cupsd.conf a $PREFIX/etc/devd/ [/code]

    1.    rain dijo

      no sabria decirte, no es suficiente con el comando cp?

      1.    deni dijo

        No, dice que directorio no existe y tampoco no se como crear..

  6.   fernando dijo

    Jejejej pues si te digo a mí me ha pasado en más de una ocasión y con la misma música así que lo apunto para instalarlo después. Un saludo y en nombre del Heavy Metal gracias.

  7.   David dijo

    …… ~ $ sudo pacman -S alsa-utils
    [sudo] password for david:
    sudo: pacman: command not found