• Scwm

Versión analizada

0.99.6.2, publicada el 12 de marzo de 2000.

Página oficial

http://scwm.sourceforge.net/

Estado actual

La última versión oficial data de 2000, y su comunidad de usuarios se evaporó con rapidez un par de años después. Su instalación necesita herramientas y bibliotecas antiguas y será muy difícil —o imposible— en cualquier sistema actual. Quiero decir, a grandes rasgos abandonado, en desuso.

Y lo matizo con un «a grandes rasgos» porque se ha continuado trabajando muy ocasionalmente en el código de Scwm, y resulta posible encontrar un esbozo de lo que iba a ser la versión 0.99.6.3. No sé hasta qué punto estas copias más modernas del gestor realmente funcionan, mis experiencias con ellas han sido negativas. Y de todos modos no existe apenas actividad a su alrededor.

Características resumidas

Esc. Virtuales Menús Iconos Temas Dockapps At. de teclado Barra de tareas
No 1 No

1 Scwm es compatible con los módulos de FVWM, y entre ellos hay uno, FvwmButtons, que permite alojar algunas dockapps.

Descripción


Captura de Scwm

El proceso de carga de Scwm, con su logotipo animado y su ventana de diagnóstico en el extremo inferior de la pantalla. Captura tomada en mi máquina virtual con Slackware 8.


Scwm nació en la segunda mitad de la década de 1990 de la mano de dos estudiantes universitarios, Greg J. Badros y Maciej Stachowiak. Comenzó como una variante de FVWM 2 extensible mediante el lenguaje de programación Scheme —hablando con más exactitud, recurre a un dialecto de él llamado Guile , como el personaje de Street Fighter—, aunque evolucionó rápido, y en el curso de tal evolución acabó reescrito casi en su totalidad. El proyecto gozó de cierto seguimiento durante su época de vigencia, los autores escribieron algunos artículos académicos sobre él... Y luego todo ello se apagó bruscamente a partir de 2001.

Hay gestores de ventanas concebidos para usos muy determinados, con un comportamiento y características rígidos y bien definidos de antemano. Otros, en cambio, tratan de ofrecer de todo a todo el mundo, y constituyen una especie de rompecabezas de «construye tu propia interfaz gráfica con las piezas que te entregamos». Scwm, como FVWM, cae de lleno en esta última categoría. Su premisa básica consiste en que un usuario con el tiempo y los conocimientos necesarios —¡importante!— pueda ajustar a su gusto casi cualquier detalle: menús, atajos de teclado, controles de las ventanas..., y mucho, mucho más.

Scwm posee un diseño modular. Su funcionalidad más elemental está escrita en C y queda incluida en un fichero ejecutable, scwm. El comportamiento general del gestor y las características que el usuario verá se encuentran, en cambio, definidas en más de un centenar de módulos separados —aunque a menudo interdependientes— de código Scheme. De modo que resulta posible descartar los que no se necesiten, o crear otros nuevos si uno es programador y está familiarizado con la arquitectura interna del gestor.

Su nombre viene de las iniciales de Scheme Constraints Window Manager.

La segunda palabra —Constraints— es importante, y alude a una posibilidad muy atípica que en 2000 brindaba Scwm: definir reglas o relaciones entre ventanas, que el gestor después resuelve sobre la marcha. Quizás alguien maniático desearía que las pertenecientes a su editor de textos tengan siempre la misma anchura, o se muevan al mismo tiempo..., este tipo de cosas, vamos. Estas reglas —en la documentación se les llama «restricciones»— podían especificarse además de forma gráfica, con ayuda de iconos y menús. Sin embargo estamos hablando de una funcionalidad opcional, para la que Scwm requería de una biblioteca externa, Cassowary , en el momento de su compilación.


Captura de Scwm

Y ahora sí, Scwm en marcha, de nuevo en Slackware 8. Está desplegado el menú de tareas —Window list—, y la ventana de Xlander aparece resaltada en rojo porque en ese momento se halla marcada en él.


Otra peculiaridad, ésta derivada del empleo de Scheme para las operaciones internas de Scwm, es la existencia de scwmrepl: una línea de comandos interactiva desde la que darle órdenes directas al gestor. Otra utilidad, scwmexec, viene a ser su hermana pequeña y ejecuta expresiones aisladas de forma automática.

