• Nwm

Versión analizada

1.3.0, publicada el 9 de septiembre de 2015.

Página oficial

http://mixu.net/nwm/
https://github.com/mixu/nwm

Estado actual

En el momento de escribir esto, los últimos cambios en su repositorio de código fuente tuvieron lugar en septiembre de 2015, hace un par de años. Desde entonces, nada. Difícil saber todavía si se trata de una pausa o ha quedado abandonado.

Nwm despertó una chispa de interés entre programadores y aficionados por estar escrito en Javascript, idea más bien atípica; de ahí que existan unas cuantas menciones de él en rincones agrestes de Internet. Incluso alguna persona afirma haberlo usado de forma habitual . Pero estamos hablando en todo caso de una repercusión muy, muy modesta: al usuario común de Linux no le llegaron noticias del proyecto.

Características resumidas

Esc. Virt. Menús Temas Flotantes Títulos B. de estado Manejo
No No No No No Dinámico

Descripción


Captura de Nwm

Nwm en acción, en uno de mis primeros días con él: a la izquierda la página oficial del gestor en el navegador Dillo , a la derecha una copia de su archivo de configuración, ~/.nwm.user.js.


Apuntes generales

Después de leer arriba alguien estará pensando: «¿Javascript? ¡Eso sólo sirve para el Mal™! Para que mientras navegas por Internet te agobien con anuncios flotantes, para que Google te rastree y acapare tus preciosos, preciosos datos, y ya de paso para que cientos de subnormales martiricen a los visitantes de sus páginas web con lentos menús transparentes. ¿Puede escribirse software útil con él?». Pues no nos pongamos tremendistas: ¡obviamente sí!

Veamos, existe algo llamado Node.js , que a grandes rasgos es un intérprete de Javascript compatible con una larga lista de sistemas operativos. Se halla concebido principalmente para su uso en aplicaciones web, esos trastos tan a menudo pesados y torpes a los que uno accede con su navegador. Sin embargo hay también un escaso margen para los programas de escritorio: mientras redacto este artículo estoy escuchando música con Nplay , un reproductor que se ejecuta en la terminal. Y por supuesto tenemos el gestor de ventanas que nos ocupa ahora: porque, como los lectores atentos ya habrán adivinado, Nwm significa Node Window Manager.

La siguiente objeción podría consistir en algo como «espera, ¿entonces es posible crear un gestor de ventanas con Node.js? ¿Desde cuándo la funcionalidad básica del X Window System resulta accesible mediante Javascript?». Parece que, en efecto, alguien ha dedicado sus esfuerzos a conseguir tal cosa ... En cambio a Mikido Takada se le ocurrió una solución diferente cuando trabajaba en Nwm: escribir el «núcleo» del gestor —la parte de él que interactúa directamente con el X Window System— en C y C++, y dejar Javascript para todo lo demás.

El gestor en sí

Nwm es un gestor de ventanas de mosaico. Esto significa que, al contrario que en interfaces gráficas más convencionales, las ventanas que abra el usuario no flotan con libertad en el escritorio sino que quedan encajadas en una cuadrícula. Además normalmente no se superponen, no existe una pila en la que unas se sitúen sobre otras. Y por último mencionaré que esta cuadrícula de ventanas suele abarcar todo el espacio de la pantalla, si bien en algunos casos —Ion, Awesome— puede reservarse un poquito de sitio en un extremo para colocar paneles o barras de información.

Ésta es la idea general, vamos. Centrémonos ahora en detalles más concretos.

El autor se inspiró en Dwm para dar forma a Nwm, y en lo más esencial ambos gestores funcionan del mismo modo. Existen cuatro modalidades de trabajo, entre las que el usuario alterna pulsando [Windows] y [Espacio]:


Captura de Nwm

Un mosaico con división vertical de la pantalla. A la izquierda una ventana ocupa toda el área principal —en Nwm no pueden ser más—, y a la derecha esperan otras dos, en este caso terminales recién abiertas.


