Delirios de un Informático

Actualización de Gnome Integration para Spotify

Acabo de actualizar Gnome Integration para Spotify, agregando soporte para los cambios realizados en la especificación (desde la versión 0.4.8) y un loop para monitorizar el cambio de canción (hasta que se implemente completamente la especificación MPRIS). Con estas mejoras, el script está mucho más funcional, mostrándose automáticamente la notificación al cambiar de canción (como Rhythmbox) y pudiendo saltar de canción directamente desde la notificación.

Gnome Integration para Spotify

Hace unos días Johan Björk, desarrollador de la versión para Linux de Spotify, comunicó la implementación de MPRIS que permite a los desarrolladores utilizar D-Bus para controlar el reproductor. Tras comprobar que la implentación funciona correctamente me decidí a actualizar mi script que he decidido portar a Python y renombrar a Gnome Integration para Spotify (al estilo de mi Gnome Integration para Mozilla Thunderbird).

Las características son:

  • Comandos para la gestión de teclas globales (hotkeys)
  • Notificaciones automáticas al estilo de Rhyhmbox al cambiar de canción
  • Las notificaciones muestran la canción, el artista, el álbum y su carátula
  • Descarga automática de la carátula con caché
  • Posibilidad de saltar la canción directamente desde la notificación
  • Apertura de Spotify si no se está ejecutando
  • Apertura de links de Spotify

El modo de uso es muy sencillo. Basta abrir el script en vez del ejecutable de Spotify para que pueda monitorizar el cambio de canción. Para las teclas multimedia (explico cómo configurarlas al final de este post) basta llamar al script indicando el comando a ejecutar:

  • next: salta a la siguiente canción
  • prev: salta a la canción anterior
  • pause: pausa la reproduccion
  • play: reanuda la reproduccion
  • stop: detiene la reproduccion
  • show: muestra la ventana de Spotify
  • hide: oculta la ventana de Spotify
  • quit: sale completamente de Spotify

Si no se indican parámetros arranca en modo daemon para monitorizar el cambio de canción, abriendo Spotify si no lo está.

Desde ya está disponible con licencia GPL 3.0 desde la sección Proyectos o directamente descargándolo desde aquí 🙂

Actualización: he agregado soporte para la nueva especificación y un loop para monitorizar el cambio de canción hasta que se implemente completamente la especificación MPRIS.

Silenciar Rhythmbox con Python mediante D-Bus

Gnome Rhythmbox tiene algún pequeño problema al pausar y reanudar reproducciones de Last.fm, y teniendo en cuenta que a veces es necesario pararlo o silenciarlo para que no interfiera en otras cosas, me he hecho (porque no he encontrado el modo de silenciarlo de ninguna otra manera) este pequeño script en Python (requiere python-dbus) que permite silenciar Rhythmbox sin parar la reproducción:

#!/usr/bin/env python
import os
import dbus

session_bus = dbus.SessionBus()
proxy_obj = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player')
player = dbus.Interface(proxy_obj, 'org.gnome.Rhythmbox.Player')

if player.getMute() < 1:
	player.setMute(True)
else:
	player.setMute(False)

Si se combina con xbindkeys para asignarse a una combinación de teclas como Control + Silencio la comodidad ya es total :D.

Solución a los problemas de Bluetooth y DBus en Gnome

Hacía un tiempo que por no-se-que-cambio la integración de Bluetooth con Gnome no iba del todo bien. Por algún motivo el applet (que viene en el paquete bluez-gnome) no me permitía enviar archivos ni explorar dispositivos, ni podía administrar los dispositivos emparejados. Al ejecutar en una consola bluetooth-applet obtenía:

Bluetooth OBEX server failed: Bluez DBus interface not available

Y al ejecutar sudo /usr/sbin/hcid -d -n el resultado era:

Unable to get on D-Bus

Tras curiosear un poco dí con la solución gracias al archivo /etc/dbus-1/system.d/bluetooth.conf, donde se puede ver:

<!-- allow users of netdev group to communicate with hcid -->
<policy group="netdev">
  <allow send_destination="org.bluez"/>
</policy>

Es decir, que basta con añadir el usuario al grupo netdev y tendrá permisos para conectarse al servidor DBus, con lo que Bluetooth volverá a ser operativo.

D-BUS en reproductor oficial de Last.fm

Algo que echo en falta en el reproductor oficial de Last.fm ( no uso amaroK porque el soporte para el nuevo protocolo no se implementa en la rama 1.4.x, lo que provoca que no puedas banear canciones o saltarte canciones, por ejemplo ) es el soporte para control externo. En Linux existen varias alternativas para comunicarse con las aplicaciónes, como DCOP ( usado por ejemplo por amaroK en KDE ) o D-BUS ( pretende ser el estándar para KDE/Gnome ).

Como el reproductor de Last.fm está programado con las librerías QT, se ha optado por la segunda opción, ya que estas librerías ofrecen un buen soporte para D-BUS. En los foros de Last.fm un usuario llamado tarsus4 ha colgado el código de una extensión que permite controlar el reproductor mediante D-BUS, estando soportadas las acciones más básicas: reproducir, parar, saltar, variar el volumen y obtener información de la pista en reproducción

Para compilar el módulo en Debian y derivados, el proceso es el siguiente:

sudo apt-get libqt4-dev
sudo ln -s /usr/lib/libLastFmTools.so.1 /usr/share/lastfm/libLastFmTools.so
wget http://cdn.last.fm/client/src/last.fm-1.4.0.56102.src.tar.bz2
wget http://glue.umd.edu/~rossatok/dbusextension-1.0.tar.bz2
tar xjvf last.fm-1.4.0.56102.src.tar.bz2
cd last.fm-1.4.0.56102/src/extensions/dbus
qmake dbusextension.pro
make
cd ../../../bin/extensions
sudo cp libext_dbusextension.so /usr/lib/lastfm

En caso de fallar la compilación, deberá editarse el archivo con extensión .pro y cambiar la ubicación de las librerías.

Esperemos que en futuras versiones, se integre en el código oficial o implementen un soporte completo….