Implementando soporte para Xinerama en Superkb

Desde hace tiempo, Alfredo observó el problema. Incluso, hay un screenshot en la sección de bloopers (al final de la sección de Pantallazos) donde se ve una pantalla doble con un teclado muy bonito. Pero, ¿por qué es eso un blooper?

Para pintar el teclado, Superkb le pregunta a X el tamaño de la pantalla, y pinta el teclado aprovechando al máximo la pantalla, según el tamaño que se le reporta.

El problema

Para X, una tarjeta dual con dos monitores, es en realidad un solo «display», de modo que Superkb no logra percatarse de la existencia de dos monitores, y aunque el screenshot se ve perfecto, la realidad es muy distinta. (Disculpen ustedes mi falta de pulso.)


(Superkb sin soporte para Xinerama: A la izquierda, el screenshot, a la derecha, las pantallas reales)

Nótese que en este caso, el problema se agrava debido a que cada monitor tiene una resolución distinta, de modo que no sólo el teclado se ve partido, sino que además una parte se pierde.

¿Cómo se podría resolver el problema? El problema dejaría de existir si Superkb tuviera la capacidad de conocer la cantidad de monitores existentes y la resolución de cada uno, y pintar varios teclados a la vez, uno por monitor.

XINERAMA

En una configuración de doble monitor, para X.org, se sigue tratando de un único «display», es sólo que un conjunto de pixeles se asignan al primer monitor y otro conjunto de pixeles se asignan al segundo monitor.

Xinerama es una librería que, en esencia, cuenta con sólo una función, llamada XineramaQueryScreens. Aunque en realidad son 4 funciones, las tres restantes sólo se usan para consultar la versión, disponibilidad y compatibilidad de Xinerama como extensión de X.

Con esta función le pregunto a X.org cuántos monitores hay y qué pixeles se mapean a cada uno de los monitores, y me contesta en un arreglo de estructuras XineramaScreenInfo.

Por ejemplo, en la PC que se usó para el screenshot, esta es la información que regresa:

screen_number = 0
x_org = 0
y_org = 0
width = 1024
height = 768

screen_number = 1
x_org = 1024
y_org = 0
width = 1280
height = 1024

Con esta información, Superkb sólo se limita a pintar los teclados en sus correspondientes coordenadas: un teclado entre 0-1023 x 0-767 y otro en 1024-2303 x 0-1023. El screenshot queda un poco diferente, y tal vez no se vea del todo bien. Pero ya en pantalla se ve como se espera.


(Superkb con soporte para Xinerama: A la izquierda, el screenshot, a la derecha, las pantallas reales)

Debido esto, hubo que convertir el pixmap y la ventana de Superkb, en un arreglo de pixmaps y ventanas. (No, no puedo usar un mismo pixmap para todas las ventanas, porque pueden ser monitores de diferente resolución).

En conclusión: para el tiempo que duré con conocimiento del bug y sin arreglarlo (desde la versión 0.10), creo que hice una tormenta con un vaso de agua. El cambio fue relativamente fácil de implementar.

… y todo para Xinerama se desprecie en favor de Xrandr. 😉

Por falta de respaldos

Te voy a hacer una pregunta y quiero que la contestes con toda honestidad. La pregunta es muy sencilla, por lo que la respuesta debe ser muy sencilla.

¿Tienes respaldos de tu información importante?

Por «información importante» sólo tú sabrás a qué me refiero, pero no te limites a tu información personal; piensa también en la PC de tu trabajo. No sólo pienses en disco duro: piensa en tu memoria flash, en las fotos que están actualmente en tu cámara, en tus CDs que tienes guardados, en tus servidores. Tampoco te limites a tus documentos: fotografías, recuerdos, programas que escribiste, música difícil de volver a bajar, textos, videos, herramientas de manejo de información, programas, scripts, etc.

Desafortunadamente, el origen de esta reflexión es la experiencia propia.