Mosaico con división vertical:
La mitad izquierda de la pantalla —área principal— se reserva para mostrar una ventana a gran tamaño; las restantes compartirán la zona de pila, a la derecha. Nótese que he hablado de mitades pero la proporción entre ambas partes del mosaico puede cambiarse.
Mosaico con división horizontal:
Opera del mismo modo que el anterior, aunque esta vez el área principal se sitúa arriba y la de pila abajo.
Ventanas maximizadas:
También llamada «monóculo», como en Dwm. Consiste en mostrar una ventana, la que ocupe el área principal en los mosaicos anteriores, a pantalla completa.
Cuadrícula:
El espacio del escritorio intenta repartirse equitativamente entre las ventanas abiertas, así que la distinción entre zona principal y de pila deja de aplicarse. Cuando el número de ellas es impar queda, por necesidad, una más grande que las demás.

Nwm ofrece también escritorios virtuales, nueve para ser precisos. En cada uno de ellos puede emplearse cualquiera de los modos de trabajo que acabo de describir.

El gestor recurre a un fichero de configuración para guardar algunas preferencias —atajos de teclado, qué ejecutar al pulsar [Windows], [Mayúsc] y [Return]—. Éste es ~/.nwm-user.js, oculto en la carpeta raíz del usuario, y por supuesto consiste en código Javascript; ¿esperaba alguien otra cosa? A decir verdad Nwm no resulta muy maleable, y por lo tanto hay poco que toquetear en dicho archivo.

¡Y con esto terminamos, amigos! Toda posible característica que no se haya mencionado ya, no se incluye en el gestor. Por ejemplo, ¿manejo de ventanas flotantes? ¡No! ¿Ventanas «pegajosas», visibles en todos los escritorios virtuales? La duda ofende: ¡tampoco! Y así sucesivamente.

Instalación

Pese a la apariencia exótica de Nwm no es complicada. Primero hay que obtener el entorno de ejecución Node.js, que figurará en los repositorios de software de casi cualquier distribución de Linux o variante de BSD; también cabría la posibilidad de ir por libre e instalarlo a partir del código fuente, lo cual no resulta complicado pero requiere algo de tiempo. Y una vez completado este paso, basta con teclear en una terminal:

# npm install -g nwm

Node.js incluye su propio sistema de administración de paquetes, y esta orden recurre precisamente a él para descargar e instalar Nwm.

Primeras impresiones

¡Eh, es como Dwm!


Captura de Nwm

Ocho ventanas dispuestas en la modalidad de cuadrícula, compartiendo la pantalla como buenas hermanas: arriba, a la derecha, una demo sobre eversión de esferas . No se trata de un arreglo muy habitual.


Bueno, no exactamente. Es como Dwm..., pero más cutre. De hecho tras cinco minutos de uso me recordó más a 2wm, el hermano pequeño y pobretón de aquél.

No existe barra de estado en la que mostrar información sobre el sistema: malas noticias para mí, que me gusta tener fecha y hora siempre visibles. Traté de remediar esto ejecutando Mdgclock , un diminuto reloj gráfico que puede dejarse en un rinconcito del escritorio sin que moleste. Y entonces descubrí que Nwm carece también de soporte para ventanas flotantes: porque Mdgclock, una aplicación que normalmente consiste en un rectangulito de 90x20 píxeles, apareció tratando de llenar de forma absurda una de las celdas del mosaico —¡aargh!—. No, no, esto no... Probemos Xclock, que quizás se adapte mejor a ser encajado en recuadros de dimensiones variables.

Hasta el momento he probado cerca de una decena de gestores de mosaico, entre ellos algunos tan austeros como 2wm o Larswm. Todos incluyen funcionalidad, aunque mínima, para manejar ventanas flotantes. Nwm es el primero que encuentro que NO lo hace. Y se me antoja una carencia importante porque hay programas —GIMP, por citar uno— exigentes con el tamaño de sus interfaces, y que no resultan muy cómodos cuando se los confina a un mosaico.