Ahora, si dejamos a un lado las relaciones entre ventanas y el uso de Scheme, nos queda un gestor muy versátil que los usuarios de FVWM encontrarían en efecto familiar. Hay menús para lanzar aplicaciones, o seleccionar y manejar ventanas. Hay escritorios virtuales, tanto en su modalidad de espacios independientes de trabajo como de áreas contiguas de mayor tamaño que la pantalla. Hay atajos de teclado. Incluso hay temas visuales, la mayoría en imitación de interfaces que a finales de los noventa eran populares: Mwm, Twm, Windows 95, AfterStep. De este último punto se deduce que una persona inquieta podría reimplementar, en líneas generales al menos, su gestor de ventanas favorito en Scwm, aunque por supuesto no se trata de una tarea trivial.

La configuración de Scwm se efectúa desde el archivo ~/.scwmrc, un largo, denso e inhóspito bloque de código Scheme. Para facilitar un poco las cosas los autores prepararon cuadros de diálogo para efectuar de forma gráfica algunos ajustes básicos —modelo de enfoque, etc—; y los cambios que se hagan desde ellos quedan registrados en ~/.scwm-options, con prioridad sobre el fichero anterior. No obstante cierta familiaridad con Scheme resulta casi imprescindible.

¿Más cosas? Las hay, ya en el apartado de curiosidades. Por ejemplo, un módulo que permitía al usuario darle órdenes habladas a Scwm gracias a ViaVoice , un software de reconocimiento de voz de IBM que tuvo una breve existencia en Linux. O integración con esa navaja suiza disfrazada de editor de textos llamada Emacs. Ah, y por último un detalle que demuestra que los desarrolladores pensaban, como se suele decir, en todo: compatibilidad con los módulos de FVWM, al menos con los de versiones contemporáneas a Scwm de dicho gestor.

Instalación

Bien, Scwm es software abandonado. No existen ya paquetes precompilados para ninguna distribución de Linux, ni siquiera se halla presente en los repositorios de un Unix tan conservador como NetBSD. Resulta por lo tanto muy difícil de instalar en un sistema moderno.

Aunque la última versión oficial de este gestor de ventanas, la 0.99.6.2, data de 2000, encontré código más reciente. En Sourceforge hay un repositorio CVS que quedó congelado en noviembre de 2006, y un repositorio Git cuyos últimos cambios datan de enero de 2013. Con ninguna de estas dos variantes he tenido suerte: de la primera obtuve una copia disfuncional de Scwm —sin menús ni atajos de teclado—, y de la segunda errores de compilación.


Captura de Scwm

Por fin, nada de máquinas virtuales: ¡Scwm en mi ordenador de escritorio! La configuración por defecto incluye este gran menú repleto de opciones exóticas. Muchas no resultan de utilidad, pero me sirvieron para hacerme una idea de qué puede conseguirse con este gestor.


De modo que recurrí a la vieja versión 0.99.6.2. El Linux que yo utilizo es una especie de Frankenstein que por sus componentes básicos —núcleo, Glibc, GCC, X Window System— podría fecharse aproximadamente en 2010, aunque de GCC y Glibc dispongo tanto de ediciones más recientes como más antiguas. Y ni aun así conseguí nada: compilé esta versión de Scwm con algún GCC antediluviano de la rama 3.x, y de nuevo me encontré con algo que sólo funcionaba a medias.

Antes de desistir definitivamente quise probar algo más: ya que se trata de software del año 2000, ¿por qué no intentar correrlo en un entorno de la época? Y aprovechando que dispongo de una máquina virtual con Slackware 8 —¡hola de nuevo, 2002!— me dispuse a instalarlo en ella. Un poco tedioso, porque mi ordenador es modesto y la velocidad del sistema emulado en él no debe sobrepasar la de los primeros Pentium, y además Scwm depende de varias piezas más que deben compilarse previamente. Sin embargo, he de decir que... Un logotipo animado, menús usables, controles en las ventanas... ¡Éxito!

Mejor aún: una vez comprobé que Scwm funcionaba correctamente en el sistema emulado, pude mover toda la instalación —el gestor de ventanas y sus dependencias, un paquete de unos 10 MB comprimido con bzip2— a mi Linux habitual, guardarlo en /opt/scwm, y tras algunas vueltas utilizarlo por fin sin errores. Con un poquito más de esfuerzo pude hacerlo correr también en mi portátil pequeño, un EeePC que vive feliz con un Bodhi Linux de 2016.

