Archivo por meses: agosto 2014

Presentaciones web a partir de fichero de texto plano

Introducción

Cuando uno va  crear una presentación siempre recurre a programas tipo Powerpoint o -mejor aún- Libreoffice Impress. Estos programas generan un archivo que luego se puede reproducir a pantalla completa en un PC. Dicho PC debe contar con el programa en cuestión para visualizar la presentación o, al menos, de un visor compatible con dicho formato.

Otra posibilidad es genera una presentación para ser visualizada en un navegador web. Algunos programas permiten generar presentaciones de este modo pero, si queremos modificar la presentación, tenemos que tener, igualmente, el programa en cuestión para poder hacer los cambios que queramos para después volver a exportar la presentación en formato html.

A mí me gusta no tener que depender de programas concretos para editar las presentaciones, y tenía pendiente buscar algún mecanismo sencillo para generar presentaciones simples sin tener que estar toqueteando formatos cada 2×3.

Un día, en una presentación Caldum descubrí precisamente lo que andaba buscando: el sistema Slideshow S9.

Slideshow S9 es una solución solución elegante y sencilla para generar las presentaciones a partir de un archivo de texto plano «formateado» (*) usando Markdown.

Markdown

Markdown es un lenguajes de marcas ligero, es decir, un lenguaje más sencillo que otros como html, por ejemplo, que a la hora de editar se hacen más complejos y difíciles de mantener. Para entenderlo más fácilmente, lo mejor es un ejemplo:

Para poner en cursiva algo simplemente lo pondríamos así:

 

*texto a poner en cursiva*

Si queremos poner en negrita algo lo haríamos así:

**texto a poner en negrita**

Si queremos poner una lista no ordenada (la típica de guiones), la pondríamos así:

* Un elemento 
* Otro elemento de la lista

Si queremos hacer una lista ordenada:

1. Elemento 1
2. Elemento 2

Con esto ya os hacéis una idea de lo sencillo que es crear un archivo en Markdown. Si queréis ampliar la información al respecto, os dejo unos enlaces interesantes:

Slideshow S9

¿Pero qué es realmente Slideshow S9? Es un sistema para generar presentaciones html (para visualizarlas en un navegador web) a partir de un archivo de texto en formato markdown (entre otros).

En la web oficial tenéis, además de toda la información sobre el proyecto, un ejemplo de presentación en texto plano que os recomiendo que probéis para ver lo fácil y cómodo que es crear presentaciones usándolo.

Lo primero que necesitáis si queréis usarlo es instalarlo en vuestro sistema. Slideshow S9 está escrito en Ruby que se puede instalar usando el sistema de gestión de paquetes de Ruby llamado RubyGems. Para ello usaremos -como root- la aplicación gem, que es como se llama el programa que permite usar RubyGems en Linux:

# gem install slideshow

Una vez instalado, para crear una presentación a partir de un fichero de texto plano (podéis usar, insisto, el ejemplo que viene en la web oficial), haríamos esto:

$ slideshow2.0 build presentacion.txt

Ahora abrimos el fichero «presentacion.html» en el navegador y podremos ver la misma. Para poder avanzar y retroceder podemos usar distintas teclas, entre otras:

Action Key
Siguiente transparencia Space Bar, Right Arrow Down Arrow, Page Down
Anterior transparencia Left Arrow, Up Arrow, Page Up
Primera transparencia Home
Última End

Plantillas

El aspecto de la presentación es demasiado simple, pero podemos cambiar su aspecto sin más que usando alguna de las plantillas que hay disponbiles. Ésta es una de las cosas más interesantes que tiene este sistema, que se pueden usar montones de plantillas de forma muy sencilla, cambiando así el aspecto global de la presentación.

Las plantillas tenemos que instalarlas primero, pero su instalación no podría ser más sencilla. Primero ejecutamos este comando para actualizar el sistema de paquetes de RubyGems y que tenga en cuenta todos los últimos cambios en el mismo:

$ slideshow2.0 update

A continuación ejecutamos esto para instalar la plantilla:

$ slideshow2.0 install PLANTILLA
 
 Plantillas buenas: impress.js, deck.js, shower... Ejemplo de instalación de la plantilla "shower":
$ slideshow2.0 install shower

Ahora, si queremos generar una presentación usando una plantilla haríamos esto (en este caso usaremos la plantilla «shower»):

