Autotexto en GNU/Linux (III)

En los dos anteriores artículos vimos cómo mejorar nuestra productividad a la hora de escribir textos repetitivos.

El primer método lo hacía con combinaciones de teclas. El segundo mejoraba éste ya que simplemente poniendo una sencilla abreviatura, ésta se expandía al texto que queríamos mostrar. Sin embargo, este último método era válido sólo para el editor emacs. En este artículo vamos a ver cómo hacer esto último pero ya siendo válido para cualquier aplicación de GNU/Linux que usemos.

Existe una aplicación fantástica en Linux que permite hace estas cosas de forma muy sencilla llamada Autokey.

En la propia web oficial del proyecto podéis ver cómo instalarlo desde repositorios para Debian/Ubuntu.

En mi caso (openSUSE 13.1) me he descargado los fuentes y lo he instalado así:

python setup.py install

Hay que ejecutarlo como root (o usar sudo) para que puedan copiarse los ejecutables en los directorios correspondientes.

Para ejecutarlo tenéis dos posibilidades: autokey-gtk y atuokey-qt. Como yo uso KDE he optado por la segunda opción. Para que ésta funcione hay que instalar las siguientes dependencias:

python-xlib
python-pyinotify
python-qscintilla

Para la de gtk no he probado así que no os puedo decir qué dependencias tiene exactamente. Al final, es lo mismo, porque simplemente se trata de un interfaz (gtk o bien qt) que usan la misma configuraicón (almacenada en $HOME/.config/autokey).

En esta interfaz podéis definir los textos e incluso ejecutar scripts. Por ejemplo, además de textos “estáticos” podéis hacer que cuando pulséis una abreviatura se inserte la hora actual. Tenéis ya definidos algunos ejemplos que os valdrán para probar la aplicación. Crear vuestras propias frases es bien sencillo:

  1. Pulsamos en File–> New –> Phrase (*)
  2. En el cuadro de texto escribís la frase que os interesa (puede ser una frase, un párrafo -con intros-… lo que queráis)
  3. Luego pulsáis en la parte inferior donde “Abbreviations”, en concreto, en el botón de la derecha llamado “set”. Ahí se os abre una ventanita para meter las distintas abreviaturas que queréis que “disparen” el texto.

Es muy completa la aplicación. Entre otras cosas, podéis:

  • Insertar un párrafo usando distintas abreviaturas
  • Especificar si queréis que haya que pulsar espacio tras la abreviatura o no
  • Ignorar mayúsculs/minúsculas a la hora de escribir las abreviaturas
  • Asignar combinaciones de teclas
  • Restringir la abreviatura para que sólo funcione en ciertas aplicaciones (opción “Window filter”)
  • Lo mejor: podéis crear scripts en python para hacer cualquier cosa que queráis que se inserte automáticamente. En la aplicación vienen varios ejemplos, pero las posibilidades son infinitas.

Esto último (creación de scripts) es una parte muy potente que os permitirá conseguir casi cualquier dato para insertarlo en vuestros documentos. Por ejemplo, esto sería para introducir la fecha (viene por defecto ya definida en los scripts de python):

output = system.exec_command("date")
keyboard.send_keys(output)

De esta forma, se puede ejecutar cualquier comando que queráis. Por ejemplo:

output = system.exec_command("ls $HOME")
keyboard.send_keys(output)

Obviamente, el script puede ser tan complejo como queráis. Se pueden hacer cosas interesantes como ésta (viene en los ejemplos de la aplicación):

choices = ["This is the option 1", "This is the option 2", "This is the option 3"]

retCode, choice = dialog.list_menu(choices)
if retCode == 0:
   keyboard.send_keys("You chose " + choice)

En este caso, se muestra una lista donde podemos elegir la frase a insertar. Podéis modificarla y personalizarla con tantas opciones como queráis.

Aquí os dejo una captura de pantalla (usando la interfaz Qt):

Autokey

Autokey

Es una de las aplicaciones más útiles para GNU/Linux que he encontrado desde que lo uso (hace casi 15 años, allá por el 99 con RedHat Linux 6 -cuando aún no era Enterprise, ni existía Fedora, ni mucho menos Ubuntu…-).

Si sois desarrolladores podéis usarla para insertar code snippets, es decir, trozos de código que repetitivo que siempre tenéis que estar tecleando cada vez (por ejemplo, los includes típicos de una aplicación, la plantilla para empezar una función en un lenguaje determinado, definición de clases, …).

Si queréis más info, además de la web oficial (donde hay una wiki con ejemplos, manuales, FAQ…), os recomiendo que echéis un vistazo aquí, donde tenéis una descripción muy completa de la aplicación.

NOTA: en las primeras pruebas he detectado que si metéis un espacio en una abreviatura al programa no le sienta muy bien, así que cuando pongáis una abreviatura tecleadla y seguidamente pulsad intro. Ya está ;-).

 

(*) Sí, el programa está entero en inglés, pero es bastante intuitivo.