Sigamos... Nwm adorna cada ventana con un discretísimo borde gris de un píxel de grosor, y cuando ésta reciba el foco adoptará un suave tono de verde. A estas alturas de la vida es para mí una decoración difícil de apreciar, y hubiese preferido un modo más obvio de destacar la ventana enfocada. De hecho busqué cómo cambiar esto. Examiné mi archivo ~/.nwm-user.js, sin resultados; no se trata pues de un detalle que al usuario se le permita modificar de un modo sencillo. Póngase aquí una carita triste, o algo.

Resumiendo: no hay barra de estado, ni la opción de usar de forma ocasional ventanas flotantes, ni apenas funcionalidad... Me quedó claro pues que Nwm es un gestor muy básico que Mikido Takada escribió principalmente como experimento.

Usando Nwm


Captura de Nwm

Otro mosaico dispuesto en cuadrícula. Nwm respeta las dimensiones de ventanas temporales como la de Xwrits —abajo, en el centro—, que en algunos casos aparecen en una celda pero sin llenarla. Por eso tras ella se ve el fondo del escritorio.


Vale, debo reconocer que en mi caso esa ausencia de ventanas flotantes supone en realidad un incordio menor: no cargo GIMP ni trabajo con imágenes todos los días. Casi todo mi tiempo delante del ordenador se invierte en leer y escribir, y por su naturaleza el texto se adapta muy bien a las celdas de un mosaico. Además, para recrearme en mi colección de fotografías siempre puedo poner a GQview a pantalla completa, gracias a la modalidad de «monóculo» que también posee Nwm. De modo que para mí se trata al final de una molestia tolerable; otras personas, claro, tendrán otras necesidades.

Existen más restricciones que ya he mencionado. Una ventana en el área principal, una, y sólo una; no me parece el colmo de la usabilidad —en sesiones concurridas con Dwm a mí a veces me gustaba colocar dos—, y quizás en monitores más grandes que el mío suponga un despilfarro de espacio. No obstante esta desventaja se ve mitigada por la existencia de la modalidad de «cuadrícula», que tomando el número de ventanas abiertas intenta dividir la pantalla en casillas homogéneas.

Podría seguir enumerando limitaciones: no resulta posible saltar de una ventana a otra cuando las muestras a pantalla completa, no hay opción de hacer una ventana visible en todos los escritorios virtuales... Nwm es un entorno rígido, y como gestor de mosaico un tanto rudimentario.

Eso sí, funciona con agilidad, responde instantáneamente a los comandos del usuario. No se percibe tan ligero como Dwm o 2wm, pero es que yo me esperaba una interfaz lenta arrastrándose con la pesadez de un brontosario; imagino que porque asocio Javascript con esas páginas web inutilizables que consiguen que mi ordenador adquiera la temperatura de una supernova. En el caso de Nwm tal reputación se ha revelado inmerecida, aunque de todos modos Node.js no sea la herramienta más eficiente para escribir un gestor de ventanas.

En algunas de las capturas que adornan este texto veréis algo similar a una barra de estado en el borde inferior del escritorio. Se trata de una chapuza mía: modifiqué los algoritmos que regulan los mosaicos —en una instalación normal de gestor, los archivos dentro del directorio /usr/local/lib/node_modules/nwm/lib/layouts— para que dejasen en ese lugar, siempre, un espacio libre de dieciséis píxeles de alto. Y en él pude por fin colocar un texto con la fecha y la hora, gracias a OSD Clock . Hacer este cambio me costó unos instantes porque el código implicado resulta simple y muy comprensible. Y quizás ésta sea la única ventaja que destacaría del empleo de Javascript en Nwm: se trata de un lenguaje de programación relativamente accesible para un aficionado y que se presta de forma natural a experimentos. Aunque la verdad es que después de mi experiencia con Awesome me desenvuelvo mejor en Lua.