Como ya he dicho arriba Scwm usa Guile, un intéprete de Scheme. Por lo que he visto es muy sensible a la versión de éste que se encuentre instalada en el sistema. Para Scwm 0.99.6.2 los autores recomendaron Guile 1.3.4, y probar otra diferente es buscar problemas.

Yo usé las siguientes reliquias en mi experimento:

Oh, y también Cassowary 0.60, mas aquí fracasé: pude compilar Scwm, pude compilar Cassowary, pero no acerté a compilar una copia de Scwm que incluyese la funcionalidad requerida de Cassowary. Me he quedado pues sin ver qué es exactamente eso de definir reglas o «restricciones» entre varias ventanas.

¿Los requerimientos del código más actual de Scwm? Los desconozco. Sospecho que la variante del repositorio Git necesita algún Guile de la serie 2, y eso es todo lo que puedo decir.

Primeras impresiones


Captura de Scwm

Editando mi fichero de configuración, ~/.scwmrc: regodeaos en la belleza del código Scheme. En la esquina inferior izquierda se encuentra el paginador de Scwm, un accesorio más bien rudimentario.


Como comprenderéis si habéis tenido la paciencia de leer hasta aquí, ver el logotipo de Scwm después de tanto esfuerzo supuso para mí una especie de triunfo. Oh, y encima está animado: se trata de la letra lambda del alfabeto griego sobre fondo azul, que gira en sentido horario a medida que se va completando el proceso de inicio del gestor. Además de este logotipo giratorio, durante la carga se van listando las operaciones realizadas en una terminal abierta a tal efecto.

«Proceso de inicio» es la expresión adecuada, sí, porque en mi Pentium 4 se prolonga unos veinte segundos. En los ordenadores del periodo de actividad del proyecto —puedo imaginarme a muchos usuarios ejecutándolo en Pentiums 2 o viejas estaciones de trabajo de Sun— sin duda requirió más tiempo. A ver, hagamos una pequeña prueba... Bien, ¡tres minutos en mi máquina virtual con Slackware 8! Aunque ya he dicho que ésta posee una potencia ínfima, así que tampoco sé hasta qué punto representaría la experiencia habitual de 1999. En todo caso queda claro que Scwm es un gestor de ventanas complejo y relativamente pesado.

A falta de un plan mejor decidí emplear la que podría considerarse la configuración por defecto: el fichero system.scwmrc, que copié a mi directorio raíz como ~/.scwmrc. El resultado es un menú bien repleto de elementos —programas a ejecutar, operaciones con ventanas, etc— y una estética basada en formas cuadradas con relieves y colores sólidos, que recuerda bastante a FVWM y un poco a..., Motif , la que fue la interfaz gráfica más reconocible de Unix a finales de los noventa. Otro detalle que atestigua que el desarrollo de Scwm se detuvo por esa época es la existencia de un módulo dedicado al manejo del navegador Netscape , hoy una remota leyenda del pasado.

Durante mi primera sesión anoté lo siguiente:

«Vaya, parece complicado. Un menú de aplicaciones lleno de reliquias: deduzco que capaz de detectar hasta cierto punto qué programas hay instalados en el sistema, al menos entre los contemporáneos del gestor. Cuadros de configuración, con un apartado dedicado a Netscape (!). Y un menú de operaciones de ventana repleto de opciones extrañas. Scwm es maximalista.

»De verdad, el menú de operaciones de ventana contiene entradas realmente inusuales. Como cambiar títulos pegando el contenido del búfer del X Window System, cosa que puede servir para... ¿Para qué? ¿Alguna idea? ¿Quién necesitaría hacer eso?»

Eh, ¡diálogos gráficos de configuración! Con sus limitaciones, sí, pero aun así suponen una ayuda valiosa para el recién llegado, porque permiten cambiar fácilmente cosas básicas como el modelo de enfoque. Basados en el hoy obsoleto GTK1, y en una versión igual de añeja de Guile-gtk: instalar estas dos bibliotecas —especialmente la segunda, que yo he copiado de mi máquina virtual con Slackware 8— en un Linux actual debe ser toda una aventura.

