Tip XX: Controlando Audacious desde tint2 en BunsenLabs

Desde la versión 0.12.4, tint2 incorpora un nuevo plugin llamado Executor, con el cual podemos hacer cosas muy interesantes, como por ejemplo poder manejar varias opciones para Audacious, además de visualizar diversa información sobre la canción en uso.  Y todo desde el mismo panel.

Tip XX: Controlando Audacious desde tint2 en BunsenLabs

Por tanto si estas interesado en este tip comprueba primeramente tu versión de tint2, que deberá ser 0.12.4 o superior, para esto simplemente vete a un terminal y ejecuta el siguiente comando,

$ tint2 --version

tint2 version

si todavía no dispones de esa versión comprueba tus repositorios Backports de BunsenLabs.

Tras esto pasamos ya a la edición de nuestro configuración de tint2 en uso, disponible en ~/.config/tint2.  Conviene como siempre antes de hacer nada, que hagamos alguna copia de la configuración de tint2 que vamos a modificar. Para ello puedes utilizar la utilidad Blob Themes Manager desde la opción Accesorios del Menú.

BLOB

Editamos por tanto desde la opción disponible en Menú para ello.

Editar tint2

Navegamos hasta la sección correspondiente al Systray por ejemplo, para añadir los parámetros que necesitamos. Aunque realmente no tiene porque ser ahí precisamente, simplemente por claridad, y guardando el orden lógico en que se visualiza todo, es recomendable que se haga aquí.

# Execp 1: Player audacious
execp = new
execp_centered = 0
execp_has_icon = 1
execp_cache_icon = 0
execp_icon_w = 16
execp_icon_h = 16
execp_command = audacious.sh 0 50 
execp_interval = 2
execp_font = URW Gothic L 9
execp_font_color = #ffffff 100
execp_background_id = 7
execp_padding = 2 0 2
execp_lclick_command = audtool --playback-playpause
execp_rclick_command = audtool --mainwin-show
execp_mclick_command = audtool --shutdown
execp_uwheel_command = amixer -c 0 sset Master 2%+
execp_dwheel_command = amixer -c 0 sset Master 2%-
execp_tooltip =

seccion player audacious

Es conveniente que conozcamos cada uno de los parámetros disponibles para saber todas sus posibilidades. Vemos algunos de los más importante,

panel tarea

  • execp_has_icon = 1 : Vamos a utilizar dos iconos para conocer si el reproductor esta en marcha o en pausa. En este caso deberá tener el valor 1, en el caso de no utilizar iconos deberemos poner el valor 0. Os dejo a continuación los iconos que deberéis bajar y poner en vuestra carpeta ~/. icons/. De no existir, la creamos.

play

pause

  • execp_icon_w = 16 y execp_icon_h = 16 : Que corresponde a la anchura y altura del icono. Que dependiendo de las dimensiones de nuestro panel nos podrá interesar definir algún otro tamaño.
  • execp_command = audacious.sh 0 50 : Aquí pondremos los comandos a ejecutar por defecto tras el funcionamiento del panel. Como en este caso vamos a utilizar un numero considerable, mejor creamos un script. Este script admite dos parámetros de entrada el primero (0), este corresponde a las lineas a visualizar, normalmente y dependiendo de nuestro panel, vamos a necesitar 1 sola linea, por tanto aquí tendremos los valores (0 cero) o (1 uno). El segundo corresponde al ancho del literal a visualizar del grupo, canción, tiempo actual y tiempo total de la canción actual.
  • execp_interval = 2 : Se refiere al intervalo en segundos que se deberá ejecutar el parametro execp_command.
  • execp_font = URW Gothic L 9, execp_font_color = #ffffff 100, execp_background_id = 7, execp_padding = 2 0 2 : Estos se refieren al aspecto que deberá tener esta tarea cuando aparezca en el panel y todos ellos dependerán de algunos aspectos definidos en esa configuración. Respectivamente serían Font a utilizar, el Color del literal en este caso #ffffff 100, sería el color blanco sin opacidad, el color del background, mirar los que tenemos definidos para el panel, posiblemente tendréis valores como el 0 o 1 y por último el correspondiente a la separación entre los elementos.
  • execp_lclick_command = audtool –playback-playpause : Comando a utilizar cuando se produce el evento de haber pulsado el botón izquierdo del ratón. Con esto detendremos o pondremos en marcha Audacious.
  • execp_rclick_command = audtool –mainwin-show : Comando cuando el botón derecho del ratón se ha pulsado. Mostrará Audacious, si éste se encontrara oculto por alguna circunstancia.
  • execp_mclick_command = audtool –shutdown :  Aquí cerraría el programa, cuando sea pulsado el boton central del ratón.
  • execp_uwheel_command = amixer -c 0 sset Master 2%+ : Cuando subimos con la rueda del ratón, subirá el sonido.
  • execp_dwheel_command = amixer -c 0 sset Master 2%- : Cuando bajamos con la rueda del ratón, bajará el sonido.

Lógicamente para estos cinco últimos parámetros deberemos estar posicionados con el ratón en la tarea de Audacious que se muestra en tint2. También decir que solamente aparecerá siempre y cuando tengamos en ejecución el reproductor, apareciendo en blanco en caso contrario.

