Módulos de audio en Polybar

Este es uno de los capítulos del tutorial Polybar. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.

Una vez revisados los módulos de sistema en el capítulo anterior del tutorial, ahora es el momento de abordar los módulos de audio en Polybar. Aunque no seas un gran amante de la música, es interesante tenerlos configurados para poder explotarlos al máximo. O, en su caso, si ni siquiera te interesa, se trata de sacar ideas para utilizarlos en otros módulos de los que Polybar pone a tu disposición.

Así, en este capítulo quiero revisar contigo el módulo alsa, pulseaudio, y mpd. Además te contaré como tengo configurado tizonia, la aplicación que utilizo para reproducir música de YouTube, así, como repasar algunos de los plugins desarrollados por la comunidad.

Módulos de audio

Módulos de audio en Polybar

Un comentario

Antes de que copies y pegues el contenido que aquí se encuentra, sobre los módulos de audio, en tu configuración de Polybar, indicarte que he tenido que quitar los iconos. Te recomiendo que si quieres hacer copia de la configuración recurras a mi repositorio en GitHub, donde la encontrarás perfectamente actualizada, y te evitarás este contratiempo.

Poner aquí la configuración es para explicar porque es de una forma o de otra, y sobre todo, como puedes adaptarla a tus necesidades. Por esto, no considero tan importante que se muestren los iconos. Disculpa las molestias.

pulseaudio y alsa

Los módulos correspondientes a alsa y pulseaudio, son prácticamente iguales. Su funcionalidad principal es la de mostrar el volumen y el estado del mismo, es decir, si está silenciado o no lo está. Dependiendo de la configuración que tengas establecida, utilizará un origen que tu hayas predefinido, o bien, el origen por defecto, en el caso de que tu no hubieras definido ninguno.

En mi caso, la configuración es la siguiente, mas o menos. Y digo mas o menos, porque la he recortado ligeramente para no aburrirte. En este sentido, si quieres la configuración completa, la puedes recuperar de mis dotfiles que puedes encontrar en GitHub.

[module/pulseaudio]
type = internal/pulseaudio

;format-volume = <ramp-volume> <label-volume>
format-volume = <ramp-volume> <bar-volume>
label-volume = %percentage%%
;label-volume-foreground = ${root.foreground}

label-muted = 
label-muted-foreground = ${color.sep}

ramp-volume-0 =
ramp-volume-0-foreground = ${color.sep}
ramp-volume-1 = 
ramp-volume-1-foreground = ${color.sep}
ramp-volume-2 = 
ramp-volume-2-foreground = ${color.sep}

; Only applies if <bar-volume> is used
bar-volume-format = "%fill%%indicator%%empty%"
bar-volume-width = 10
bar-volume-gradient = true

bar-volume-indicator = ${bar.indicator}
bar-volume-indicator-foreground = ${color.foreground}
bar-volume-indicator-font = 4

bar-volume-fill = ${bar.fill}
bar-volume-fill-font = 4
bar-volume-foreground-0 = ${color.green}
bar-volume-foreground-1 = ${color.yellow}
bar-volume-foreground-2 = ${color.red}

En mi caso, tengo mas puntos de bar-volume-foreground, pero para los efectos, y para explicarte sobre esta configuración, con esto es mas que suficiente.

Como ves en la configuración superior, tengo algunas opciones comentadas. Inicialmente tenía le valor del volumen, pero realmente es algo que no me importa, me refiero al valor numérico. Con tener una representación es mas que suficiente, y además me permite utilizarlo para subir y bajar el volumen.

Con la opción ramp-volume muestro un icono que va variando en función del volumen. En este caso, he optado por tres iconos, que son suficientemente representativos.

Por otro lado, bar-volume, es completamente configurable a través de bar-volume-format, donde puedes indicar que piezas quieres que lo compongan. En mi caso, he indicado el menú completo. Es decir, que se muestre tanto el volumen superado, como el indicador, es decir, el volumen en el que se encuentra, hasta las posibilidades que tienes de seguir subiendo el volumen.

Además he particularizado la configuración para el indicator, como puedes ver en las líneas de código que he expuesto mas arriba. donde puedes ver el símbolo que se utiliza para mostrar el indicator, el color utilizado, así como la tipografía seleccionada.

Esto mismo, de una forma muy similar lo puedes hacer con el módulo de alsa.

Tizonia

Como he comentado en alguna que otra ocasión en el podcast, o incluso en algún vídeo del canal de YouTube, actualmente, en el momento de escribir este capítulo del tutorial, estoy utilizando Tizonia, como reproductor de música.

Para poder disfrutar de música de YouTube, utilizando tizonia, he implementado mi propio módulo, que tiene el siguiente aspecto,

[module/mplayer]
type = custom/script

exec = ~/.config/polybar/scripts/tizonia.sh
interval = 5

Donde el script tizonia.sh, es el que te muestro a continuación,

#!/ysr/bin/env bash
ans=$(tizonia-remote playstatus 2>/dev/null)
if [ -z $ans ]
then
    command="tizonia --shuffle --youtube-audio-mix-search 'chopin' -d"
    echo "%{T4}%{A1:$command:} %{A}%{T-}"
elif [ $ans = "\"Playing\"" ]
then
    echo "%{T4}%{A1:tizonia-remote prev:}%{A}%{A1:tizonia-remote pause:}%{A}%{A1:tizonia-remote quit:}%{A}%{A1:tizonia-remote next:}%{A}%{T-}"
