Devede ha vuelto

¡Y con energía! La primera gran novedad es algo que llevaba tiempo queriendo meter: soporte para FFMpeg. La razón es que no paran de aparecer problemas con Mencoder: que si el codificador AC3 está roto, que si la versión de desarrollo no tira bien, etc. Por eso, ahora, se puede escoger entre ambos, para utilizar el que mejor se adapte.

Otra opción nueva, que me han pedido mucho, es poder escoger que el ordenador se apague cuando termine de generar un disco: de esa manera se puede dejar por la noche trabajando sin que el ordenador se quede luego consumiendo inútilmente tras acabar. Por último, he corregido un par de bugs menores.

Como de costumbre, está disponible en la página de Devede.

Cronopete 2.1.0: pensando en todos

Acabo de lanzar la versión 2.1.0 de Cronopete, que añade una pequeña modificación en el efecto zoom para intentar que vaya mejor en ordenadores lentos.

Para entender el problema, lo primero es explicar como realicé el efecto de zoom. Al principio quería usar clutter, porque se supone que permite hacer cosas como que una ventana se mueva en tres dimensiones y demás, que es justo lo que pretendía. Por desgracia, para poder meter dentro de un actor de clutter un elemento de GTK (en este caso el navegador de ficheros), tenía que trabajar con GTK3, porque en GTK2 no está soportado.

Probé a usar ventanas auténticas, pero el cambio de tamaño para hacer el efecto era lentísimo, por lo que no resultaba. Después de muchas pruebas, me lié la manta a la cabeza e intenté hacerlo de una forma radicalmente diferente. La solución que encontré era tan «simple» como usar la función gdk_pixbuf_get_from_drawable para hacer una captura de la ventana, y usar el pixmap resultante para hacer el efecto de scroll mediante Cairo. Al ser una imagen estática en lugar de un conjunto de widgets, el redimensionado debería ser rápido, incluso haciéndolo por software.

Pero las cosas, por desgracia, no son tan sencillas en la práctica. Cada vez que hacía una captura, me salía un pixmap negro, o con la ventana tal y como estaba antes de cualquier cambio que quisiese reflejar. El motivo es que el redibujado de una ventana en GTK es asíncrono: yo puedo dar la orden de mostrar algo, de cambiar un texto, o de añadir más elementos a una lista, pero hasta que no retorne al bucle principal de GTK, no se llevará a cabo esa acción.

La primera solución que encontré fue aprovechar el temporizador que uso para las animaciones para sacar la captura: así, tras dar la orden de cambiar de carpeta, por ejemplo, marcaba un flag que indicaba que había que hacer una nueva captura, activaba el temporizador y salía del callback, volviendo al bucle principal. En ese momento GTK repintaba toda la ventana, que quedaba lista para ser capturada en cuanto venciese el temporizador.

Esto funcionaba en mi ordenador sin problemas, así que publiqué la versión 2.0.0; pero más tarde, al tener la oportunidad de probarlo en un equipo lento, me encontré con que no iba bien, pues capturaba antes de tiempo. Era obvio que GTK le daba más prioridad a los temporizadores que al redibujado de ventanas, por lo que, en ese equipo, no le daba tiempo a repintar todo.

Pregunté en los foros si GTK emitía alguna señal cuando terminaba de redibujar una ventana, pero nadie respondió, así que decidí probar yo mismo todas las señales que emite un widget, a ver cual me podía ser útil. Probé con damage-event, composited-changed, expose-event, realize, screen-changed y show, antes de encontrar la que parecía la solución a mis problemas: map-event. Pero aunque en el código de ejemplo que hice funcionaba, cuando la probé en el código de cronópete también falló.

Hasta que, al final, revisando otras funciones, encontré la solución en las funciones idle. Estas se ejecutan cuando no queda ninguna tarea por hacer en el bucle principal, así que la solución fue tan sencilla como añadir una función idle que haga la captura: ésta no será llamada hasta que la cola esté vacía, lo que será cuando se hayan procesado todos los eventos de repintado de widgets dentro de la ventana que queremos capturar, o sea, cuando ésta ya esté completamente lista.

Cronopete 2.0, now in glorious 3D!

Ya ha llegado, por fin, la versión 2.0.0 de Cronopete. Sólo tiene una novedad… ¡pero qué novedad! Y es que por fin incorpora una interfaz para restaurar archivos. Hela aquí:

Interfaz de restauracion de archivos de cronopete

Tal y como cabe esperar, las ventanas se mueven adelante y atrás, aunque el efecto no está tan bien conseguido como en el Mac. La razón es que tuve que limitarme a usar Cairo en lugar de Clutter, porque esta última biblioteca sólo permite embeber un widget si se utiliza junto con Gtk3, y cronopete, de momento, utiliza GTK2. Pese a todo, el resultado es bastante resultón (valga la redendoncia).

