DWM, uno de los gestores de ventanas más eficientes

Desde hace unos cuantos años ando usando gestores de ventanas muy ligeros. Comencé con Fluxbox, luego OpenBox al instalar la distribución CrunchBang, de ésta pasé a Xmonad y por último, DWM, gestor de ventanas en el que se basa Xmonad. De hecho, Xmonad es un clon de DWM escrito en Haskell en lugar de C.

Dicho lo anterior, considero que he probado unos cuantos gestores como para llegar a la conclusión (personal, por supuesto), de que DWM sin duda es el mejor de todos, sobre todo en cuanto a eficiencia y capacidad de personalización. En éste artículo trataré de explicar paso a paso cómo instalarlo y realizar una pequeña introducción a su uso.

Instalación

En este caso, no se va a instalar DWM de la manera convencional a través de apt, clonaremos directamente su repositorio, para ello:

$ git clone http://git.suckless.org/dwm

Una vez descargado, nos metemos en el directorio. El fichero más importante en términos de configuración es config.def.h. En dicho fichero se realizarán todas las modificaciones. Ojo, éste fichero es el que viene por defecto, para poder compilar es necesario que el fichero se llame config.h. Una vez ejecutemos make, él se encargará de crearlo si no existe.

Antes de continuar, quizá sea interesante instalar unas cuantas herramientas, como por ejemplo dmenu, que permitirá lanzar cualquier programa. Para ello ejecutamos:

sudo apt-get install suckless-tools

Cambios a realizar antes de compilar

Antes de compilar, sería ideal cambiar como mínimo qué terminal queremos que DWM ejecute al pulsar ALT+Shift+Enter. Para ello modificamos en el fichero config.def.h, (o config.h si ya has creado la copia) la siguiente línea:

static const char *termcmd[]  = { "st", NULL };

Por vuestro terminal preferido, en mi caso Terminator:

static const char *termcmd[]  = { "terminator", NULL };

Aún queda hacer alguna cosa más antes de instalar. Crear una sesión de DWM que nos permita ejecutarlo al entrar en el sistema. Nos hará falta un fichero que llamaremos dwm.desktop y colocaremos en /usr/share/xsessions, el contenido debe ser el siguiente:

[Desktop Entry]
Encoding=UTF-8
Name=Dwm-personalized
Comment=Dynamic window manager
Exec=dwm-personalized
Icon=dwm.png
Type=XSession

A su vez, crearemos un script que será ejecutado al entrar en ésta sesión, llamado dwm-personalized al que daremos permisos de ejecución y su contenido serán la ejecución de todos los programas que queramos ejecutar al inicio. El mío por ejemplo es:

#!/bin/bash
 
# setting keyboard layout /usr/share/X11/xkb/rules/base.lst
setxkbmap us intl
 
xset +fp /usr/share/fonts/local
xset fp rehash
 
nm-applet &
parcellite &
xfce4-volumed &
 
#Set status bar & start DWM
dwmstatus &
 
exec dwm

El script debe guardarse en /usr/bin con permisos de ejecución:

chmod +x dwm-personalized

Compilación e instalación

Ahora sí, dentro del directorio donde se encuentra DWM compilamos e instalamos:

sudo make clean install

Tras esto, salimos del gestor de ventanas actual y entramos con DWM.

Guía de uso

Una vez dentro, con Alt+Shitf+Enter se ejecutará el terminal definido anteriormente. Los comandos básicos son

– [Shift]+[Alt]+[Enter] – Lanzar la terminal
– [Alt]+[p] – Lanzar dmenu
– [Alt]+número del 1 al 9 – moverse entre las distintas etiquetas (o escritorios)
– [Shift] + [Alt] + número – Mover la ventana al número indicado
– [Alt] + [Shift] + c – Cierra la ventana actual

Exiten por defecto 3 tipos de layout, Tiled ([Alt] + t), Monocle ([Alt] + m) que muestra a pantalla completa una ventana, y podemos navegar entre ellas con [Alt] + j o [Alt] + k, y, por último Floating, para mover y redimensionar las ventanas a nuestro gusto.

Todos los atajos de teclado están en el fichero config.def.h, y allí será donde declaremos los nuevos.

Si prefieres usar la tecla de windows en lugar de [Alt], basta modificar la línea

#define MODKEY Mod1Mask

por

#define MODKEY Mod4Mask

y recompilar.

Modificando DWM a nuestro antojo

