Sep 1 2014

Alternativas a GifCam en Linux

Gabolonte Blasfemus

A pesar de que como todo internauta (término que denota mi avanzada edad), geek (puaj! todavía alguien usa eso?) o millennial (nuevo término de moda para que las masas puedan etiquetar algo sin molestarse en comprenderlo) disfruto ampliamente del incesante flujo de gif animados presente en los últimos años. No soy generalmente de crear propios, salvo de vez en cuando para situaciones específicas. Por eso es que hace tiempo dejé enterradas en el olvido suites para trabajar con dicho formato de imagen, hasta que hace un tiempo me enteré de la existencia de GifCam, y me resultó tan divertido y potencialmente adictivo que lo que realmente me faltaba ahora eran buenas ideas para empezar a crear animaciones divertidas.

gifcam

Pero más allá de eso, y en mi eterna dualidad Windows/Linux donde uso uno u otro de acuerdo a cómo se me acomodan las bolillas en el marote, pretendo tener alternativas a todo lo que aprecie de uno en el otro, así que deseaba desde hace mucho un equivalente de GifCam que pudiera usar en mi actual distro, Linux Mint Qiana. Acá es donde podría leerse un lindo cartelito con el típico here be dragons, porque la realidad es que no existe nada ni remotamente parecido a esta joya de la simpleza hecha freeware portable. Lo más cercano es usar alguna herramienta para capturar en video el sector de la pantalla deseado, para luego usar otra que convierta el video grabado a gif, con resultados variables de acuerdo a lo que se utilice. Nada tan directo e intuitivo como GifCam.

Así andaba frustrado con ese tema, hasta que en uno de esos momentos alpedísticamente productivos (o no) volví a la carga sobre el mismo, topándome con este excelente post de Emezeta, en donde se toma el tiempo de mencionar desde los orígenes del formato hasta todas las herramientas disponibles que existen en cada plataforma para su creación y edición. Y una de las que menciona el groso de Manz es para Linux, y no había oído hablar de ella hasta ese momento: Byzanz.

byzanz

Captura animada de byzanz realizada gracias a sí mismo

Byzanz, con ese extraño nombre, es una aplicación muy potente y versátil que en un principio permite realizar en Linux la función más importante y buscada de GifCam: Grabar directamente desde un área del escritorio a un archivo gif. La diferencia con este, y el pequeño detalle/problema, es que como pasa con muchas herramientas poderosas en el mundo *nix, byzanz se utiliza enteramente desde la línea de comandos. Un ejemplo típico de utilización de byzanz sería el siguiente:

$ byzanz-record --duration=5 --x=550 --y=100 --width=350 --height=200 animacion.gif

Como ven, dentro de los argumentos hay que especificar parámetros como el tiempo de captura y el área a capturar, expresada por las coordenadas que ubican su comienzo y seguido de su ancho y alto en píxeles. No tiene nada de intuitivo, por cada captura tenemos que andar midiendo con una regla virtual la pantalla. Por más buena que sea la herramienta, muere por su complejidad de uso.

Pero la verdadera pena con byzanz es que es una aplicación excelente, y posiblemente la única opción en su clase para el escritorio Linux, por lo que algo tenía que poder hacerse para remediar este problemita de la facilidad de uso. Y algo hay.

TL;DR: A través de un script de bash podemos capturar áreas del escritorio a voluntad para grabarlas directamente a gif, usando byzanz y un par de herramientas más.

En una genial respuesta a una pregunta en Ask Ubuntu vamos a encontrar una serie de scripts que permiten usar byzanz de una forma fácil, sin tener que especificar coordenadas numéricas. Hay dos opciones, un script que permite capturar el área de la ventana en la que se clickea, y otro donde directamente es posible seleccionar con el mouse el espacio a ser grabado. También hay una segunda versión del primero, más interactiva y un poco más gráfica. Claramente la opción más interesante es la de poder simplemente seleccionar el área arrastrando el mouse, por lo que voy a enfocarme en esa función, con un script hecho por mí que básicamente es una simple adaptación de los últimos dos mencionados. Vamos paso a paso con todo lo que hace falta.