elif [ $ans = "\"Paused\"" ]
then
    echo "%{T4}%{A1:tizonia-remote prev:}%{A}%{A1:tizonia-remote play:} %{A}%{A1:tizonia-remote quit:}%{A}%{A1:tizonia-remote next:}%{A}%{T-}"
fi

Como ves es super sencillo, sin embargo, no explota todas las posibilidades que Polybar pone a tu disposición. He sacrificado una cuestión en favor de la otra. Mas adelante lo actualizaré para aprovechar al máximo todas las oportunidades que me brinda Polybar.

mpd

Otro de los módulos que actualmente tengo habilitado, pero por poco tiempo, es mpd. Te digo que lo tendré habilitado por poco tiempo, porque desde que instalé el anterior, desde que instalé tizonia, este prácticamente no lo utilizo.

[module/mpd]
type = internal/mpd

interval = 1

format-online = <icon-prev><toggle><icon-next><label-song><label-time>
format-online-prefix = 
format-online-prefix-foreground = ${color.green}

label-song =  " %artist% - %title%"
label-song-maxlen = 25
label-song-ellipsis = true

label-time = " %elapsed% / %total%"

label-offline = " Offline"

icon-play = 
icon-pause = 
icon-stop = 
icon-next = 
icon-prev = 

toggle-on-foreground = ${color.primary}
toggle-off-foreground = ${color.secondary}

Como ves, la configuración que estoy utilizando es la mínima. La verdad es que mpd te ofrece una cantidad de opciones que es realmente espectacular, tanto por el servicio, como por las posibilidades de integración con otras herramientas. Por esta razón, es una opción que deberías tener en cuenta si quieres un reproductor, completamente integrado con tu sistema, y que te permita tener toda tu colección de música al alcance de un par de clics.

Módulos audio de la comunidad

A continuación encontrarás algunos de los módulos de audio que la comunidad en torno a Polybar a puesto a nuestra disposición para que los disfrutemos. He seleccionado únicamente aquellos que me han llamado la atención.

Now Playing

Aunque no se trata de un módulo para ajustar la configuración de tu audio, al fin y l cabo si que está relacionado con la música, y aquello que entra por tus oídos, mas teniendo en cuenta el nombre de este módulo Now Playing.

Se trata de un módulo implementado en Python 3, que te muestra lo que estás escuchando, pero a través de consultarle a Last.FM. De esta manera, con independencia del servicio o la aplicación que estés utilizando, podrás ver la pista que estás reproduciendo.

La configuración es sencilla,

[module/now_playing]
type = custom/script

exec = "python $HOME/.scripts/now_playing.py"

tail = true

format = <label>
format-prefix-foreground = ${colors.foreground}

label = %output:0:50%

Recuerda cambiar la ruta que apunta al script para que apunte a tu directorio. En mi caso, suelo ponerlos en `~/.local/bin, pero para gustos los colores.

polybar-spotify

Este módulo de audio, como habrás podido deducir del su nombre, muestra información sobre la pista que estás reproduciendo en Polybar. Una característica interesante, y que no había visto hasta el momento, o que al menos no me he fijado de otros módulos, es que está mostrando de forma continua el título de la pista que se está reproduciendodesplazándos en Polybar. Esto lo hace así, para aprovechar el máximo espacio disponible.

En concreto, este módulo, tiene dos dependencias. La primera es playerctl, que se utiliza para interactuar con Spotify, al igual que puedes hacer con otros reproductores que utilicen MPRIS. La segunda es zscroll, que es la que se utiliza para conseguir que se desplace el texto.

Por otro lado, utiliza IPC, sobre el que te hablé en un capítulo anterior del tutorial, con lo que necesitarás tenerlo activado.

Este módulo polybar-spotify, lo puedes utilizar con otras aplicaciones, con lo que es una opción que debes considerar, si tu reproductor de cabecera, no tiene soporte directo en Polybar.

Respecto a la configuración la puedes encontrar, directamente en el enlace que te he dejado antes, y verás que es realmente sencillo de configurar y poner en marcha.

PulseEffects Presets

Este módulo de audio de Polybar te permite controlar PulseEffects con algunas configuraciones predeterminadas. Tiene algunas características muy interesantescomo,

  • permite cambiar con un solo clic entre los efectos configurados
  • trabaja tanto como efectos de entrada como de salida
  • es muy sencillo resetear PulseEffectes
  • esaltamente configurable y personalizable.

El módulo es tan sencillo como,

[module/pulseffects-presets]
type = custom/script
exec = pulseeffects-presets.bash [option...] <action>

Donde las acciones a utilizar son,

  • show para mostrar el estado de PulseEffects
  • next cambia al siguiente estado
  • prev cambia al estado previo
  • reset te permite resetear y volver al estado inicial

Por ejemplo,

[module/pulseeffects-presets]
type = custom/script
exec = polybar-msg hook pulseeffects-presets-ipc 1 &>/dev/null
interval = 30

[module/pulseeffects-presets-ipc]
type = custom/ipc
hook-0 = pulseeffects-presets.bash --format '  $PRESET [$POSITION/$TOTAL]' show
click-left   = pulseeffects-presets.bash prev  && polybar-msg hook pulseeffects-presets-ipc 1
click-right  = pulseeffects-presets.bash next  && polybar-msg hook pulseeffects-presets-ipc 1
click-middle = pulseeffects-presets.bash reset && polybar-msg hook pulseeffects-presets-ipc 1

Más información,

Imagen de portada de blocks en Unsplash

Deja una respuesta

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