Con ésto ya se puede considerar a cronopete un programa completo. Para la próxima versión tengo la intención de portarlo a GTK3 (aunque conservando también la versión GTK2). Otra característica que me gustaría meterle es la capacidad de usar un disco remoto para hacer los backups. Pero eso será más adelante.

Y antes de que se me olvide, unas lineas de agradecimiento a Miguel Bouzada por su paciencia como betatester y sus valiosísimas sugerencias.

Barras clásicas

No me convencen las nuevas barras de desplazamiento de Ubuntu. Sin duda son geniales cuando tienes una pantalla pequeña, y de hecho pienso conservarlas en mi portátil, pero en un monitor de 24 pulgadas no tienen tanto sentido, y la verdad es que a veces es molesto no acertar para hacer scroll.

Afortunadamente, encontré en el blog de Andrés Gomez una entrada explicando como volver a las barras clásicas, truco que voy a publicar levemente modificado porque tal y como aparece ahí no funciona.

Abrimos un terminal y tecleamos (pulsando Enter después de cada línea, y teniendo en cuenta que nos pedirá la clave):

sudo su
echo "export LIBOVERLAY_SCROLLBAR=0" > /etc/X11/Xsession.d/80overlayscrollbars
exit

Reiniciamos, y listo, ya tenemos nuestras barras clásicas.

Aunque, como comenta Germán Poo en los comentarios, otra opción consiste en desinstalar el paquete overlay-scrollbar.

Cronopete 1.3.0

Acabo de lanzar una revisión de urgencia de Cronopete; se trata de la versión 1.3.0. Esta corrige un fallo que quedó bastante escondido: si intentamos usar un disco externo formateado en NTFS, Cronopete falla al detectarlo y se cierra. Esta nueva versión funciona correctamente, y muestra el cuadro de diálogo que permite formatear la unidad en ReiserFS o Ext4.

Como de costumbre, está disponible en la sección de programas de mi página web.

A disfrutarla.

Ubuntu 11.10 + Gnome 3 + Compiz = problemas

Así es: ayer actualicé a la última Ubuntu y los problemas empezaron casi inmediatamente. Después de cambiar a Gnome Clásico (como explicaba en la entrada anterior), lo primero que hice fue cambiar metacity por compiz, para disfrutar de animaciones y demás. Tras varias pruebas, la manera más directa que encontré fue lanzarlo «a mano», creando una entrada en los programas a lanzar en el inicio. Así, fui a Aplicaciones -> Otras -> Aplicaciones al inicio, escogí Añadir, y creé esta entrada:

El parámetro –replace (ojo, con dos guiones al principio) es el que hace que compiz mate a metacity y se ponga en su lugar.

Con esto parecía todo listo, pero surgió el problema de verdad: como ya comenté, se ha cambiado levemente la forma en que se añaden, modifican y eliminan los elementos a los paneles: antes bastaba con pulsar el botón derecho del ratón, pero ahora hay que pulsar ALT+Botón derecho. Por desgracia, Compiz se adueña por defecto de esa combinación de teclas, por lo que, con él activo, no podremos modificar los paneles.

Para solucionarlo hay que instalar el paquete compizconfig-settings-manager (que aparecerá en Aplicaciones -> Otras), ir a la opción Mover ventana, y cambiar la combinación Iniciar movimiento de ventana. Yo la puse a Super+Botón izquierdo.

La razón de que interfiera es que se utiliza la misma combinación de tecla para mover una ventana pulsando en cualquier parte de ella, y para mostrar el menú contextual de dicha ventana. Por eso, a pesar de que en la configuración aparece el botón izquierdo, afecta también al uso del botón derecho.

Cronopete 1.2.0

Acabo de lanzar la versión 1.2.0 de Cronopete. Los cambios son pequeñitos; de hecho, sólo hay uno importante: ahora, en los backups, las carpetas conservan su fecha de modificación (los archivos ya lo conservaban).

No es un cambio radical, ni una supercorrección, pero sí será interesante de cara a la versión 2.0.0, que incorporará la interfaz de recuperación de archivos. En ese caso, será más cómodo para el usuario si las carpetas también conservan las fechas correctas.

Como de costumbre, está disponible en la página de Cronopete.

Cronopete 1.1

Acabo de lanzar una nueva versión de Cronopete con algunos cambios menores. El principal es que ahora permite cambiar cada cuanto se hace una copia. Por defecto sigue en una hora (que es lo recomendable), pero se puede subir hasta doce horas. Otros cambios son, por ejemplo, que ahora el menú aparece debajo de la barra del panel de Gnome (como debe ser), y no encima; además, corrige una pequeña deriva de cinco minutos en el instante en que debería hacer la copia (por su culpa, en la versión 1.0 las copias se hacían cada 65 minutos).

Como de costumbre, se puede bajar en la página de cronopete.

El fracaso de Gnome-Shell y Unity (y como solucionarlo)

Llevo un mes aproximadamente probando Ubuntu 11.10, y la verdad es que no me gustan nada las interfaces que nos esperan en ella. Me refiero, como ya habréis supuesto, a Gnome-Shell y a Unity.

No niego que son muy bonitas y novedosas (especialmente Gnome-Shell). Tampoco niego el ingente trabajo que hay detrás. El problema, bajo mi punto de vista, es que les falta ergonomía.

Veamos a qué me refiero. Si en Gnome-Classic (el Gnome de toda la vida) quiero lanzar una aplicación que no tenga en un lanzador rápido, tengo que hacer estos movimientos con el ratón (parto de la mitad de la pantalla porque intento mostrar trayectorias promedio; la línea roja es el recorrido del ratón, y los puntos gordos representan cada click):

Rápido y directo.

Veamos ahora lo que hay que hacer en Gnome-Shell:

La cosa ya no es tan sencilla: no sólo hay que ir adelante y atrás por la pantalla, sino que hay que buscar de izquierda a derecha y de arriba a abajo entre los iconos, lo que es más lento que buscar únicamente de arriba a abajo en el menú de Gnome-Classic.

Finalmente, Unity:

Aquí se añade complejidad a mayores, porque demasiado a menudo hay que expandir los resultados (Ver X resultados más).

Los defensores de estos entornos probablemente dirán que es posible teclear parte del nombre de la aplicación, y ésta quedará seleccionada, pero eso no soluciona nada, porque obliga a levantar la mano del ratón, teclear, y volver a agarrarlo: pérdida de tiempo e incomodidad.

Además, en Gnome Shell tampoco disponemos de iconos en el escritorio, lo que también lía de mala manera a los que ya estamos acostumbrados a trabajar con un escritorio clásico. A fin de cuentas, el problema real es el cambio brutal en la forma de trabajar: el hombre es un animal de costumbres, por lo que si le cambias todo su entorno, no se siente cómodo.

Afortunadamente hay formas de resolverlo…

Cambiar a Gnome-Classic

Gnome3 incluye un port del escritorio clásico a GTK3, por lo que la solución más sencilla para mantener nuestro escritorio de toda la vida consiste en utilizar éste. Además, nos permite seguir utilizando Compiz.

Para cambiar a este entorno, primero tenemos que instalar los paquetes gnome-session-fallback y gnome-tweak-tool. Una vez hecho, salimos de la sesión y volvemos a entrar, escogiendo Gnome Classic como entorno:

Entramos en nuestra sesión y veremos el escritorio de toda la vida, pero sin iconos. Para resolverlo, arrancamos gnome-tweak-tool y marcamos las siguientes opciones:

La primera opción activa el escritorio con iconos, la segunda muestra el icono Equipo, la tercera la carpeta personal, y la quinta la papelera. A mayores se puede marcar la sexta, si te gusta que aparezcan las unidades montadas en el escritorio. Y con esto ya tenemos nuestro Gnome de toda la vida, con la única diferencia de que para activar el menú de las barras superiores e inferiores (el que nos permite añadir nuevos elementos, y moverlos) hay que mantener pulsada la tecla ALT a la vez (bueno, y que los elementos de éstas no se colocan donde uno los deje, sino alineados a la izquierda, centro o derecha, lo que es mucho más cómodo).

Adaptar Gnome Shell

La segunda opción consiste en adaptar Gnome Shell al estilo que queremos. Para ello, empezamos por instalar gnome-tweak-tool, y la usamos para activar las mismas opciones que en el caso anterior. Con ello ya tendremos de nuevo iconos en el escritorio.

Ahora llega la segunda parte, que consiste en instalar la extensión que incorpora un menú de aplicaciones a Gnome Shell. Por desgracia, a la hora de escribir este artículo todavía no conseguí hacerla funcionar, así que se agradece cualquier ayuda. Probablemente cuando Gnome Shell 3.2 sea ofical, sea más fácil (actualmente Ubuntu 11.10 incluye Gnome Shell 3.1, que es una versión en desarrollo).

Por supuesto, hay más extensiones que harán que Gnome Shell se parezca aún más a Gnome Clásico. Como siempre, todo es cuestión de ir probando.

Adaptar Unity

Para hacer lo mismo con Unity, basta con seguir las (algo liosas) instrucciones para instalar un menú de aplicaciones en Unity. Hasta ahí llego, porque la verdad es que me gusta tan poco que lo he usado una semana escasa.