1. Lo primero y esencial es saber si podemos disponer sin mayores problemas de byzanz en nuestra distro favorita. Si estamos en un Ubuntu o Linux Mint recientes podemos instalarlo con un simple apt-get.

$ sudo apt-get install byzanz

Si byzanz no está disponible desde los repositorios de nuestra distro, bueno, ya arrancamos mal y la cosa se complica más. Ahí es momento de acciones extremas como bajarlo desde su repositorio GIT e intentar compilarlo satisfaciendo previamente todas sus dependencias, tema álgido en el que no pienso ahondar porque asumo que está fácilmente disponible en toda distro popular moderna, y principalmente porque me da una paja atómica y no tengo ganas de fijarme se haría todo mucho más complejo.

2. Ahora nos toca asegurarnos de que tenemos instaladas todas las dependencias que vamos a necesitar para que el script funcione. Para eso, en Debian, Ubuntu o derivados ingresamos:

$ sudo apt-get install automake libx11-dev gdialog notify-osd

3. Todos los paquetes anteriores tienen un sólo propósito: Son para compilar y poder usar el comando xrectsel, que es el que permite seleccionar un área del escritorio con el mouse y devolver esa información en coordenadas que luego le pasaremos a byzanz. Debemos descargar sus fuentes desde GitHub, descomprimirlos, y ejecutar en la carpeta que contiene los fuentes los siguientes comandos:

$ ./bootstrap
$ ./configure --prefix /usr
$ make
$ sudo make DESTDIR="$directory" install

Luego de esto ya deberíamos tener xrectsel andando, para probarlo sólo basta ejecutarlo desde la línea de comandos y nuestro cursor debería cambiar a una cruz con la que podremos seleccionar un área del escritorio, y dicha área la veremos traducida en coordenadas en la terminal.

4. Ahora viene el momento de armar el script. Simplemente creamos un archivo de texto vacío y copiamos y pegamos lo siguiente:

#!/bin/bash

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Delay before starting
DELAY=10

# Standard screencast folder
FOLDER="$HOME/Imágenes"

# Default recording duration
DEFDUR=10

# Sound notification to let one know when recording is about to start (and ends)
beep() {
paplay /usr/share/sounds/freedesktop/stereo/message-new-instant.oga &
}

# Custom recording duration as set by user
USERDUR=$(gdialog --title "Duration?" --inputbox "Please enter the screencast duration in seconds" 200 100 2>&1)

# Duration and output file
if [ $USERDUR -gt 0 ]; then
D=$USERDUR
else
D=$DEFDUR
fi

# Dependency: xrectsel ( https://github.com/lolilolicon/xrectsel ) from FFcast2 ( https://github.com/lolilolicon/FFcast2 ). Clone the repository and run make to get the executable.
# xrectsel from https://github.com/lolilolicon/FFcast2/blob/master/xrectsel.c
ARGUMENTS=$(xrectsel "--x=%x --y=%y --width=%w --height=%h") || exit -1
# Notify the user of recording time and delay
notify-send "GIFRecorder" "Recording duration set to $D seconds. Recording will start in $DELAY seconds."

#Actual recording
sleep $DELAY
beep
byzanz-record -c --verbose --delay=0 --duration=$D ${ARGUMENTS} "$FOLDER/GIFrecord_$TIME.gif"
beep

# Notify the user of end of recording.
notify-send "GIFRecorder" "Screencast saved to $FOLDER/GIFrecord_$TIME.gif"

Es importante editar el valor de la variable FOLDER a fin de estar seguros que las capturas serán guardadas en la carpeta que queremos y que por sobretodo sea una ruta válida, caso contrario no se guardará nada. En mi caso simplemente puse la ruta de la carpeta de imágenes por defecto del usuario actual para una instalación en lenguaje español. El archivo lo guardamos con el nombre que se nos antoje y extensión .sh, y le damos permiso de ejecución.

