Archivo de la categoría: Trucos

Trucos generales para distribuciones

Teclados Logitech

Para trabajar con más comodidad con la tablet decidí utilizar un teclado con touchpad integrado. En casa tenía un modelo Logitech, así que lo conecté; sin embargo, no funcionó. Lo curioso es que desde Android sí funcionaba, así como en mi PC, así que decidí hacer algunas pruebas extra. Al final descubrí que para que estos dispositivos, que utilizan el Logitech Unifying Receiver, funcionen, es necesario activar no sólo el soporte HID completo en el núcleo, sino también las opciones siguientes opciones:

    Device Drivers --->
        HID devices=Y --->
            Generic HID support=Y
                /dev/hidraw raw HID device support=Y
            USB Human Interface Device (full HID) support=Y
            /dev/hiddev raw HID device support=Y

Viajando al espacio

Me he enganchado al juego Kerbal Space Program. Para los que no lo conozcan, es un simulador espacial de corte humorístico, aunque muy realista. El objetivo es construir un cohete para llevar a los Kerbals, (los habitantes del planeta Kerbal) hasta su luna Mun. Se pueden poner en órbita satélites, y muchas cosas más.

Lo más interesante es que hay versión para Linux, y además, comprado en la propia página cuesta sólo 23 dolares (unos 16 euros, al cambio). Aún está en desarrollo, pero se puede comprar la versión actual, que es muy completa, y con ese pago ya se tiene acceso a las distintas actualizaciones, hasta que el juego esté completo.

Solo tiene un defectillo: la falta de un instalador que permita disponer de un icono en los menús. Por eso he escrito yo uno, que se puede bajar aquí: instalador de Kerbal Space Program para Linux. Basta con descomprimirlo en la misma carpeta que el juego y ejecutar el fichero ksp_installer.

Un par de detalles, por si acaso:

  • No utilizar el ejecutable de 64 bits, porque falla más que una escopeta de feria (es un problema conocido). El ejecutable de 32 bits funciona perfectamente en Linux de 64 bits.
  • Si se quiere lanzar desde una línea de comandos, debe utilizarse el comando LC_ALL=C ./KSP.x86 para que el juego funcione bien (mi instalador ya lo tiene en cuenta)
  • La última versión de pago, la 0.20.2, no funciona con el driver libre para tarjetas AMD/ATI; es necesario utilizar el privativo, o bajarse la versión 0.19, que también está disponible (espero que lo corrijan pronto)

 

Hackeando cuelgatazas

Mi cocina es algo pequeña, así que cualquier cosa que ayude a tener más espacio siempre es bienvenida. Una idea que tuve hace tiempo fue aprovechar que los muebles tienen una moldura por debajo, que deja un hueco de unos tres centímetros, para añadir unos cuelgatazas disimulados en la base, y así tenerlas más a mano y aprovechar el hueco liberado para otras cosas.

Por desgracia, no encontré en ninguna parte un modelo que me convenciese. El más parecido fue éste de CASA, diseñado para enganchar en la balda de un estante. Pese a todo, es más un cuelgapocillos, porque el metal de la zona curva, que es la que sostiene el peso, se dobla demasiado si pongo una taza de desayuno (pulsar en las imágenes para verlas a tamaño completo):

IMG_20130616_192040

Sin embargo, si sujetaba el colgador de manera adecuada todavía podría utilizarlo, así que me puse manos a la obra. Lo primero fue buscar un trozo de tablero (en mi caso, de 15×75 cm) donde fijar los colgadores, y marcar en él los puntos en donde se cruzan las barras que lo forman:

IMG_20130616_164828 IMG_20130616_164847 IMG_20130616_165024

El siguiente paso fue fijar cada uno de los tres cuelgatazas al tablero mediante unas alcayatas, montadas de tal manera que impidan que se mueva en cualquier sentido:

IMG_20130616_165846 IMG_20130616_165904

A continuación había que fijarlo al mueble, debajo de la rejilla de los platos. Para ello puse dos pequeñas escuadras en uno de los laterales; en el otro, como hay un mueble «normal», decidí atornillarlo directamente a su base:

IMG_20130616_170102

Una vez colocado el tablero sobre las escuadras y atornillado a éstas, hay que recortar lo que sobresalga de los tornillos, obviamente:

IMG_20130616_171132

¡Y listo! Ya puedo colgar hasta 18 tazas cómodamente.

IMG_20130616_192103

Para jugar bien

En la entrada anterior explicaba el problema que supone jugar cuando se utiliza un gestor de ventanas por composición. Este problema se describe con más detalle en los artículos The Cost Of Running CompizMutter Can Cause A Gaming/OpenGL Performance Hit Too. El principal motivo es que los programas no pintan directamente sobre la pantalla, sino sobre un buffer oculto, y es el gestor de ventanas el que, de manera periódica, copia dicho buffer a la zona visible.

La solución que proponía era aumentar la prioridad del gestor de ventanas y del servidor X, pero dado que es una operación algo liosa para alguien que no tenga unos mínimos conocimientos, decidí hacer un pequeño programa que lo automatizase. Ese programa se llama GAMEd. La esencia es muy sencilla: tenemos una lista de ejecutables almacenada en /etc/gamed.conf. Cada vez que se lanza el gestor de ventanas y el entorno de escritorio, se llama mediante DBus al demonio GAMEd (y si no estaba lanzado, el propio DBus lo lanza como root). Este demonio recorre la lista de procesos actuales, y cambia su prioridad a cada uno que coincida con alguno de la lista. De esta manera es posible asignar prioridades altas desde el espacio de usuario sin abrir un agujero de seguridad, porque sólo se cambiarán aquellos programas autorizados.

El sistema está diseñado para ser completamente transparente: por defecto asigna prioridad -15, pero se puede utilizar el comando renice_gamed para escoger cualquier otra (podría llegarse hasta -20, pero en el código de un programa similar, AutoNICEd, recomienda no hacerlo, así que GAMEd simplemente redondea a -15 si se pone una prioridad mayor). Dicha prioridad se almacena y se utiliza todas las veces que se llame al demonio, hasta que el usuario la vuelva a cambiar si quiere.

Por otro lado se añade un pequeño script en el arranque del escritorio, que llama al demonio. Esto hace que cada vez que se arranque el ordenador y se entre en la sesión, se ajustará de nuevo automáticamente la prioridad de las X y del gestor de ventanas.

Yo lo he probado en Gala y en Compiz y se nota la diferencia, pero no he podido probarlo en Gnome-Shell por ciertos problemas de compatibilidad de paquetes entre éste y Elementary OS.

Así pues, si jugáis regularmente en vuestro equipo Linux y notáis pérdida de rendimiento y de FPS en vuestros juegos, probad a instalar GAMEd y contadme qué tal os ha ido.

Juego elemental

Llevo una temporadita probando Elementary OS, y tengo que decir que me encanta. Es un concepto de escritorio y sistema operativo que, salvo un par de detalles, encaja como un guante en lo que busco. Tanto es así que estoy asegurándome de que Cronopete esté perfectamente integrado en él.

Por otro lado, hace poco descubrí Limbo, un juego con una ambientación sencillamente impresionante.

Sin embargo, me encontré con que la mezcla de ambos no funcionaba muy bien: había «saltos» entre fotogramas, se conseguían muy pocos FPS y había un retardo brutal (casi un segundo) entre la pulsación de una tecla y que el personaje ejecutase la acción correspondiente. Al principio lo achaqué a Wine (es un juego para windows), pero buscando información encontré que al resto de gente le funcionaba perfectamente.

Lo primero que hice fue cambiar del driver privativo de AMD/ATI (FGLRX) al libre (Radeon), y los saltos desaparecieron, pero los bajos FPS y el retardo seguían allí.

Recordé que había una crítica general contra los gestores de ventanas por composición como Compiz, Mutter y KWin, porque tienen que renderizar el contenido de cada ventana cada vez que la aplicación lo cambia. Ante esto, probé a arrancar una sesión de gnome-fallback-session, y allí funcionaba perfectamente, lo que confirmó que el problema estaba en Gala (el gestor de ventanas de Elementary).

Sin embargo, pensando, llegué a la conclusión de que perfectamente podía deberse al retardo en la conmutación entre tareas, así que decidí probar a asignarle máxima prioridad (-19) tanto al servidor X como a Gala. Para ello usé el comando renice (como root, porque si no, no permite asignar valores negativos, correspondientes a la máxima prioridad). Con eso el problema se resolvió, y el juego funcionó con una suavidad total, igual que si no estuviese utilizando un gestor de ventanas por composición.