$ slideshow2.0 build presentacion.txt -t shower

Con este comando podéis ver qué plantillas tenéis instaladas:

$slideshow2.0 list

Podéis encontrar más plantillas aquí y más info sobre las mismas aquí.

Conclusiones

  • Si necesitáis hacer una presentación que se pueda visualizar sin problemas en cualquier equipo sin depender de que tenga tal o cual software,
  • si os gusta trabajar en texto plano para poder editarlo fácilmente,
  • si no queréis perder mucho tiempo en los formatos de las presentaciones y
  • si queréis automatizar al máximo la creación de presentaciones sencillas…

… ¡no dejéis de probar Slideshow S9!

 

(*) Lo entrecomillo porque realmente el formateo lo aplicamos a la vez que vamos escribiendo (una vez que conocemos el lenguaje Markdown y tenemos una cierta experiencia en su uso).

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.

Autotexto en GNU/Linux (II): Abreviaturas en Emacs.

En el anterior artículo vimos una forma de insertar autotexto en distintas aplicaciones de GNU/Linux.

En esta entrega vamos a ver cómo hacer esto pero dentro de nuestro editor favorito: emacs.

Las abreviaturas en emacs son expresiones o palabras que se expanden en frases o cadenas que elijamos. El objetivo es ahorrarnos caracteres a la hora de tipear y, por tanto, acelerar nuestra escritura (y, por ende, nuestra productividad). Ejemplo: escribimos mucho nuestro nombre completo, así que definimos una abreviatura de forma que cuando tecleemos (por ejemplo) «nn» sin comillas, al pulsar espacio o intro se expanderá a nuestro nombre completo. ¿Cómo hacerlo? Usando la siguiente combinación de teclas:

C-x a i g

Esta combinación define una abreviatura (tenemos que pulsar esto tras escribir la palabra abreviada -en este caso «nn» sin comillas y sin poner espacios; al hacerlo nos pide que metamos la frase a abreviar, en este caso nuestro nombre completo). La letra «g» en la combinación de teclas es para que las abreviaturas estén disponibles para todos los buffers. Si por alguna razón queréis que sólo estén disponibles para un buffer usad «l» en su lugar.

Una vez creada (podemos crear tantas como queramos), si probamos a escribir «nn» no se sustituye por nuestro nombre, ¿por qué? Pues porque tenemos que estar en el modo menor Abbrev-mode. Activarlo con m-x Abbrev-mode y veréis qué bien!

Para eliminar las abreviaturas definidas:

M-x kill-all-abbrevs

Si queréis que esto esté siempre disponible cuando arranquéis emacs se pueden meter en el archivo de configuración .emacs.el.

Aunque esta funcionalidad es bastante práctica, en un próximo artículo os comentaré otro método que permite usar abreviaturas de esta forma (*) pero para todas las aplicaciones del sistema, lo cuál mejora bastante lo comentado en este artículo.

 

(*) autoexpandiendo el texto automáticamente al introducir una abreviatura y, por tanto, sin necesidad de usar combinaciones de teclas como en un artículo anterior (usando xclip).

Autotexto en GNU/Linux (I)

Ya os hablé hace tiempo de autohotkey. Es una aplicación para windows que permite automatizar acciones comunes mediante atajos de teclado.

En Linux también existe otra utilidad similar pero de ella os hablaré en otro artículo. Aquí os voy a contar cómo automatizar la introducción de textos de forma automática, con sólo pulsar unas combinaciones de teclas.

La idea es la siguiente:

  1. Existen unos textos, unas líneas, unas frases… que repetimos con cierta asiduidad y queremos no tener que teclarlas de nuevo cada vez.
  2. Creamos un script donde metemos los textos «maestros» que vamos a insertar en nuestros documentos, archivos, etc.
  3. Asignaremos combinaciones de teclas (*) para cada texto distinto de forma que cuando queramos que se inserte dicho texto donde tengamos el cursor en ese momento (puede ser una web, un cliente de correo, un procesador de texto e incluso la shell de comandos, por citar algunos ejemplos).

Para conseguir esto de una forma sencilla usaremos el comando xclip. Este comando permite trabajar con el portapapeles de Linux. Así, si ejecutamos esto:

echo CADENA | xclip -selection clipboard