Luego de esto sólo falta aplicarle permisos de ejecución al script y la podremos utilizar, armando nuestro propio lanzador para, por ejemplo, tenerlo a mano desde el dock de Unity o en el panel de escritorios como Gnome, Mate o Cinnamon. Al ser ejecutado, el script pregunta por la duración que debe tener la captura, y luego arranca la misma tras una demora (ajustable editando el script) de 10 segundos. Por medio del sistema de notificaciones de la distro y sonidos se anuncian estos eventos, incluido el inicio y fin de la grabación, para saber exactamente cuándo arranca y cuándo termina. Es importante notar que mediante este artilugio no tendremos ninguna indicación visual del área que está siendo grabada, por lo que es mejor que de antemano estén todos los elementos donde deben estar a la hora de hacer la selección de pantalla. Luego simplemente arrancamos con lo que queremos mostrar luego de escuchar la indicación sonora.

A continuación les dejo otra captura realizada con este script y byzanz, donde se puede ver que algunos colores no salen del todo bien en la adaptación a la paleta de 256 que maneja el formato gif, pero aún así el resultado es muy bueno:

captura con byzanz


Ene 30 2014

(Y un día conocí a) Mosh, la evolución móvil de SSH

Gabolonte Blasfemus

moshEs increíble como uno de los antes y después de comenzar a laburar con *nix boxes es que, cuando te querés acordar, respirás la línea de comandos. No me refiero a que te los vas a saber todos de memoria, pero sí a que de repente vas a saber dónde estás más o menos parado y, en caso de que no te acuerdes qué deberías tipear, al menos saber cómo y en dónde buscarlo con confianza. Pero lo que sí se comienza a respirar casi con naturalidad es SSH. SSH para montar una unidad, para ver estadísticas del sistema, para correr scripts; SSH para todo.

No es para menos, es un protocolo muy seguro (si está bien implementado el cliente), podemos redireccionar infinitos puertos para usar túneles seguros y así llegar a cualquier servicio dentro de otra red (como VNC, uno de los primeros usos que todos le damos), y podemos tener tantas terminales abiertas como se nos antoje. Es casi de tereso pedirle más.

Continue reading


Dic 9 2013

Un mouse Bluetooth, múltiples sistemas operativos

Gabolonte Blasfemus
Genius Navigator 905BT Mouse

Un Genius Navigator 905BT rojo, mi primer mouse Bluetooth. Lindo pero dejaba que desear.

Hace ya un tiempo de algo que nunca pensé que haría: Comencé a usar un mouse Bluetooth. Es que quien haya jugado un poco en sus años mozos con esta tecnología que ya lleva tantos tiempo con nosotros sabe bien de sus inestabilidades, que a la larga lo vuelve impráctico para muchas situaciones y usos.

Y fue todo un cambio, porque además pasé de disfrutar de mi segundo Logitech Anywhere Mouse MX a un simple Genius, y la diferencia la sufría en cada movimiento del cursor, que pasó a ser bailarín de medio tiempo. ¿Por qué no fui por otro Logitech igual si después de todo es uno de los mejores (sino el mejor) fabricante de mouses? Impaciencia, paja, tacañería y eficiencia. Impaciencia de esperar hasta pasar por Galería Jardín a comprarlo, paja de ir ese mismo día sólo por eso, tacañería de pagar tanto (nuevamente) por un mouse que, aunque lo vale, lo que no vale es que por segunda vez me haya durado sólo un año luego de lo cual comenzó a fallarle el botón izquierdo; y finalmente eficiencia, porque estaba cansado de tener un puerto USB ocupado constantemente en la notebook, además de los problemas que conlleva a nivel suspensión del equipo los transceptores USB inalámbricos. Sorprendentemente, es la primera vez en muchos años que realmente le doy una utilidad real al adaptador Bluetooth de una PC, y la experiencia, aunque tortuosa al principio, no salió tan mal: Ahora sabía que iba a comenzar a usar mouses Bluetooth, solo que necesitaba algo mejor que un Genius.

El Logitech Anywhere Mouse MX, usé dos seguidos; a los dos les murió el click izquierdo al año de uso. Fuera de eso excepcionales.

El Logitech Anywhere Mouse MX, usé dos seguidos; a los dos les murió el click izquierdo al año de uso. Fuera de eso excepcionales.

No sos vos, es tu sensor óptico

