Skip to main content

the avatar of Francisco J. Arias

Cómo poner "Now playing" con Clementine+Kopete

Hasta hace un par de meses mi reproductor de música favorito en KDE era Amarok. Eso, hasta que me encontré con Clementine, el cuál posee una interfaz mucho más simple para la navegación de archivos que para mí fué lo fundamental. Por otra parte, mi aplicación de mensajería favorita es Kopete. Amarok y Kopete se llevan muy bien puesto que el último incluye la función "Now playing" para varios reproductores salvo mi Clementine :-(

Pero no todo está perdido! Si ponemos en un recipiente un poquito de BASH+QDBUS+Cron podemos hacer nuestro propio script "Now Playing" para establecer el mensaje de estado de Kopete con la canción y el artista que actualmente está sonando en Clementine.

Manos a la obra:

Primero creamos nuestro script en el directorio bin de nuestro home (por inercia, elección y formación utilizo nombres de archivos y variables en inglés):


pico ~/bin/ClementineNowPlaying.sh



Siendo pico el editor de texto que más utilizo. Puedes utilizar tu preferido (Kate/KWrite/Vi...).

Básicamente (y muy básicamente puesto que estoy lejos de ser un experto en BASH scripting) nuestro script obtendrá la canción y el artista que actualmente está reproduciendo Clementine, luego los pondrá en el mensaje de estado de Kopete adornado con la frase "Now playing...".

A continuación pegan el siguiente código dentro del archivo, he agregado comentarios sobre qué hace cada línea:


#!/bin/bash

#Primero  obtenemos el índice de la pista que actualmente esta sonando en Clementine

currentTrackIndex=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack)

#Luego utilizamos ese índice para obtener toda la información de la pista actual

#Con el comando grep nos quedamos sólo la línea que contiene el nombre del artista, esta línea es por ejemplo artist: Bon Jovi
artist=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $currentTrackIndex | grep artist)

#Se aplica el mismo procedimiento para el título, esta variable quedará de la forma title: Always
title=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $currentTrackIndex | grep title)

#Luego de la cadena original (ej: "artist: Bon Jovi") queremos borrar la subcadena "artist: " y eso lo hacemos así:
artist=${artist/artist: /}

#Lo mismo para el título:
title=${title/title: /}

#Finalmente enviamos la frase con las variables al mensaje de estado de Kopete:
/usr/bin/qdbus org.kde.kopete /Kopete org.kde.Kopete.setStatusMessage "Now playing $title by $artist"



Guardamos los cambios y cerramos nuestro editor de texto.
Le otorgamos permisos de ejecución a nuestro script:


chmod +x ~/bin/ClementineNowPlaying.sh


Es tiempo de probar nuestro script: ejecutamos Clementine con alguna canción y abrimos Kopete.
En el terminal ejecutamos nuestro script:


./bin/ClementineNowPlaying.sh


Chequeamos que Kopete ha realizado correctamente el cambio de estado:



Finalmente necesitamos que nuestro script se ejecute cada cierto intervalo de tiempo para asegurarnos que mostrará la información lo más actualizada posible sobre lo que escuchamos. Para eso utilizaremos el gestor de tareas de Linux: Cron.
Con el siguiente comando abriremos el editor del Cron:


crontab -e


Una vez ahí, presionamos la tecla i para iniciar la inserción de texto y pondremos la siguiente línea:


* * * * * DISPLAY=:0.0 /home/francisco/bin/ClementineNowPlaying.sh &>/dev/null


Esta línea quiere decir que ejecutaremos nuestro script cada minuto, de cada hora, de cada día, etc...
Para salir del editor presionamos la tecla ESC y luego ponemos : x y presionamos enter.
Para comprobar que hemos guardado los cambios ponemos:


crontab -l


Si no es así, volver sobre el paso anterior hasta que resulte! (Lo sé, ese editor no es de los más intuitivos).
Cuando resulte habremos terminado!

Suerte!

Cualquier pregunta con respecto a esto no duden en enviarla como comentario.

Note: I can answer in english as well, so if you know what it is about everything here but although of that you may need some help, so please don't hesitate and leave a comment ;-)

the avatar of Francisco J. Arias

Compartir el escritorio en un aula de clases

Introducción: Una metodología de enseñanza que utilizo para enseñar programación consiste en no presentar la solución completa de un problema sino de ir completándolo incrementalmente con la ayuda de los estudiantes presentes en la clase. Mi rol se limita a sólo ser un guía que los ayuda a descubrir una posible solución al ejercicio planteado.

Problemática: Este esquema funciona bien en los horarios de cátedras (salas/aulas) pero los laboratorios (salas de computación) no cuentan con proyector (datashow) entonces es necesario contar con alguna herramienta que permita compartir la pantalla de mi computador vía red para que los estudiantes puedan ver en sus computadores lo que voy haciendo en el mío.

Solución: Utilizar lo que describí en mi post anterior para el control de sesiones en openSUSE. Esta vez queremos que los clientes (estudiantes) puedan ser sólo espectadores de mi sesión. Para esto utilizamos el siguiente comando en un terminal (como usuario normal):


x11vnc -forever -bg -viewonly -nopw -shared