lo que estamos haciendo es que la cadena CADENA se inserte cuando pulsemos pegar desde el portapapeles («clipboard» en inglés).

Así pues, para insertar textos, lo que haremos es pulsar una combinación de teclas y luego darle a pegar (que también podemos hacer con la combinación Control+V ó Control+Y si estamos en emacs, como bien sabéis).

CAD_00="Ésta es la cadena de ejemplo 0"
CAD_01="Ésta es la cadena de ejemplo 1"
CAD_02="Ésta es la cadena de ejemplo 2"
CAD_03="Ésta es la cadena de ejemplo 3"
CAD_04="Ésta es la cadena de ejemplo 4"
CAD_05="Ésta es la cadena de ejemplo 5"
CAD_06="Ésta es la cadena de ejemplo 6"
CAD_07="Ésta es la cadena de ejemplo 7"
CAD_08="Ésta es la cadena de ejemplo 8"
CAD_09="Ésta es la cadena de ejemplo 9"

CAD_ERROR=".-.Null.-."
case $1 in
 1)
 echo $CAD_01 | xclip -selection clipboard
 ;;
 2)
 echo $CAD_02 | xclip -selection clipboard
 ;;
 3)
 echo $CAD_03 | xclip -selection clipboard
 ;;
 4)
 echo $CAD_04 | xclip -selection clipboard
 ;;
 5)
 echo $CAD_05 | xclip -selection clipboard
 ;;
 6)
 echo $CAD_06 | xclip -selection clipboard
 ;;
 7)
 echo $CAD_07 | xclip -selection clipboard
 ;;
 8)
 echo $CAD_08 | xclip -selection clipboard
 ;;
 9)
 echo $CAD_09 | xclip -selection clipboard
 ;;
 0)
 echo $CAD_00 | xclip -selection clipboard
 ;;
 *) 
 echo $CAD_ERROR | xclip -selection clipboard
 ;;
esac

Ahora simplemente asignamos una combinación de teclas para cada una de las 10 cadenas (podemos poner más cadenas ampliando el case a partir del 10 en adelante) de tal forma que, al pulsarla, se ejecute el script con el argumento X (donde X es un número de 0 a 9 en este caso o de 0 a … donde queráis si lo ampliáis).

Con esto ya tenéis el texto en el portapapeles. Ahora sólo os queda pegar donde queráis con Control+V.

Podéis usar caracteres especiales e incluso el intro (\n) en vuestros textos.

Esta solución es sencilla, práctica y seguro que ayudará a aumentar vuestra productividad. Sin embargo, hay otras posibilidades aún más interesantes que veremos en próximas entregas. ¿Os las vais a perder?

 

(*) Combinaciones de teclas, hotkeys, shorcuts… todas estas expresiones se refieren a lo mismo.

KDE4 Service Menus

¿Qué son los Service Menus? Pues algo muy práctico, son menús contextuales con los que podemos hacer cositas con nuestros archivos con un simple clic de ratón.

Hace tiempo usé Thunar, un explorador de archivos sencillo pero con características muy interesantes, como la posibilidad de crear «Custom Actions», es decir, acciones personalizadas para el menú contextual.

Los Service Menus son esto mismo pero para KDE4. Funciona tanto para Dolphin como para Konqueror.

Ejemplos de Service Menu los podéis ver fácilmente al hacer clic con el botón derecho sobre un archivo comprimido, por ejemplo. Os aparece un submenú llamado Extraer, que tendrá dentro opciones como «Extraer Archivo a…», «Extraer Archivo aquí…», etc.

Lo interesante es que podemos crear nuestros propios Service Menus de tal forma que podemos ampliar el abanico de acciones a ejecutar sobre distintos tipos de archivos e incluso con directorios.

Los Service Menus se crean con un archivo .desktop donde se especifica el nombre, descripción, icono, tipos de archivos sobre los que se ejecutará y qué acciones concretas se aplicarán. Aquí explican muy bien cómo crear uno de ejemplo.

También podéis descargar Service Menus desde Kde-apps.org. Yo he probado éste y es bastante completo. Añade muchas funcionalidades para trabajar de forma rápida, cómoda y sencilla con ficheros de tipo pdf.

Por último, comentar que alguien ha creado también un editor de Service Menus, que os puede facilitar la tarea de añadir nuevas acciones y no tener que trabajar con los archivos .desktop. Podéis descargarlo aquí.