De todas formas antes o después deberé enfrentarme al código Scheme del archivo ~/.scwmrc, entre otros motivos porque quiero a mis programas favoritos accesibles en los menús: Netscape, Acrobat Reader, Arena Browser o XPaint no me sirven de nada. En mi segunda tarde con Scwm lo abro en Vim, y aparece ante mí en sus gloriosos 46 kilobytes, perfectamente la longitud de un relato corto de Lovecraft. El coloreado de sintaxis ayuda mucho, y espero que mi experiencia previa con Wimpwm y GWM también. La documentación, en cambio, está concebida como referencia para personas que ya saben por dónde van, y yo en estos momentos no soy una de ellas.

Usando Scwm

¿Conocéis FVWM? ¿Lo habéis usado? Se trata de un gestor ventanas famoso por su versatilidad, y porque la cantidad de opciones que ofrece al usuario daría para escribir un libro. A cambio es conocido también por lo complicado de su configuración.


Captura de Scwm

Un arreglo diferente: fondo espacial, tema «woven» —bastante original, por cierto—, iconos para aplicaciones minimizadas en el escritorio. Estoy utilizando el pager de FVWM 2.1.13, mucho más capaz que el original.


Bien, pues Scwm hereda todo eso y luego va más allá. Es posible, por ejemplo, definir una decoración diferente para cada ventana o grupo de ellas —qué sé yo, quizás alguien maniático querría señalar todas sus Xterms con marcos de color amarillo—, o ponerles títulos arbitrarios. Y el uso de un lenguaje de programación de verdad como Scheme permite configuraciones más complejas, con variables, declaraciones condicionales y otras florituras; como además éste es interpretado, uno puede hacer numerosos cambios sobre la marcha y sin tener que reiniciar el gestor, bien escribiendo comandos en scwmrepl, bien recurriendo a los diálogos oportunos. Pero todo esto, claro, hace a Scwm aún más esotérico para el común de los mortales que FVWM.

No es fácil. Yo llegué a una configuración confortable a pequeños pasos, sin prisas, toqueteando hoy esto y mañana aquello. Insisto, Scheme no resulta amigable para los no iniciados. Reconozco que para mí ha sido una experiencia interesante, salpicada de divertidos ratitos de frustración. Me las he apañado bastante bien, cierto, entre otros motivos gracias a esas semanas de 2017 que pasé trasteando con otro gestor de ventanas de enfoque similar —y también extensible mediante Scheme—, GWM. Sin embargo, ¿una persona que no tenga el menor interés en resolver acertijos, que sólo busque un escritorio usable con el menor esfuerzo posible? Oh, no, Scwm no era para ella.

Si me dan la opción me gustan los escritorios virtuales, y obviamente resultan más manejables con un paginador. Este gestor de ventanas incluye uno, mas no lo encontré muy útil —en mis notas, y con rima de propina, el pager nativo de Scwm es definitivamente un boñigo— porque sólo posee un cometido, digamos, informativo, y no parece hacer caso del ratón. Ahora, la página oficial del proyecto informa de que Scwm es compatible con los módulos de FVWM..., y entre ellos hay un paginador estupendo. Eh, ¡y de verdad funciona! El secreto está en utilizar una versión de FVWM publicada en la época de vigencia de Scwm. De modo que la 2.6.2 que guardaba yo en mi sistema, de agosto de 2011, no sirve —Scwm da errores al intentar cargar sus módulos—; pero con la 2.1.13, procedente de las tinieblas lejanas de 1999, sí tuve éxito. Añadase pues, a la lista de software anticuado necesario para disfrutar de Scwm, una edición obsoleta de FVWM.

Aunque no se trata sólo del paginador, existen otros módulos de FVWM que también cabe usar aquí. FvwmWinList, por ejemplo, muestra una lista de todas las ventanas abiertas en la sesión, al estilo del gestor de iconos de Twm; aunque no parece interactuar muy bien con los escritorios virtuales de Scwm. Para mí lo mejor ha sido reencontrarme con FvwmButtons, uno de los componentes más flexibles de FVWM: un usuario ingenioso puede preparar con él paneles con botones para iniciar rápidamente sus programas favoritos, o incluso algo que me siempre me agrada: ¡alojar dockapps!