La explicación "humana" de cada uno de los parámetros es la siguiente:

  • forever: Indica que la sesión compartida seguirá iniciada incluso después de que algún cliente se desconecte.

  • bg: Sirve para que la sesión de nuestro servidor corra como un servicio de fondo (background).

  • viewonly: Este parámetro nos sirve para establecer que los clientes sólo podrán ver nuestro escritorio y no manipular el mouse ni el teclado.

  • nopw: Establece que los clientes puedan conectarse al servidor sin clave.

  • shared: Nos permite tener más de un cliente.


Una vez que el comando es introducido aparecerán en la consola un montón de instrucciones. Nos interesa un par de  líneas como las siguientes:


The VNC desktop is: localhost.site:2
PORT=5902



La primera línea puede variar según la configuración del equipo. La segunda línea nos indica en qué puerto está corriendo nuestro servidor. En el ejemplo es el 5902, así que es necesario ir al administrador del cortafuegos y abrir dicho puerto:

YaST->Seguridad y Usuarios->Cortafuegos->Servicios Autorizados->Opciones Avanzadas

En la sección "Puertos TCP" agregamos el puerto que anotamos en el paso anterior:



Damos aceptar a esa ventana y a la ventana de configuración del cortafuegos.

Y ahora estamos listos para compartir nuestro escritorio con los estudiantes. Sólo debemos decirles que bajen un cliente VNC (como TightVNC) y les damos nuestra IP y el puerto asignado al servicio, por ejemplo:


192.168.0.100:5902


Y eso es. Happy teaching!

the avatar of Iterativo e Incremental

Wikipedia

Acabo de leer en XKCD: Curiosidad de la Wikipedia: si eliges cualquier artículo y cliqueas en el primer enlace del artículo que no esté entre paréntesis o en cursiva, y repites el proceso, terminarás en "Filosofía". Acabo de probarlo con «bujia» y «bruce willis» jajaMás

the avatar of Iterativo e Incremental
the avatar of Iterativo e Incremental

Escritorio Junio 2011

Escritorio Junio 2011, a photo by muadib.ar on Flickr. Por ahora, paso a dejar una captura de escritorio. La disposición de las cosas está basada según esta captura, y por si a alguien le interesa dejo algunas características. SO: Archlinux – KDE SC 4.6 Plasma theme: Redo Fondo: EKUA Iconos: Faenza-jetpack Estilo de ventanas: N.7Más

a silhouette of a person's head and shoulders, used as a default avatar

the avatar of Iterativo e Incremental

Compartir facilmente archivos en la red

En mi caso (en este momento) estoy en Ubuntu 10.10, y encontré en un blog como compartir archivos de manera sencilla, y accederlos desde cualquier navegador y cualquier S.O. de la red local. Solamente tenemos que abrir una terminal y ejecutar python -m SimpleHTTPServer 19000 & Donde el 19000 es el puerto que le queres…Más

the avatar of Francisco J. Arias

Controlar remotamente tu sesión de openSUSE

En el principio de los tiempos, las sesiones de administración remota por vnc creaban una sesión gráfica nueva y no era posible controlar, por ejemplo, la sesión de usuario que actualmente estaba abierta. Hoy los tiempos han cambiado y ya es posible realizarlo en unos muy sencillos pasos:

1. Instalar el servidor de administración remota. Vamos a la administración de paquetes de YaST y en el campo de búsqueda ponemos: x11vnc. Seleccionamos ese paquete y le damos a instalar (aceptamos sus dependencias si es que las hay).

2. Habilitar el servidor para la administración remota. En openSUSE es muy fácil, basta con ir a YaST->Servicios de Red->Administración Remota. Marcamos la opción "Permitir administración remota" y chequeamos en "Puerto abierto en el cortafuegos". Al aceptar se instalarán los paquetes necesarios.

3. Opcionalmente y si fuera necesario abriremos el puerto 5900 de nuestro computador: YaST->Seguridad y Usuarios->Cortafuegos.  Seleccionamos "Servicios autorizados" y luego "Opciones Avanzadas". En la ventana agregamos el puerto TCP 5900.

4. Ya casi estamos listos. Ejecutamos el servidor de vnc en un terminal y como usuario normal de la siguiente forma:


x11vnc -usepw


Eso nos pedirá el ingreso de una clave para el control de acceso; ponemos la clave que queramos y la volvemos a ingresar.

5. Ahora podemos probar desde otro computador en la red local. Por ejemplo si la máquina que queremos controlar tiene la IP 192.168.0.40 presionamos Alt+F2 y ponemos el siguiente comando (o en una terminal):


vncviewer 192.168.0.40


Al dar enter nos pedirá la clave que ingresamos en el otro equipo y ya deberíamos estar controlando nuestro computador.

6. Al cerrar la sesión de VNC no podremos volver a conectarnos a nuestro equipo a menos que nuevamente ejecutemos el comando x11vnc... para evitar esto y habilitar la administración remota permanentemente haremos lo siguiente en KDE: Preferencias del Sistema->Autoarranque->Añadir programa.  En el campo de texto ingresaremos:


x11vnc -usepw -forever -bg


Aceptamos y ya hemos terminado. Ahora podemos controlar nuestra sesión activa de KDE desde cualquier otro computador.

the avatar of Iterativo e Incremental

Mejorando la visualización de tipografías en LCD, y en Fedora 13

No en todas las distribuciones gnu/linux están disponibles parches para mejorar la visualización de tipografías en monitores LCD (creo que por un problema de patentes), Fedora es una de las distribuciones que no incluye esos parches. En el blog Infinality.net encontré unos paquetes, una guía y recomendaciones para mejorar nuestras fuentes. Resumiendo un poco los…Más