Personalizando Gnome3

Hace tiempo escribí un artículo criticando el modelo de escritorio de Gnome3 y de Unity, en el que, además, explicaba como configurar un Gnome clásico.

Cuando actualicé a la última Ubuntu (12.04) empecé a tener problemas con los escritorios al usar Gnome Classic, y después de la buena crítica de un amigo, decidí darle otra oportunidad a Gnome3. Pero aún así no olvidaba las carencias que describí en mi anterior artículo, así que decidí personalizarlo a mi gusto.

Lo primero que hice fue activar los iconos en el escritorio. Para ello instalé el programa gnome-tweak-tool, y escogí la opción correspondiente, como se ve en esta imagen:

Lo segundo fue buscar extensiones que supliesen las carencias que veía. Fue entonces cuando me llevé una muy agradable sorpresa con el nuevo sistema para instalar extensiones de Gnome 3.4: en lugar de tener que bajar un fichero, copiarlo en alguna carpeta y rezar para que funcione, los desarrolladores han creado una página web (https://extensions.gnome.org/) que permite simplificar de manera notable este proceso. Dicha página se integra con el navegador y permite instalar extensiones con un simple click en el interruptor que aparece en la parte izquierda. También permite, desde la misma página, desinstalar, actualizar, desactivar y configurar las extensiones instaladas (aunque las dos últimas acciones también se pueden hacer «en local»).

La cantidad de extensiones disponibles es muy grande (más de 170 en el momento de escribir estar líneas), y cubren la práctica totalidad de las necesidades del usuario medio. Las que instalé en mi sistema son las siguientes:

  • Alternative Status Menu: añade al menú de usuario la opción de apagar el equipo
  • Dash and Overview Click Fix: hace que al pulsar sobre el icono de una aplicación que ya está lanzada, se lance otra copia en lugar de mostrar la que ya existe
  • Dash to dock: convierte la barra de iconos de la izquierda en un dock. También permite cambiar de escritorio con la rueda del ratón
  • Frippery Applications Menu: sustituye el botón Actividades por un menú de aplicaciones como el de Gnome 2 en la parte superior izquierda (la tecla Windows sigue entrando en dicho modo)
  • Maximus: elimina la barra superior de las ventanas maximizadas, lo que permite ganar un poco de espacio extra
  • Remove Accesibility: elimina el icono de accesibilidad en la barra superior
  • System Monitor: añade gráficas de uso de la CPU, memoria, etc. (configurable)
  • Windows Alt Tab: hace que las teclas Alt+TAB sólo escojan entre las ventanas del escritorio actual, en lugar de entre las de todos los escritorios
  • Workspace Indicator: muestra un icono con el escritorio actual, y permite cambiar de escritorio desde él
  • Workspace Navigator: permite usar las flechas arriba y abajo para cambiar de escritorio en la vista de Actividades

La única extensión que echo en falta es una que impida que Gnome 3 entre en modo Actividades cuando el escritorio actual se queda sin ventanas.

Lo sorprendente es que, al final, he acabado acostumbrándome a lanzar las aplicaciones mediante la técnica de pulsar la tecla Windows, para entrar en el modo Actividades, y teclear el nombre de la aplicación que quiero. Para las más usadas es mucho más cómodo (por lo que tengo que comerme mis palabras en el anterior artículo). Para las menos, sin embargo, sigue siendo más cómodo el menú de aplicaciones que el sistema nativo de Gnome 3, razón por la que lo conservo.

El maximizar las ventanas simplemente arrastrándolas hasta la parte superior me resulta comodísimo, y el ponerlas a media pantalla arrastrándolas a un lateral es una opción realmente útil cuando uno tiene que comparar textos o copiar de un lado a otro. Además, he acabado acostumbrándome al sistema de escritorios virtuales dinámicos, y de hecho creo que es la mejor opción para aquellos usuarios noveles que nunca los han utilizado.

Así pues, creo que debo comerme parte de mis palabras y reconocer que Gnome 3, aunque con algunos defectos (nada en este universo es perfecto), sí es un escritorio perfectamente válido, y muy sencillo de adaptar a las necesidades de cada uno.

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.

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.

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.

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.