Las relaciones entre ventanas o constraints eran una parte importante de Scwm, tanto que los autores la describieron con detalle en un artículo académico . Ya he comentado antes que no he logrado ver en acción esta faceta del gestor, todas mis tentativas de compilarlo incluyendo la biblioteca Cassowary fracasaron; por lo visto esta dificultad ya existía en los años noventa, y por ello lo habitual entonces era que las distros de Linux distribuyesen Scwm sin ella. Por lo tanto voy a hablar sin conocer realmente cómo funcionaba el invento... Al parecer el usuario agrupaba una pareja de ventanas y luego, mediante una barra de iconos, definía una regla a aplicar sobre ellas: que siempre guardasen la misma distancia, que la suma de sus alturas fuese constante, etc. No sé cómo valorar esta característica: a primera vista se me antoja vagamente interesante, mas sólo se me ocurren algunos casos muy específicos en los que pudiera resultar útil. En todo caso se trata de un rasgo único y original de Scwm, creo que no lo encontraréis en ningún otro sitio.


Captura de Scwm

Infra Arcana, uno de los videojuegos más duros y frustrantes creados por el hombre...


La configuración por defecto define una cantidad muy generosa de atajos de teclado para las más diversas operaciones. En serio, hay muchos, incluso para cosas que generalmente se hacen con el ratón: desplazarse por los escritorios virtuales, mover ventanas o incluso el puntero... Aquí se aprecia el gusto de los autores por Emacs: casi todos requieren dos o más teclas modificadoras —[Alt], [Ctrl], [Mayúsc]—. Un tanto incómodos al principio, luego uno se va acostumbrando.

También hablaré rápidamente de los temas visuales. Tal y como están implementados alteran la estética del gestor, aunque no su comportamiento general. Con la instalación básica se distribuyen ocho. Cinco de ellos replican interfaces muy difundidas cuando los autores se pusieron a trabajar —«win95» no necesita presentación, y «twm» y «mwm» para los veteranos de Unix tampoco—; no se trata de copias exactas, sin embargo. Y luego quedan «gjb» —apariencia por defecto de Scwm—, «woven» y «darkside» —hasta donde sé, originales—. Tal vez en los años de actividad del proyecto terceras personas creasen más temas; pero, si alguna vez existieron, al despuntar 2018 no queda ni rastro de ellos.

Por lo demás, bueno, no deja de ser un gestor de pila en el que el usuario trabaja con ventanas flotantes... Sólo que con mucha, mucha funcionalidad y opciones arcanas. Se requieren semanas de empleo habitual para ir comprendiéndolas. Quiero decir, mientras escribo esto, y con un mes de experiencia ya a mis espaldas, he descubierto la posibilidad de agrupar ventanas y disponerlas en mosaico o cascada: las opciones requeridas están enterradas en los menús. En fin, como buen retoño de FVWM, el límite está en tu imaginación.

Opciones de personalización

Con unos conocimientos someros de Scheme, todas las del mundo: aspecto de la decoración, colores, iconos, controles de las ventanas, menús, escritorios virtuales, atajos de teclado... La lista completa sería muy larga y terminaría con detallitos muy sutiles.

Por ejemplo, ahora mismo estoy pensado en que querría que mi reloj —pongamos Xclock— quedase en la esquina superior derecha de la pantalla, como una ventana siempre visible de 200 píxeles de lado... Seguro que definir un comportamiento así, tan específico, es posible en Scwm; aunque no sé bien qué sortilegio hay que escribir en mi configuración para lograrlo.

Existe una serie de cuadros de diálogo para establecer las más obvias, lo cual se me antoja un gran acierto. Para todo lo demás, el fichero ~/.scwmrc.

Documentación


Captura de Scwm

No podía faltar un tema visual que imitase el estilo del venerable Mwm, claro. Por lo demás, escuchando música con Workman; Bxfm, en cambio, es una momia que sólo he abierto para exhibirla.


Hay una página de manual común para Scwm y sus accesorios —scwmrepl y scwmexec—, que no explica gran cosa. Con el código fuente viene además el Scwm Reference Manual, que peca más bien de lo contrario: se trata de un largo, largo compendio de las funciones en Scheme que cabe usar para la configuración del gestor.