La otra virtud de Nwm que señalaría se deriva de su simplicidad: hablamos de un gestor de ventanas limitado, con las funciones mínimas, y por lo tanto el aprendizaje que le impone al recién llegado es corto y rápido. Su manejo se realiza fundamentalmente con el teclado —en principio incluso cabe la posibilidad de no utilizar ratón—, mas las combinaciones de teclas a dominar apenas suman una decena y son bastante lógicas. Ninguna queja aquí.

Ah, en este gestor no se incluyen menús de aplicaciones. Se espera del usuario que conduzca sus sesiones desde la terminal, y de hecho en la configuración inicial pulsar [Windows], [Mayúsc] y [Return] invoca una nueva ventana de Xterm. La mayoría de la gente querrá usar en su lugar un lanzador como Xfrun4, Xrun o similar: yo siempre recomendaré Dmenu .

Poco me queda que analizar ya. He utilizado Nwm durante dos semanas. Sí, se puede, llegas a acostumbrarte, aunque se trate de un entorno más bien árido. Quien haya probado otros gestores de mosaico —Wmii, Awesome— tal vez sienta la experiencia como cambiar un hacha de acero por otra de sílex para cortar leña.

Opciones de personalización


Captura de Nwm

División horizontal de la pantalla, el área principal queda arriba. Estoy usando GIMP. Hice un apaño el código Javascript del gestor para que dejase un hueco libre en el extremo inferior, que aprovecho para colocar la fecha y la hora.


Salvo que conozcas Javascript y el código del gestor en profundidad, escasas. Las accesibles en el fichero ~/.nwm-user.js van referidas a los atajos de teclado, los tipos de mosaicos a utilizar y el programa que se ejecutará al pulsar [Windows], [Mayúsc] y [Return].

Documentación

El archivo readme.md, normalmente guardado en /usr/local/lib/node_modules/nwm, explica sin mucho detalle lo necesario para funcionar. En el subdirectorio docs hay información más específica, que probablemente sólo interesará a los deseosos de modificar a fondo Nwm.

Aciertos

Inconvenientes

Conclusión

Nwm es básico y poco refinado, pero usable. Su mayor aliciente reside quizás en el hecho de estar programado con Javascript, y eso sólo interesará a los aficionados a dicho lenguaje. Al resto no le ofrece nada que no incluyan también otros proyectos similares, y los usuarios deseosos de probar algún gestor de mosaico probablemente harían mejor instalando Dwm, que es de los que más se acercan a éste en funcionalidad.

Ah, y Dwm consume alrededor de 1'5 MB de memoria RAM en un Linux de 32 bits, mientras que el más moderno Nwm para hacer lo mismo —siendo muy generosos— requiere doce veces más. La informática, siempre en evolución.

Galería de imágenes

Algunas capturas más para contemplar a Nwm en acción:

Captura de Nwm

Ocupando el área principal, Dieplaneten es eso, un planetario. Su ventana se halla enfocada, como indica un borde verde de un píxel que yo apenas veo.

Captura de Nwm

Y éste es el modo de ventanas maximizadas, del que no hay mucho que decir. Bueno, resulta incómodo porque sólo amplía la ventana que en un mosaico previo se situase en el área principal, y no permite seleccionar otras.

Captura de Nwm

XMMS, siempre a su aire... Nwm le reserva una celda del mosaico —en este caso, toda el área principal— que el programa no puede llenar.

Captura de Nwm

El emulador E-UAE con todo el escritorio para él solo: la interfaz de configuración debajo, un tanto estirada, y la ventana del sistema emulado arriba, en el área principal.

Captura de Nwm

Reservar una celda del mosaico para Xclock no me acaba de gustar, pero Nwm carece de barra de estado y tampoco maneja ventanas flotantes, así que ésta se me antojó al principio la solución menos mala.

Captura de Nwm

Mi escritorio musical, con Herrie a la derecha y un control de volumen —Xtmix— a la izquierda. Éste luce un tanto extraño en una ventana tan grande, claro.

 

Artículo escrito el 3 de septiembre de 2017.


[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.