22 julio, 2009

Scripts útiles para KDE4 (I)

Hace poco me instalé KDE4 en mi Debian Sid~Experimental amd64.

Después de algún «problema» por falta de paquetes, como el «systemsettings» (nuevo kcontrol). Todo está solucionado.

A lo que iba. También me he instalado Amarok2, que en mi opinión es bastante peor que su anterior versión. Tiene bastante menos funcionalidad y la interfaz me gustaba más la anterior.

Pero dejando eso de lado, una cosa que me molestó mucho es que ya no tenía disponible el script que pausaba la música cuando se bloqueaba la sesión. Yo siempre que me levanto de mi sitio bloqueo la sesión con una tecla, y siempre me ha gustado que cuando lo hiciera se pausara la música y cuando desbloqueara la sesión que volviera a sonar.

KDE4 ya no usa dcop, sino que se ha pasado a DBUS, tampoco me gusta mucho pero es lo que hay. Así que trasteando por aquí y por allí he hecho este script (en bash, por supuesto) que es el que lanzo para bloquear la sesión:

#!/bin/bash

#Tomamos la posicion actual
a=$(qdbus org.mpris.amarok /Player \
  org.freedesktop.MediaPlayer.PositionGet)
sleep 1;
#Tomamos la posicion actual
b=$(qdbus org.mpris.amarok /Player \
  org.freedesktop.MediaPlayer.PositionGet)

#Si las posiciones han cambiado es que estaba sonando.
#Es cutre pero no se me ocurre otra formas
if [ $a -ne $b ];then
  SONANDO="SI"
  qdbus org.kde.amarok /Player \
    org.freedesktop.MediaPlayer.Pause
else
  unset SONANDO
fi

#bloqueo la pantalla
qdbus org.kde.screensaver /ScreenSaver \
  org.freedesktop.ScreenSaver.Lock
sleep 1 #esto es para darle tiempo a bloquear

while :;do
  #miro si la pantalla esta bloqueada
  estado=$(qdbus org.kde.screensaver /ScreenSaver\
    org.freedesktop.ScreenSaver.GetActive) 

  if [ $estado == "false" ];then
    if [ "$SONANDO" ];then
      #sino esta bloqueada y estaba sonando,
      #   le doy al play
      qdbus org.kde.amarok /Player \
        org.freedesktop.MediaPlayer.Play
    fi
    exit 0
  fi
  sleep 5 #compruebo cada 5 segundos
done


Si la interfaz de DBUS de Amarok2 fuera un poco más completa (sólo un poco, no pido mucho) se podrían hacer cosas más divertidas como las que tenía hechas antes y que si alguna vez consigo migralas, las publicaré.

Sed buenos.

6 comentarios:

laparca dijo...
Este comentario ha sido eliminado por el autor.
laparca dijo...

Rober, no pidas mucho a DBUS, que ya sabes que está hecho por la gente de gnome y el que no lo usa va al infierno :-P

La verdad, no sé porqué casi todo lo que sale de ahí apesta bastante en lo que es eficiencia y características... ¿Será porque se dedican a plagiar la forma de programar de microsoft?

P.D.: Por si alguien dice que gnome trata de parecerse a MacOS X la respuesta es que eso solo en el apartado de interfaz, no de código, donde Miguel de Icaza se dedico a utilizar las formas de Microsoft para absolutamente todas las partes del sistema.

P.D. 2: el comentario de antes es el mismo que este, pero he cambiado una opción en la publicación

Cesar Troya dijo...

GRACIAS!!! he pasado horas buscando un comando q me permita hacer esto desde consola, para poder usar el bloqueo de pantalla inalámbrico... y el detalle de parar la musica!... simplemente genial!

gracias
__________________________
http://freeakx.wordpress.com/

Cesar Troya dijo...

sabes porq cambiaron por DBUS??

Roberto Muñoz dijo...

Cambiaron a DBUS por el tema FreeDesktop, que es una organización que pretender aunar en todo lo posible todos los escritorios para que la integración entre ellos sea mejor. Al parecer DBUS es mejor y por eso FreeDesktop lo tomo como estandar. Lo que he visto no es que el problema sea de DBUS sino de las aplicaciones que dan una pobre interfaz a través de el.

Cesar Troya dijo...

Hola, puedo equivocarme, pero si entendí bien, este parece un cambio reciente, si es así, solo hay q esperar a que se adapten al nuevo sistema y este evolucione, sin duda llegara ha ser muy potente.

______________________
http://freeakx.wordpress.com