¿Para un usuario recién llegado? Oh, apenas nada. El archivo scwm-intro-tutorial.scm, en el directorio doc del árbol del código fuente, viene a ser eso, una introducción para la gente inexperta; o digamos, siendo más realistas, «menos experta», porque se centra en la interacción de Scwm y Scheme. Concebido para su lectura en Emacs, si bien resulta inteligible en cualquier otro editor de texto. Incompleto.

Aciertos

Inconvenientes

Conclusión

Scwm es a estas alturas un fósil, que sólo pude instalar en mi Linux sirviéndome de otro Linux antiguo en una máquina virtual. Aun así me ha parecido un proyecto interesante, sofisticado, que abría un mundo de posibilidades a sus usuarios. Una pena que haya quedado abandonado.

¿Queréis un gestor de ventanas configurable hasta el infinito? Vuestra mejor opción sigue siendo probablemente FVWM, más fácil de comprender que Scwm y con la grandísima ventaja de seguir en desarrollo. ¿Tenéis además la necesidad imperiosa de escribir código en Scheme? Entonces GWM se me antoja más factible, pese a hallarse también algo desatendido, o Sawfish —vale, éste no utiliza Scheme sino Lisp, pero el primero deriva del segundo y ambos no dejan de ser bastante similares—. En cambio, ¿buscáis un gestor de ventanas simple y de aprendizaje rápido? Pues no toquéis ni con un palo ninguno de los que he mencionado.

Galería de imágenes

Las imágenes de Scwm en acción van escaseando ya en Internet, así que pongo mi granito de arena:

Captura de Scwm

Y otra cara más de Scwm: un fondo de escritorio minimalista, tema «darkside». Hay varias dockapps abiertas en el panel de la derecha, creado gracias a FVWM 2.1.13, en concreto a su módulo FvwmButtons. Y dos espacios de trabajo independientes, ambos cuatro veces más grandes que el área del monitor.

Captura de Scwm

Scwm ejecutándose en mi EeePC , con Bodhi Linux 3.2.1. Se trata de los mismos binarios que compilé en mi máquina virtual con Slackware 8, trasladados con todas sus dependencias —Guile 1.3.4, GTK1, etc— a un sistema quince años más reciente. Eh, ¡y funcionan bien! Sólo faltaría preparar una configuración adecuada para una pantalla tan pequeña y un touchpad execrable.

Captura de Scwm

Otra estética distinta, esta vez intentando imitar superficialmente a Twm. Estoy pasando el rato con Xbl, una especie de Tetris en tres dimensiones creado a imagen y semejanza del viejo Blockout para MS-DOS.

Captura de Scwm

Otra de las características emblemáticas de Scwm era definir reglas o restricciones entre ventanas. En este ejemplo creo que se trata de que la suma vertical de las dos destacadas en rojo sea siempre la misma. En la esquina superior derecha un panel con iconos enumera todas las posibles reglas. Hay abierto también un menú con opciones al respecto. (Imagen tomada de Wikipedia ).

Captura de Scwm

Otra posibilidad insospechada de Scwm es aplicar una decoración diferente a cada ventana: podéis verlo en la imagen. Seguramente no es una idea práctica ni bonita, pero vaya, ahí está.

Captura de Scwm

De nuevo en Slackware 8, me entretengo trasteando con los diálogos de configuración de Scwm. En una terminal, el navegador Elinks.

Captura de Scwm

FvwmWinList —el cuadro grande que ocupa la zona superior izquierda— también puede emplearse en Scwm, aunque a mí no me convenció.

Captura de Scwm

Y por último considerad esta imagen como una especie de resumen de todo lo que puede hacer Scwm: menús, decoraciones diversas, los constraints, diálogos de configuración... (La captura no es mía, procede de la página oficial ).

Recursos adicionales

Scwm: an extensible constraint-enabled window manager
Ya lo he enlazado más arriba, pero lo destaco aquí para que resulte más visible... En este artículo uno de los autores, Greg Badros, describió las características más importantes de Scwm y dio una explicación detallada del funcionamiento de los constraints, las relaciones entre ventanas.

 

Artículo escrito el 30 de enero de 2018.


[Apta para cualquier navegador]  [Cumple con el estándar HTML]  [Cumple con el estándar CSS]

Podéis copiar libremente cualquier contenido de esta página.
Mandad opiniones, sugerencias o saludos a sovietskayarodina@gmail.com.