Hoy falleció el disco duro de la PC de mi trabajo. Al recordar la información que tenía, me doy cuenta de que más que la sola información, en realidad era toda una plataforma de trabajo.

¿Y cómo sucedió? Al mover mi escritorio le di una «palmada» accidental a la PC y pasó de ser vertical a horizontal. No es que culpe, pero me parece un error de diseño físico del gabinete que al empujar un gabinete, en lugar de recorrerse, se caiga (es una Dell Optiplex GX620 Small Form Factor). Cuando la revisé me dí cuenta de por qué se cae: disco duro, CD-ROM, disquetera y fuente de poder están ubicados hasta arriba, en lugar de hasta abajo, donde sólo está la placa y las ranuras de expansión. De estar hasta abajo, sería más resistente a estas caídas y, aún si se cayera, el golpe sobre el disco duro es mucho más débil. Insisto, no culpo porque el respaldo de mi PC es mi responsabilidad, pero casi puedo apostar que tu PC hace lo mismo y a tu información le puede pasar lo mismo.

Siento como si mañana fuera nuevamente mi primer día en el trabajo.

Un saludo a todos.

De visita en Sol y Ciencia, 2008

El sábado pasado estuve en el Cecut visitando una feria de ciencia, titulada Sol y Ciencia, organizada por la Sociedad Astronómica de Baja California (los mismos que presentan Una Ventana al Universo en el planetario del Cecut).

Aunque tenía una expectativa diferente del evento, salí con buen sabor de boca. Les cuento.

Vista abiertaUna parte del evento consistió en la participación de los preparatorianos del CETIS 156. Una buena cantidad de alumnos presentaron los proyectos de electrónica sobre los que han trabajado. No recuerdo todos, pero estos se me quedaron grabados:

  • Una sádica propuesta de evitar robos mediante descargas eléctricas (dos alumnos lo aplicaron a vehículos, uno más a bolsas de mano y mochilas y uno más a defensa personal.)
  • Otra propuesta para evitar robo de carros usando proximidad (menos sádica)
  • Un tendedero electrónico.
  • Un bote de basura con sensor de llenado.

Felicidades a todos los muchachos que participaron. Esta vez fueron maquetas, pero en un futuro podrían ser soluciones que veríamos en nuestra ciudad. Es sumamente importante que sigan realizando proyectos, plasmando ideas y planteando soluciones por medio del proceso de diseño. Sólo así llegarán a resolver de raíz los problemas de nuestra ciudad. (Cof, vialidades, cof, logística burocrática, cof!)

CarritoHubo otros proyectos de alumnos con mayor nivel académico:

  • Una propuesta para facilitar el cambio de una llanta.
  • Un boiler solar.
  • Un mecanismo para dectar la humedad en la tierra (para sistemas de riego).
  • Un proyecto demostrativo de levitación por medio de corrientes de aire y alto voltaje (me parece que este proyecto lo preparó un profesor).
  • Una planta de purificación de agua.

Disculpen si he equivocado la descripción de algún proyecto, pero mi memoria es bastante mala.

Arena - miniaturaTambién hubo demostraciones de sensado de obstáculos con unos vehículos robot construidos con kits de piezas Lego, en una superficie previamente preparada. Los expositores me explicaban que originalmente, el proyecto consistía en lograr que dos robots colocados en la superficiedetrás de un puente, compitieran por alcanzar un tercero y «despertarlo» y buscar darle instrucciones para recoger una serie de piezas del color correspondiente al robot en su posición original. Todo esto, sin intervención humana.

Secuencia de EclipsePor su parte, la Sociedad Astronómica de Baja California presentó su colección de astrofotografía (planetas, nebulosas, eclipses, ocultaciones, etc.) parte de la cual está publicada en su Galería Astronómica. Además, apuntaron sus telescopios al Sol. Tuve la oportunidad de ver una imagen impresionante del Sol con unas erupciones. Estas erupciones son tan pequeñas comparadas con el Sol que apenas se distinguen en el telescopio como pequeños «filamentos». Aún así, en cada uno de ellos cabe un planeta Tierra.