Ahora necesitamos decirle a tint2 que active y donde tiene que visualizar esta nueva configuración correspondiente al plugin Executor.

Para ello nos vamos a la sección correspondiente al panel utilizando el parámetro panel_items e insertamos la letra E mayúscula en el lugar que deseamos que sea visualizado. Para ello la insertamos, como en el ejemplo entre el (T)askbar y el (S)ystray. Tras todos estos cambios ya podemos guardar todos los cambios realizados.

# Panel
panel_items = LTESC

Vamos con el script que llamaremos audacious.sh que utiliza el parámetro execp_command, y que será el encargado de visualizar los iconos y diversa información correspondiente a la canción actual.

#!/bin/bash

# Obtiene información de audacious, la formatea a una longitud máxima definida
# Luego intenta separar la cadena en un número definido de líneas,
# respetando los límites de las palabras (solo espacios en blanco normales)
# La primera línea devuelve la ruta a un ícono, para usar con el complemento tint2/execp

me="$(basename "$0")"
icon1="$HOME/.icons/pause.png"
icon2="$HOME/.icons/play.png"
maxlen="$2"     # Longitud máxima de la cuerda antes de dividir en líneas
lines="$1"      # Es mejor si maxlen% lines es 0
tmp_dir="/tmp"

function only_me_or_exit {
	# Asegúrese de que solo se esté ejecutando 1 instancia
	touch "$1"
	read lastPID < "$1" 	# Si lastPID no es nulo y existe un proceso con ese pid, salir 	[ ! -z "$lastPID" -a -d /proc/$lastPID ] && { echo "Ya se está ejecutando una instancia de $me con pid $lastPID." ; exit 1 ; } 	# else - Guardar pid en el archivo de bloqueo y continuar 	echo $$ > "$1"
}

function exit_only_me {
	rm "$pidfile"
	exit
}

function otherinfo_func {
	# Obtener el tiempo actual y total de la canción
	iCurrentTime="$(audtool --current-song-output-length)"
	iTotalTime="$(audtool --current-song-length)"
	echo "${iCurrentTime}/${iTotalTime}"
}

function join_maxlen_func {
	# 2 strings - $1 y $2 - no pasar $maxlen de caracteres
    # pero la primera cuerda debe acortarse, no la 2da.
	dots=""
	[ ${#1} -gt $((maxlen - ${#2})) ] && dots="..."
	echo "${1:0:((maxlen - ${#dots} - ${#2}))}$dots $2"
}

function lines_func {
	string="$1"
	for (( ; lines > 1 ; lines-- ))
	do
		length=${#string}
		for (( fwd=$((length/lines)) , bwd=$((length/lines)) ; bwd >= 0 ; fwd++ , bwd-- ))
		do
			if [[ "${string:$fwd:1}" = " " ]]
			then
				echo "${string:0:$fwd}"
				string="${string:$((fwd + 1))}"
				break
			fi
			if [[ "${string:$bwd:1}" = " " ]]
			then
				echo "${string:0:$bwd}"
				string="${string:$((bwd + 1))}"
				break
			fi
			#~ "${string:$bwd:1}"
			#~ wordlength
		done
	done
	echo "$string"
}

# Solo se tiene que ejecutar 1 sola instancia
pidfile="$tmp_dir/${me}_pid"
only_me_or_exit "$pidfile"

if pidof audacious >/dev/null
then

	status="$(audtool --playback-status)"
    infostring="$(audtool --current-song)"	
    
	case "$status" in
		"playing") 
		echo "$icon2"
		lines_func "$(join_maxlen_func "$infostring" "$(otherinfo_func)")"
		exit_only_me
		;;
		"paused") 
		echo "$icon1"
		lines_func "$(join_maxlen_func "$infostring" "$(otherinfo_func)")"
		exit_only_me
		;;
	esac
	
fi

echo # no icon for uptime?
exit_only_me

Que copiamos y pegamos en nuestros editor y lo guardamos en la carpeta ~/bin/ . Dando a continuación los correspondientes permisos de ejecución al script.

$ cd
$ cd bin
$ chmod +x audacious.sh

Si estas utilizando otra distro y no tienes esa carpeta, la puedes crear o dejar en algún otro sitio, pero necesitarás especificar a ese parámetro el PATH completo, en caso de no estar incluido en esa variable de entorno, por ejemplo,

execp_command = /usr/local/bin/audacious.sh 0 50

Pues ya estaría todo, solo faltaría lanzar Audacious  y refrescar el panel, para hacer esto último tenemos opción en Menú,

Para más información sobre el plugin Executor, puedes acudir al correspondiente hilo del forum, donde puedes obtener muchas ideas, ejemplos y recursos a utilizar para tus propias configuraciones de tint2. Que gracias a todos estos recursos ha sido posible realizar esta utilidad para Audacious.

Os dejo también la descarga, tanto de la configuración del tint2 utilizado, como del script audacious.sh, por si habéis tenido algún problema al realizar este tip.

 

Esta entrada fue publicada en ARCHLabs, articulo, CrunchBang, Debian, GNU/Linux, Openbox, ubuntu y etiquetada , , , , , , , , , , , , , , . Guarda el enlace permanente.

Deja un comentario