Existen multitud de parches que se pueden aplicar a DWM en su web oficial (http://dwm.suckless.org/patches/). Sin embargo uno de los más llamativos, colorear la barra de estado, no está disponible para la última versión (6.1). Yo he intentado escribir uno y actualmente funciona bastante bien. Se encuentra en github.com/algui91/myDWM y es tan fácil de ejecutar como descargarlo y escribir:

git apply dwm-6.1-simplestatuscolor.diff

Para usarlo es necesario usar dwmstatus y formatear el estado como sigue.

El parche tiene 7 colores, para indicar el color a usar se debe escribir el caracter \xCL al final del texto a colorear, donde CL es un dígito del 01 al 07. Por ejemplo, usando los tres primeros colores:

status = smprintf("L:%s\x01 A:%s\x02 U:%s %s\x03", avgs, tmar, tmutc, tmbln);

Coloreará L:%s con el color 1, L:%s con el color 2 y U:%s %s con el color 3.

Si quieres conocer los detalles de programación sobre el parche puedes consultar éste artículo.

Comentarios finales

Espero que os haya gustado el artículo y os animéis a probar éste tipo de gestores de ventanas. Desde que los descubrí, no he vuelto a usar los gestores convencionales, y no los hecho en falta. Os dejo una captura de pantalla:


32 comentarios

  1.   nadie dijo

    probando comentario desde tor 🙂

    1.    pandev92 dijo

      Y esto, que tiene que ver con el artículo?

    2.    Yukiteru dijo

      ¿Con que fin usar TOR? ¿Seguridad? Jajajajajaaja

      https://blog.torproject.org/blog/tor-security-advisory-relay-early-traffic-confirmation-attack

  2.   Bono dijo

    En cuanto a consumo de RAM , ¿como es respecto al que viene por defecto en xfce?

    1.    Alejandro Alcalde dijo

      Buenas,

      He hecho las mediciones con lo básico en ejecución, el applet de la batería y las conexiones de red. Aquí los resultados:

      DWM: 140 MiB de 4Gib
      XFCE: 279 MiB de Gib

      1.    Bono dijo

        Muchisimas gracias, lo instalare entonces :D, justo estaba buscando reducir el consumo de ram.

      2.    Alejandro Alcalde dijo

        Espero que no te defraude 😉

    2.    dhunter dijo

      Bajo consumo de ram sin perder eyecandy? ===> IceWm+tint2+wbar

  3.   bmacf dijo

    Trataré de probarlo al salir de vacaciones… Siempre he sentido curiosidad por los WM, pero estoy demasiado acostumbrado a los DE… Y todo el lío de configurar desde 0 también es algo que me parece un poco tedioso, pero de eso me curé después de instalar Arch… xD

    1.    Alejandro Alcalde dijo

      Sí que es verdad que al principio es un poco tedioso, pero una vez te acostumbres… te va a costar volver a los DE. 🙂

  4.   eliotime3000 dijo

    Awesome Plz!

    1.    desikoder dijo

      Yo estuve un tiempo en awesome , pero no me convencio demasiado y volvi a mi querido y fiel openbox , por supuesto , configurado desde 0. Por configurar desde 0 me refiero a que en lugar del xml de configuracion de openbox que te viene por defecto en debian con el paquete openbox , lo he reescrito casi desde cero , declarando al detalle todas las funciones , por ejemplo , que al pulsar alt+f4 o al darle al aspa de cierre la ventana , que bordes permiten arrastrar la ventana y cuales redimensionarla ( yo en mi caso los bordes de abajo y de la derecha los tengo para redimensionar , los de arriba y la izquierda para arrastrar ) , y muchos detalles más. Tambien el tema de ventana , aunque estoy pensando en darle un nuevo look. En fin , que tiene mucho trabajo , de hecho llevo algunos años guardando mi configuracion de openbox , es una cosa que aprecio mucho y de la que hago backup si o si.

      Saludos !

  5.   BlackSheepX dijo

    bastaria con cambiar apt-get a pacman en comandos de instalacion y las modificaciones serian las mismas para usarlo en Arch?

    1.    Alejandro Alcalde dijo

      Nunca he usado Arch, pero supongo que sí. Ya que DWM se instala desde repositorio y el único paquete necesario, si que quiere usar dmenu, es suckless-tools.

    2.    Wada dijo

      No, la verdad no es igual en Archlinux no existe ese paquete de suckless-tools yo cuando lo instale, baje dwm, y dmenu, compilandolos desde 0, también puedes usar ABS que es mas recomendable, que usar pacman.

      Existe DWM en los paquetes de pacman pero no te recomiendo que lo instales de ahi, para que puedas compilar y modificar a tu gusto. 🙂

      1.    eliotime3000 dijo

        ¿Y qué tal Awesome?

      2.    Wada dijo

        Awesome no lo cambio Elio, me consume al arrancar solo 126MB es modular y programado en LUA, así que no necesito estar compilando para cada configuración hecha, y déjame decir que son 126MB por Slim hubo un tiempo que use login por TTY/Bash y al arrancar usaba 80MB aproximadamente.

      3.    eliotime3000 dijo

        Bueno, para la próxima, tendré que aprender a configurar Awesome con juegos de azar y mujerzuelas (#OkNo), y así, no tener que sufrir más bugs ni glitches de los entornos de escritorios (hasta ahora, XFCE, KDE 4.8 y GNOME 2 no me han decepcionado).

    3.    Alejandro Alcalde dijo

      Aquí hay una guía .https://wiki.archlinux.org/index.php/Dwm

  6.   gonzalemd dijo

    Gracias por la nota, en una oportunidad lo probaré. Saludos.

  7.   Dark Purple dijo

    ¿Hecho en falta?
    No hay que echar en falta la ortografía, por favor.

    1.    Alejandro Alcalde dijo

      Lo sé, perdona. Peropara cuando me dí cuenta ya no podía editar el artículo. :-(. Alguien podía corregirlo?

      1.    Alejandro Alcalde dijo

        Pero para* y si alguien podría*. (Las cosas de escribir desde el móvil y no poder editar.. XD)

  8.   illukki dijo

    Buen tuto. Mas temprano que tarde llegare a estos WM pero hay que dedicarle el tiempo necesario para aprender a dejarlo a gusto.
    Saludos.

  9.   debish dijo

    Yo he pasado por unos cuantos también y no me atrevo a decir siquiera cuál es “mejor” para mí. De los no tiling me gustan especialmente fluxbox y openbox y de los tiling, aunque me cuesta más elegir porque cada uno es un jodido y maravilloso mundo, diría que i3 y dwm. Me gustan más, que no quiere decir que sean mejores o peores…

    1.    Jesús Ballesteros dijo

      Exacto, es cuestión de gustos. A mi personalmente los WM de tiling no me gustan, a menos que seas programador claro está, para otras cosas se me hacen poco productivos o quizás sea yo el que no los sabe usar pero de ahi a decir que uno es mejor que otro volveríamos a las típicas flamewars de cuando la pelea era entre KDE y Gnome 😀

      1.    Bono dijo

        Cual es la diferencia entre los tiling y no tiling? Desde ya gracias.

      2.    Jesús Ballesteros dijo

        Hola Bono,

        Aqui está la explicación de los diferentes tipos de WM.

        https://wiki.archlinux.org/index.php/Window_Manager_%28Espa%C3%B1ol%29

        Este es un ejemplo de “Awesome” que es un tipo tiling.

        https://www.youtube.com/watch?v=4mMb7qXwhuU

        Un saludo.

  10.   m dijo

    dwm es un… perdón, dos dolores de pelotas: para cambiar cualquier cosa hay que tocar el código y recompilar – siempre suponiendo que sepas C.

    SpectrWM es la bomba papá!

  11.   juanfgs dijo

    Es interesante pero no logro verle el atractivo a estos gestores de ventanas esotéricos. Recompilar cada vez que querés cambiar algun comportamiento es bueno… un poco demasiado. Entiendo que hay gente algo obsesiva con el consumo de memoria, pero básicamente tener que reinventar la rueda cada vez… es poco práctico, y si la cuestión es poco consumo de memoria bueno… me parece que es como cortarse las piernas y decir “perdí 30 kilos de peso”.

    Fuera de eso sigue siendo interesante si te interesa aprender como funciona un WM sobre todo si es NetWM compliant.

    1.    Alejandro Alcalde dijo

      Es cuestión de gustos. Aunque realmente recompilar solo es ejecutar una línea (sudo make clean install) Y no es necesario reiniciar. Hay un parche por ahí que permite re-lanzar DWM pulsando MODKEY + q

  12.   Oscar Meza dijo

    Hola, ¿como se DWM a Fluxbox en cuanto a consumo de recursos de hardware?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *