Archive for the 'Nueva versión' Category

Tablet con systemd

miércoles, septiembre 24th, 2014

Hace un par de días actualicé el sistema Debian que le había instalado a mi tablet, y me encontré con la desagradable sorpresa de que mi gestor de ventanas y mi driver táctil dejaron de funcionar. El motivo es que, recientemente, Debian se ha cambiado a systemd, por lo que tuve que hacer algunos cambios para adaptarlo.

El primer y más fundamental cambio fue reemplazar los scripts en bash por ficheros de configuración de systemd. Este es el fichero para lanzar el driver táctil:

[Unit]
Description=GSLx680 user-space driver launcher for systemd

[Service]
Type=simple
ExecStart=/bin/gslx680 -new_scroll /dev/i2c-1 /etc/gslx680/firmware.cfg
ExecStop=killall gslx680

[Install]
WantedBy=multi-user.target

Este fichero lanza durante el arranque el driver, y durante el apagado del sistema lo mata.

El fichero para lanzar las X es similar:

[Unit]
Description=Launch X11

[Service]
Type=simple
User=debian
ExecStart=/usr/bin/startx
ExecStop=killall xinit

[Install]
WantedBy=multi-user.target

El único cambio es que especificamos con qué usuario queremos lanzar el comando: en este caso el usuario es debian.

Otro cambio que tuve que hacer fue eliminar, en el fichero .xinitrc, el que se lance ck-launch-session, el gestor de sesiones de ConsoleKit. Este ya no es necesario porque de ello se encarga systemd.

Por último, para apagar el sistema el gestor de ventanas ya no ejecuta halt, sino systemctl poweroff, con lo que ya no es necesario que haya un comando para ello con el bit suid activo.

Un último detalle: tuve que desinstalar el demonio pulseaudio para conseguir que reprodujese vídeos. Todavía no se el motivo de que con él lanzado no funcione (el audio queda bloqueado y tanto mplayer como vlc se quedan congelados esperando a que se libere).

Cagándola con un bug grave

domingo, agosto 10th, 2014

A veces a uno se le escapan pequeños bug que, en principio, no tienen la menor importancia, hasta que resulta que sí la tienen. Eso me ha ocurrido con la nueva versión en desarrollo de DevedeNG.

El bug ni siquiera era tal, sino más bien una combinación de valores por defecto poco adecuados, mensajes poco claros, y código que hacía demasiadas cosas. Básicamente, DevedeNG necesita una carpeta vacía donde crear el proyecto, así que le pide al usuario que le indique una. Si dicha carpeta ya existe le indica que va a proceder a borrarla, dejándole escoger si quiere continuar o cancelar antes de hacerlo.

Hasta aquí todo parece normal. El problema es que la carpeta por defecto era la carpeta personal del usuario, y el mensaje de aviso decía simplemente: “La carpeta seleccionada ya existe. Si continúa, será borrada. ¿Continuar?”. Este mensaje no es lo suficientemente claro porque en ninguna parte aparece qué carpeta se va a borrar. Ante esto, un usuario que se limite a pulsar Siguiente->Siguiente->Siguiente se encontrará con su carpeta personal borrada.

El código ya está corregido, para lo que he aplicado las siguientes lecciones aprendidas:

  • Debe evitarse utilizar la carpeta de usuario ($HOME) como destino por defecto cuando haya que realizar alguna acción que borre una carpeta. En el caso de DevedeNG, el primer cambio fue que la carpeta destino se componga de la carpeta escogida por el usuario más el nombre del proyecto, por lo que, por defecto, nunca será la carpeta de usuario sola la escogida para ser borrada.
  • Siempre que se le pida al usuario confirmación para borrar una carpeta debe mostrarse claramente en el texto qué carpeta se va a borrar. Nunca se debe dar por supuesto que el usuario lo sabe.
  • En la medida de lo posible no debe borrarse la carpeta al completo, sino buscar qué ficheros y directorios son los que pueden interferir con el proceso que se quiere realizar, borrando exclusivamente esos y ninguno más.

Afortunadamente, el usuario que se tropezó con este problema tenía copia de seguridad, por lo que todo quedó en un susto.

Novedades varias

viernes, diciembre 6th, 2013

Esta semana ha sido bastante movida. En primer lugar hice una fuerte refactorización de Autovala. Con la nueva estructura el código es mucho más elegante y, sobre todo, mucho más mantenible. De hecho, gracias a los cambios he podido añadir en poco tiempo nuevas características, como soportar espacios de nombres anidados (necesario para utilizar la biblioteca de Plank), autodetectar en algunos casos GIO, mejorar el parseado de los comandos propios (ahora permite una gran libertad a la hora de meter espacios), y algunas cosas más.

Otra novedad ha sido la migración a Autovala de mi fork de Submarine, además de corregir un pequeño bug en el buscador de SubDB cuando el fichero mide menos de 128KBytes.

Por último hice un retoque en el driver GSLx680 para pantallas táctiles. Ahora permite hacer scroll con un único dedo, lo que resulta más cómodo. Para poder hacer Drag&Drop basta con mantener el dedo quieto durante un segundo, y luego ya se puede mover.

Multilenguas y mas

domingo, noviembre 10th, 2013

Acabo de subir nuevas versiones de TabletPlayer, TabletLauncher y TabletWM. Se trata de pequeños retoques para que funcionen bien con otras lenguas que no sean inglés, y para mejorar la usabilidad.

En TabletPlayer, un reproductor de películas basado en MPlayer, lo que hice fue cambiar el tamaño de los botones de la interfaz de reproducción, poniéndolos de 64×64 pixels para que sean más cómodos de pulsar en una pantalla táctil. También cambié la interfaz de selección de fichero por una más amigable en pantallas táctiles, pues el filechooserdialog tiene los elementos muy pequeños y además exige hacer doble click, que en una pantalla táctil no es nada cómodo. Ahora se parece mucho más a una aplicación de tablet.

En el caso de TabletWM tuve que hacer un ajuste para que no fallase el gráfico de la batería si la lengua utiliza ‘,’ en lugar de ‘.’ como separador de decimales. Además, añadí unas pequeñas notas que explican como cambiar la lengua y la zona horaria, de manera que el formato de fecha y la hora se muestren correctamente.

Respecto a TabletLauncher, básicamente traduje las cadenas al castellano.

Como de costumbre, los cambios están disponibles en mi página web.

Compilacion condicional

domingo, octubre 27th, 2013

Acabo de subir una nueva versión de Autovala y otra de Cronopete.

En el caso de Autovala he añadido una opción importante, que es la compilación condicional: ahora es posible pasar defines al código de Vala, mediante -Ddefine=ON, para compile o no distintas partes del código. Además, también es posible hacer condicionales otras partes del código de Autovala, de manera que se pueda escoger que un programa se compile con soporte de GTK2 o GTK3, con o sin una biblioteca, etc.

Este soporte es bastante flexible, pero aún no puede hacer condicional la compilación de un programa completo. Eso lo dejo para otra versión.

En cuanto a Cronopete, básicamente he hecho algunas correcciones, tales como evitar un par de cuelgues al formatear un disco, o que monte automáticamente la unidad de backup en el arranque. Además, ahora el sistema de compilación utiliza Autovala, gracias precisamente al soporte de compilación condicional.

Como de costumbre, se puede bajar de mi página web.

Gestion de ventanas

jueves, septiembre 5th, 2013

El siguiente paso lógico en el desarrollo de mi tablet era, obviamente, un gestor de ventanas adecuado. Y es que, aunque hay cienes y cienes de ellos, ninguno se adapta a lo que yo busco, que es:

  • debe maximizar las ventanas por defecto, para que aprovechen siempre toda la pantalla
  • sin decoraciones, para aprovechar al máximo la pantalla
  • que se pueda manejar tanto desde teclado como desde una pantalla táctil

Al final me lié la manta a la cabeza y escribí mi propio gestor: TabletWM. Este gestor está basado en XCB, la biblioteca ligera para XWindows, y sigue, en lo que puede, los estándares ICCCM y EWMH.

Entre las características importantes está la capacidad de distinguir entre las ventanas de una misma aplicación y las de otras, permitiendo recorrer, por ejemplo, sólo las ventanas de GIMP, aunque haya otras aplicaciones lanzadas. La idea es simplificar el uso cuando se trabaja en una tablet.

Ahora sólo me falta crear un lanzador/gestor de aplicaciones, y ya tendré mi sistema tablet listo.

Transmission para WebTV y Submarine

domingo, julio 14th, 2013

Acabo de subir dos actualizaciones.

Por una parte he actualizado TransmissionBT para WebTV a la versión 5.4. Los cambios son dos: actualizado bFTPd a la versión 4.0, y una nueva versión de Submarine, el buscador de subtítulos.

Y precisamente Submarine es la otra actualización que hice: básicamente añadí una comprobación extra al bajar subtítulos, de manera que si la extensión no es .sub o .srt, no se baje ese fichero. Esto lo hice porque en una ocasión, por alguna extraña razón, encontraba un fichero de subtítulos, pero al bajarlo el servidor daba un error y bajaba un fichero HTML, pero el programa en sí lo daba por válido. Debido a eso, no probaba con otros servidores. Ahora, si al bajar un fichero el servidor hace algo raro y envía algo que no sean subtítulos, Submarine lo descartará y probará con otra fuente.

Nueva version de cronopete

domingo, junio 16th, 2013

Acabo de subir la versión 3.14 de cronopete, y la semana pasada subí la 3.13. Los cambios son pequeños, aunque importantes:

  • corregido un bug en el refresco de la pantalla al restaurar archivos: por alguna razón, con GTK 3.8, la interfaz no refrescaba la imagen correctamente al cambiar de carpeta, quedando parte de la pantalla en blanco hasta que el cursor pasaba por encima. Ahora debería funcionar correctamente.
  • corregido bug cuando el disco duro está lleno. Se trata de un bug curioso y sutil: si el disco se llenaba mientras se hacía un backup, se borraban backups antiguos para hacer sitio, tal y como cabe esperar. Pero si el disco se queda lleno al 100% justo al acabar un backup, cronopete era incapaz de comenzar un nuevo backup la siguiente vez, porque fallaba la creación de la carpeta en donde se almacenaría el backup. Ahora intenta liberar espacio en ese caso también.
  • corregido bug cuando el disco no tiene tabla de particiones: algunos discos externos vienen formateados sin una tabla de particiones (el sistema de ficheros ocupa todo el disco directamente, en lugar de haber una única partición con el sistema de ficheros dentro). Al pedir a cronopete que formatee esos discos, fallaba. Ahora debería funcionar ya.

Como de costumbre, se puede acceder en la sección de programas.

Autovala y Gedit (y Gnome 3.8)

domingo, abril 28th, 2013

Acabo de subir la versión 0.16 de Autovala. La gran novedad es la inclusión de un plugin para Gedit, que permite trabajar fácilmente con proyectos en Autovala.

Esta versión se puede considerar definitiva, así que a partir de ahora, en principio, y salvo que me envíen alguna idea loca y maravillosa que añadir, Autovala pasa a modo “mantenimiento”, subiendo sólo parches.

También actualicé mis extensiones de Gnome Shell para que funcionen con la versión 3.8, con lo que me considero libre para nuevos proyectos.

Hito en Autovala

domingo, abril 7th, 2013

Acabo de subir al repositorio la versión 0.10.0 de Autovala  y creo que supone un hito importante, porque con ella he cubierto todas las ideas iniciales que tenía. La principal, y más difícil, es la de incluir en un mismo proyecto un ejecutable y una biblioteca, y que ese ejecutable se enlace con dicha biblioteca, todo de manera automática y sencilla.

Ahora me queda descubrir como trabaja intltool-extract e intltool-merge con las entradas .desktop, para permitir la traducción sencilla en estos casos, y ver como mezclar ficheros .c con .vala. También la idea de integrarlo en Gedit, pero eso con mucha más calma.


Utilizamos cookies para garantizar que tenga la mejor experiencia en nuestro sitio web.