Datos personales

sábado, 27 de noviembre de 2010

Automatización de escritorio en Debian Lenny

Introducción


Para los que se pasan el día escribiendo "novelas" en el ordenador y echan de menos que su cliente de correo (por ejemplo) no disponga de un sistema de macros, resultará interesante la utilidad Autokey.

Autokey permite definir macros que se expanden de forma automática en cualquier aplicación de nuestro escritorio. Estas macros pueden consistir incluso en scripts Python.

NOTAS:
  • Los usuarios de Windows y Mac pueden usar Autohotkey o TextExpander, respectivamente.
  • Los autores de Autokey perecen recomendar IronAHK como un auténtico sustitudo de Autohotkey, pero al estar basado en .NET me parece demasiado pesado para lo que yo necesito.

Instalación en Debian Lenny

Dado que no existe paquete para Lenny, recompilaremos el paquete disponible para Squeeze.

Bajamos el paquete fuente desde http://packages.debian.org/source/squeeze/autokey, lo extraemos y entramos al subdirectorio generado durante este proceso:

$ dpkg-source -x autokey_0.71.0-1.dsc
$ cd autokey-0.71.0/

Editamos el fichero debian/control para sustituir las dependencias python > 2.6 por dependencias python > 2.5.

También se podría aprovechar para declarar la dependencia con los paquetes python-simplejson (sin el cual, la aplicación se instala, pero no se ejecuta) y python-xlib (necesario para instalar).

Compilamos el paquete y lo instalamos:

$ sudo aptitude install build-essential cdbs wmctrl python-simplejson python-xlib
$ cd autokey-0.71.0/
$ dpkg-buildpackage
$ cd ..
$ sudo dpkg -i autokey-common_0.71.0-1_all.deb
$ sudo dpkg -i autokey-gtk_0.71.0-1_all.deb

Una vez terminado el proceso, aparecerá la entrada correspondiente en el menú "Accesorios". Este es un pantallazo de la ventana principal de la aplicación:


La forma de configurarla es bastante intuitiva, por lo que no me voy a extender más. Los detalles están en el Wiki.

Referencias

viernes, 19 de noviembre de 2010

bash: autocompletado para clusterSSH

En esta entrada vimos como activar en bash el completado automático para el comando tsclient.

En el caso de la utilidad cssh, se trata de hacer lo mismo, pero usando este script:

_bash_completion_cssh()
{
        local cur prev opts
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"

        local clusters=$(grep clusters ~/.csshrc |  cut -d' ' -f '3-')
        COMPREPLY=($(compgen -W "${clusters}" -- ${cur}))
        return 0
}
complete -F _bash_completion_cssh cssh

Referencias

jueves, 4 de noviembre de 2010

bash: Autocompletado para tsclient

Utilizo habitualmente la utilidad tsclient para administrar sistemas windows y su interfaz no es demasiado cómoda a la hora de escoger alguna de las conexiones que ya tengo guardadas en el directorio ~/.tsclient

El siguiente script bash activará el autocompletado para el comando tsclient, de forma que, la primera pulsación del tabulador mostrará directamente la opción -x y la segunda listará las conexiones que tenemos disponibles dentro de ~/.tsclient.

_bash_completion_tsclient()
{
 local cur prev opts
 COMPREPLY=()
 cur="${COMP_WORDS[COMP_CWORD]}"
 prev="${COMP_WORDS[COMP_CWORD-1]}"

 opts="-x"

 case "${prev}" in
  -*)
    local conexiones=$(ls ~/.tsclient/*.rdp)
    COMPREPLY=($(compgen -W "${conexiones}" -- ${cur}))
    return 0;
    ;;
  *)
  ;;
 esac

 COMPREPLY=($(compgen -W "${opts}" -- ${cur}))  
 return 0
}
complete -F _bash_completion_tsclient tsclient

Para que los cambios sean permanentes, crearemos el fichero /etc/bash_completion.d/tsclient y reinicaremos nuestro shell.

Para probarlo inmediatamente en la sesión activa basta con ejecutar:

$. /etc/bash_completion.d/tsclient

En caso de problemas, lo primero que hay que comprobar es que el siguiente código está habilitado en ~/.bashrc o en /etc/bash.bashrc:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

Para ver la lista de reglas que tenemos habilitadas en nuestra sesión ejecutaremos el comando complete -p

Referencias

martes, 2 de noviembre de 2010

Paquete Debian del día: Apertium-tolk y Apertium-dbus

apertium-tolk

apertium-tolk es una interfaz gráfica para el traductor Apertium que va traduciendo según escribimos.

Lo instalamos junto con un par de paquetes de idioma (Gallego-Castellano, Inglés-Castellano), de lo contrario no podremos hacer gran cosa:

$ aptitude install apertium-tolk apertium-es-gl apertium-en-es

En esta captura de pantalla ser puede observar la apariencia de esta utilidad:

Desgraciadamente, apertium-tolk tiene problemas con los caracteres no ASCII debido a la codificación por defecto que se usa en Python 2.5 (ver bug 473561)

Más información:


apertium-dbus

El paquete apertium-dbus ofrece un servicio D-Bus a través del cual podemos acceder a los servicios de traducción de Apertium.

Instalamos el paquete correspondiente junto con la utilidad qdbus, la cual, junto con dbus-monitor, nos servirá para inspeccionar las interfaces que ofrece apertium:

$ aptitude install apertium-dbus libqt4-dbus

$ qdbus | grep -i apert
org.apertium.info
org.apertium.mode

$ qdbus  org.apertium.mode 
/
/en_es
/es_en
/es_gl
/gl_es

Espiamos las peticiones que lanza apertium-tolk:

$ dbus-monitor "interface=org.apertium.Mode"

...

method call sender=:1.36 -> dest=:1.31 path=/es_gl; interface=org.apertium.Mode; member=translate
array [
dict entry(
string "mark_unknown"
string "false"
)
]
string "hola, mundo"

Con la información anterior, ya estamos listos para lanzar una petición de traducción desde la línea de comandos.

En el siguiente ejemplo, se solicita una traducción del español al gallego, indicando que se marquen con un asterisco las palabras desconocidas:

$ dbus-send --print-reply --dest=org.apertium.mode /es_gl org.apertium.Mode.translate dict:string:string:"mark_unknown","true" string:"hola, mundo"

method return sender=:1.31 -> dest=:1.147 reply_serial=2
string "ola, mundo"

En el wiki de apertium hay ejemplos similares para diversos lenguajes de programación.

Más información