domingo, 22 de septiembre de 2013

Un Portapapeles en la Nube

Me gusta combinar scripts con las bondades de Linux (como qdbus) ya que con muy poco esfuerzo e ingenio podemos hacer cosas bastante interesantes que nos pueden hacer la vida frente al computador relativamente más cómoda.

En esta ocasión implementaremos una serie de scripts para que cada vez que copiemos algo a nuestro portapapeles (Klipper, en este caso) tengamos una copia en la nube. Así por ejemplo, si nos encontramos con una página interesante que nos gustaría seguir viendo después en otro computador o dispositivo, bastará con copiar la dirección y ya la tendremos directamente accesible desde la nube.

Materiales:

  •     xbindkeys: Programa que nos permite crear atajos de teclado.
  •     xmodmap: Utilidad para cambiar el comportamiento de algunos atajos.
  •     xvkbd: Utilidad para emulación de teclado.
  •     Una cuenta en Copy o Dropbox. Ambos con clientes Linux y Android.

xbindkeys no viene en la instalación por defecto para openSUSE 12.3 por lo que iremos al OBS y buscaremos la versión (inestable) que corresponde a nuestro openSUSE (One-Clic Install). Particularmente instalé la versión que estaba en el repo Utilities dejando sin suscripción al repositorio después de instalar.

xmodmap ya estaba instalado en el sistema por defecto. Para instalar xvkbd sólo bastará hacerlo de la manera usual:

# zypper in xvkbd

Esto es lo que haremos con todo lo que hemos instalado: Crearemos un atajo de teclado que llamará un script nuestro. Dicho script hará dos cosas: primero simular la combinación control+c y segundo recuperar lo que hayamos copiado al portapapeles para enviarlo a nuestro archivo en la nube.

Lo primero que haremos será crear el archivo configuración por defecto de xbindkeys para nuestro usuario, haciendo lo siguiente en una consola/terminal:

$ xbindkeys --defaults > $HOME/.xbindkeysrc 

Ahora editaremos el archivo con algún editor simple. Debemos comentar o borrar los ejemplos que vienen habilitados. Deberían quedar así con un # al inicio de cada línea, de la siguiente forma:

# Examples of commands:

#"xbindkeys_show"
 # control+shift + q

# set directly keycode (here control + f with my keyboard)
#"xterm"
#  c:41 + m:0x4

# specify a mouse button
#"xterm"
#  control + b:2


Viendo los ejemplos podemos darnos cuenta que la estructura de este archivo es:
"comando, aplicación o script a ejecutar"
  combinación de teclas

Al final del archivo entonces agregaremos lo siguiente:
"~/bin/super_copiar.sh"
  m:0x50 + c:54

Primera línea: nuestro script (que aún no creamos) con su ruta. En la segunda línea he puesto la combinación de teclas que en mi teclado corresponde a super+c (tecla del innombrable Windows). Cómo saber cuál es el código para vuestros teclados? Usaremos el comando:

$ xbindkeys -k

Se abrirá una ventanita y a continuación presionamos la combinación de teclas super+c y nos aparecerá en la consola el código asociado.

Guardamos los cambios en nuestro archivo y lo cerramos.

Para poder usar la tecla super en combinación de otras debemos ejecutar el siguiente comando antes:

$ xmodmap -e "remove mod4 = Super_L"

Ya estamos casi listos. Ahora debemos crear nuestro script llamado super_copiar.sh en la ruta /home/nombre_de_usuario/bin. Para eso abriremos un editor de texto (kate, kwrite, nano, etc) y pondremos lo siguiente:

#!/bin/bash
xvkbd -xsendevent -text "\Cc"
qdbus org.kde.klipper /klipper org.kde.klipper.klipper.getClipboardHistoryItem 0 >> ~/Dropbox/Historial.txt

El primer comando de este script usa la utilidad xvkbd para simular que se ha presionado la combinación de teclas Control+c. El segundo comando lo que hace es recuperar el más reciente texto agregado a klipper y pegarlo al final de un archivo de texto llamado Historial.txt que se encuentra en nuestra carpeta sincronizada en la nube (Dropbox o Copy). Guardamos los cambios, cerramos y le damos permisos de ejecución:

$ chmod +x ~/bin/super_copiar.sh 

Finalmente ejecutaremos xbindkeys y probaremos que funcione seleccionando algún texto y presionamos super+c (o la combinación que hayan elegido). Verán que el archivo Historial.txt se va poblando felizmente con nuestro clipboard.

Alcances menores
He elegido super+c en vez de sobreescribir el control+c habitual pues porque la privacidad es importante, así enviaremos exactamente sólo lo que nos interesa tener en la nube mediante una combinación de teclas alternativa.

Es probable que debamos ejecutar al inicio de sesión el comando xmodmap y la activación de xbindkeys. Para eso podemos hacer un script simple llamado atajos_de_teclado.sh y pondremos lo siguiente:

#!/bin/bash
/usr/bin/xmodmap -e "remove mod4 = Super_L"
/usr/bin/xbindkeys

Guardamos los cambios, cerramos, damos permisos de ejecución y lo copiamos a nuestra carpeta ~/.kde4/Autostart

Eso sería todo. Como tarea pueden mejorar el script super_copiar.sh para agregar a cada línea la fecha y la hora en que el comando fue agregado a nuestro historial ;-)

No hay comentarios:

Real Time Web Analytics