Ahí la cosa se puso complicada, porque me di cuenta que un mouse Bluetooth de marca reconocida no es algo que precisamente abunde, y más si encima buscamos algo de mayor precisión, como por ejemplo tecnología láser. Los de Logitech son pocos y brillan por su ausencia, a tal punto que hasta desde su propia web se hace difícil ubicarlos. Después están los Genius como el que conseguí y, como novedad que me hubiese gustado probar pero también algo difícil de conseguir, un Verbatim que increíblemente es también Láser. Por último está la oferta de Microsoft. Microsoft, a quién veneré por su primer Explorer óptico que tantos años me supo durar y que varios después al querer volver a probar suerte nuevamente me decepcionó con la calidad. Pero al menos ahora Microsoft tiene una oferta interesante de mouses Bluetooth, aunque por momentos rara, como ese modelo de mouse que esencialmente parece una porción de queso. Al final después de un tiempo me decidí a intentar con el Sculpt Touch, que en vez de la ruedita de siempre tiene una tira plástica que oficia de mini-touchpad para pasar los dedos y conseguir un scroll multidireccional. No me terminaba de convencer porque tenía miedo que tuviera una fuerte dependencia de software para sus funciones especiales, algo que me limitaría esencialmente a Windows y me haría las cosas muy difíciles en Linux, pero me quedaba sin opciones y Microsoft (casi) siempre me demostró cierto estándar elevado en lo que a la calidad de su hard respecta. Otra cosa que no pensaba hacer, volver a un mouse de Microsoft. Pero, como hace 15 años ya decíamos, lo mejor de Microsoft es su hardware. Además, el Sculpt Touch no será láser pero en cambio incorpora algo que Microsoft bautizó como BlueTrack Technology y lo vende como más preciso y multi-superficie que la tecnología láser.

Continue reading


Nov 25 2012

Recuperar la hibernación en Ubuntu Linux

Gabolonte Blasfemus

La función de hibernación en los portátiles es una de esas cosas que cuando andan bien son una maravilla, pero cuando las llegamos a dar por sentadas nos encontramos con que tal versión del SO, que casualmente es la que usamos, o determinado cambio que hicimos, la rompió. Puede ser que al accionarla no funcione en absoluto, y lo notaremos cuando al encender nuevamente la máquina el sistema arranque desde cero sin retener en absoluto nuestra pasada sesión abierta; también puede ser que no aparezca la opción de hibernar en lo absoluto.

Pero para empezar, nunca está de más para quien aún se confunda marcar la diferencia entre las funciones de hibernar y suspender en una computadora.

Cuando un equipo entra en suspensión, este continúa encendido, solo que en su mínima expresión: Tanto el disco como la mayoría de los circuitos se encuentran apagados, o dicho de otra forma, en un estado de standby de mínimo consumo. Bajo esta modalidad toda la info de nuestra sesión abierta se retiene en la memoria RAM de la misma forma que si la máquina estuviese en funcionamiento normal. Este es el comportamiento por defecto de toda portátil cuando se le cierra la tapa (y más si no está conectada a su cargador) y es tremendamente útil por la velocidad con la que podemos despertarla de su letargo: Basta volver a abrirla y tocar cualquier tecla para que vuelva y todo estará ahí. Pero su gran desventaja es que, aunque mínimo, sigue existiendo un consumo de batería que a la larga la drenará completamente.

Continue reading


Oct 29 2012

Cómo ejecutar un proceso al inicio o como servicio en Ubuntu/Linux

Gabolonte Blasfemus

Hace algún tiempo en el post Reconexión automática a VPN en Ubuntu Linux un lector llamado Alejo me consultaba sobre la posibilidad de hacer que el script que se trataba corriese como un demonio o servicio, de manera tal de no tener que preocuparse de ejecutarlo manualmente cada vez. Vamos entonces a ver cuáles son nuestras opciones.

Opción 1: Ejecutar un proceso como demonio o servicio en Linux

Esto es lo que Alejo pedía exactamente, y posiblemente lo más difícil de conseguir. El equivalente de los servicios en Windows, conocidos como demonios en el mundo *nix,  se maneja tradicionalmente a través del proceso Init, heredado del viejo Unix. Pero este sistema con tantos años detrás tenía sus limitaciones, y entonces varias opciones nuevas y más funcionales surgieron. Una de ellas es Upstart, creada originalmente para Ubuntu, pero hoy en día presente en varias distros, ya sea como el reemplazo por defecto del viejo Init o como un opcional.

Continue reading