dwm (Dinamic Window Manager)

Como verán, sigo en mi necedad de estar probando manejadores de ventanas en mi instalación de Fedora, y esta vez le tocó el turno a dwm (dinamic window manager), que no es más que un manejador de ventanas para la X, de lo más simple y liviano, hecho en C y con la característica de no exceder las 2000 líneas de código fuente. Trabaja con ventanas en modo monóculo, flotante y tiled cascada separadas en el mismo cliente. Dwm no tiene configuraciones aparte, todo va en su codigo fuente.

Lo interesante aquí es que a dwm no lo van a encontrar en los repos de Fedora. Por tanto no hay otra opción más que compilarlo vía código fuente.

Para eso necesitaremos los encabezados de las librerías de la X, sino las tenemos:

sudo yum install libX11-devel

Pero también necesitamos las herramientas de desarrollo para compilar. Si mal no recuerdo eso quedaría solucionado con un simple

sudo yum groupinstall "Development Tools"

Luego de eso nos descargamos la fuente desde el sitio oficial de dwm (o sea aquí). También vamos a necesitar dmenu (por aquí).

Esto es lo interesante: la configuración. Previo a compilar dwm necesitamos copiar el archivo config.def.h a config.h de la siguiente manera:

cp config.def.h config.h

luego lo editamos

vim config.h

yo sólo he modificado lo que respecta a “/* appearance */”, “/* tagging */” y “/* layout(s) */”, el resto lo he dejado intacto.

/* See LICENSE file for copyright and license details. */

/* appearance */
static const char font[]            = "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#333333";
static const char normbgcolor[]     = "#051121";
static const char normfgcolor[]     = "#FFFFFF";
static const char selbordercolor[]  = "#1793D1";
static const char selbgcolor[]      = "#1793D1";
static const char selfgcolor[]      = "#ffffff";
static const unsigned int borderpx  = 1;        /* border pixel of windows */
static const unsigned int snap      = 32;       /* snap pixel */
static const unsigned int gappx     = 6;        /* pixel gap between clients */
static const Bool showbar           = True;     /* False means no bar */
static const Bool topbar            = True;     /* False means bottom bar */

/* tagging */
static const char *tags[] = { "term/chat", "msn/term", "work/play", "vbox/www", "misc" };

static const Rule rules[] = {
	/* class      instance    title       tags mask     isfloating   monitor */
	{ "Gimp",     NULL,       NULL,       0,            True,        -1 },
	{ "Firefox",  NULL,       NULL,       1 << 8,       False,       -1 },
};

/* layout(s) */
static const float mfact      = 0.55; /* factor of master area size [0.05..0.95] */
static const Bool resizehints = True; /* True means respect size hints in tiled resizals */

static const Layout layouts[] = {
	/* symbol     arrange function */
	{ "[F]",      NULL },    /* first entry is default */
	{ "[T]",      tile },    /* no layout function means floating behavior */
	{ "[M]",      monocle },    /* uses entire client to draw windows */
};

o simplemente usan el config.h que estoy usando ahora mismo, que tiene las combinaciones de teclas  por defecto y que le he modificado lo que ya señalé. Los espacios de trabajo por defecto vienen numerados del 1 al 9, y el modo de uso de las ventanas viene señalado por defecto con símbolos. Guardamos los cambios en vim (ESC, :wq!) y compilamos.

Para dwm:

sudo make clean install

lo mismo para instalar dmenu.

Como hemos compilado dwm, al cerrar sesión e intentar iniciarla en dwm no vamos a encontrar la opcion en el gdm, kdm o cualesquiera que usemos. Para eso necesitamos crear la entrada.

Usando vim o cualquier otro editor

sudo vim /usr/share/xsessions/dwm.desktop

pegamos esto

[Desktop Entry]
 Encoding=UTF-8
 Name=dwm
 Comment=This session starts dwm
 Exec=/usr/local/bin/dwm
 Type=Application

guardamos y cerramos.

Al cerrar sesión ya vamos a encontrar la opcion de abrir la nueva en dwm. Y como necesito algunas aplicaciones corriendo desde mi sesión en dwm, pues me hice un script bastante sencillo para resolver ese problema, y lo ejecuto cada vez que uso dwm, porque no he encontrado otra manera mas práctica de hacerlo.

Aquí el script por si les interesa.

#! /bin/sh
fbsetbg /home/teoten/Desktop/.dwmdesk/dwm-grad.png &
dropbox start &
xscreensaver &
while true
do
 xsetroot -name  "$(date +"%a %b %d %r")"
 sleep 1s
done &
gkrellm &

Recuerden editar lo que no corresponda (aplicaciones y usuario). Vale decir que en la barra de dwm no hay siquiera hora y fecha, y que no hay como cambiar el fondo o wallpaper, por eso uso “fbsetbg” (es una herramienta de Fluxbox), pero también pueden usar “xsetroot” (ver man).

Sobre las combinaciones de teclas, les recomiendo echarle un ojo al manual.

man dwm

o usar el que viene por defecto segun mi teclado.

Algo particular es que Mod1 es mi tecla Alt(Izq). No sé si depende del tipo de teclado. Les dejo un pantallazo mientras terminaba de editar esta entrada de blog.

Espero les sea de utilidad.

2 comentarios en “dwm (Dinamic Window Manager)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s