Este tipo de eventos me provocan tanto gusto como nostalgia. He participado en eventos de este tipo tanto como expositor, como miembro del Staff, y cada uno ha sido una experiencia única. El gusto viene por encontrar personas interesadas en la divulgación y promoción de la ciencia, y que hacen partícipar a los estudiantes en público.

¿Saben qué es lo mejor/peor de todo? Que este es el decimotercer año que la realizan. ¿Alguno de Ustedes lo sabía?

Video favorito: Vadrum meets the Barber of Seville

Drummer camVadrum Meets the Barber of Seville es una mezcla entre la obertura de El Barbero de Sevilla y la flamante percusión de Andrea Vadrucci.

En el video pueden notar una parte donde utiliza los diferentes sonidos de la batería como si fuera un instrumento con tonos para acompañar la melodía de la pieza original.

Además de su canal de YouTube (vadrum), donde presenta otras de sus mezclas —entre ellas un increíble encontronazo con Mario Bros. 2—, tiene un sitio, http://www.andreavadrucci.com/, donde incluso muestra su batería y cada una de las piezas que la componen. Éste está en italiano, pero siendo lengua hermana del español, algunas cosas se alcanzan a entender.

Tal vez esto sea algo de lo más impactante que he visto después de Rodrigo y Gabriela.

Frustrante

Llegué a las 8:00 p. m. con la firme intención de meterle música al iPhone antes de las 10:00p. m. ¿Qué podría pasar mal?

Con ipod-convenience monté el iPhone en /media/ipod. Ahora, a trabajar.

La gran recomendación fue usar Amarok, pero:

The following packages have unmet dependencies.
amarok: Depends: libmtp6 but it is not installable
Depends: libqt3-mt (>= 3:3.3.8really3.3.7) but 3:3.3.8b-5 is to be installed
E: Broken packages

Una búsqueda por «ipod» me arrojó algunos matches.

Uno de ellos fue Exaile. Instalé el binario con apt-get y no reconoció ningún archivo de música. Sid provee la versión 0.2.11. La versión más actual es la 0.2.13. Por azares del destino encontré un .deb en un directorio «files» en la página de Exaile, pero no era de la versión 0.2.13, sino de la 0.2.12b. Lo bajé, lo instalé con dpkg -i, y ahora dice que «no puede montar el iPhone». El iPhone *ya* está montado en un directorio gracias a ipod-convenience. Lo malo no es que no pueda montarlo per se, sino que no me dice por qué. No hay salida en consola, no hay mensajes de error detallados, no hay bitácoras, no hay nada. Simplemente «no puede».

Después intenté con Rhythmbox. Tan pronto hice clic en el checkbox para activarle el plugin de iPod, el programa tronó. Simplemente inútil. Ah, y estoy usando la versión más nueva: 0.11.5 y que, por cierto, en la página se anuncia como nueva la 0.11.4.

Entonces pienso que podría entrar a Windows con VirtualBox y rezar porque reconozca el iPhone mediante USB, pero la última actualización de VirtualBox en Sid algo le hizo que ahora lo único que veo es «Failed to create Virtualbox COM object», y en la consola:

/usr/lib/virtualbox//VBoxSVC: symbol lookup error: /usr/lib/VBoxXML.so: undefined symbol: _ZN11xalanc_1_1016XalanTransformer10initializeERN11xercesc_2_713MemoryManagerE

Banshee, el «novedoso» player que incluso usa la pesada plataforma Mono, simplemente no lo soporta.

Hipo, simplemente no detectó el «iPod». Tal vez no soporta el iPhone como tal.

¿Alguien sabe cómo subir música de Sid al iPhone?