dwm

# yum install dwm

Cuando se intenta organizar ventanas en otros entornos de escritorio, la mayoría son una pesadilla, pruebe dwm, hiperligero, sólo para geeks. dwm consiste de un único binario de 54k (el distribuido por Fedora) que sólo se puede personalizar recompilando los fuentes. Ya veremos más adelante que en Fedora esto se puede hacer fácilmente.

Al comenzar ni sabrá cómo arrancar su primera aplicación, la documentación (man dwm) dice Mod4-Shift-Return para arrancar uxterm, eso se traduce usualmente a:

TeclaWin+Shift+Enter

uxterm es un envoltorio para xterm, un emulador de terminal para X, ambos provistos por el paquete xterm.

A partir de ahí puede arrancar sus aplicaciones, si, desde un terminal, no olvide agregar el & para dejarla en el fondo, por ejemplo.

$ totem &

dmenu: lanzador de aplicaciones

dmenu es un menú dinámico para X (lanzador de aplicaciones).

# yum install dmenu

Para usarlo en dwm Fedora presione:

TeclaWin+p

Aparecerá un menú en la parte superior, en la medida que tipee se reducirán las opciones, termina tu selección, o navega con las teclas flecha, presiona enter y listo, su aplicación será iniciada, incluso puede utilizar tab para autocompletar.

dwm-user

dwm-user incluye los fuentes de dwm y el guión de arranque dwm-start.

# yum install dwm-user

Login

El paquete dwm provee una entrada /usr/share/xsessions/dwm.desktop y el paquete dwm-user incluye /usr/share/xsessions/dwm-user.desktop. La única diferencia es el modo de arranque.

dwm.desktop dwm-user.desktop
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=dwm
GenericName=Window Manager
Comment=Dynamic window manager for X
Exec=dwm
Terminal=false
TryExec=dwm

[Window Manager]
SessionManaged=true
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=dwm-user
GenericName=Window Manager
Comment=Dynamic window manager for X (user configuration)
Exec=dwm-start
Terminal=false
TryExec=dwm-start

[Window Manager]
SessionManaged=true

dwm-start es el método de arranque preferido para DWM en Fedora ya que entonces podrá personalizar su entorno, esto significa compilar su versión de DWM con su versión de las cabeceras en su directorio personal sin intervención manual, ¡cool!.

Keybindings

Layouts

       Mod4-t Poner la disposición tiled (cuadros).

       Mod4-f Poner la disposición a floating (flotante).

       Mod4-m Poner la disposición a monocle (monóculo).

       Mod4-Shift-space Conmuta la disposición de estado de la ventana enfocada entre tiled y flotante.

Navegar entre ventanas

       Mod4-j Cambiar/enfocar la próxima ventana.

       Mod4-k Cambiar/enfocar la ventana previa.

       Mod4-Tab Cambia a los tags previamente seleccionados.

Area maestra

       Mod4-h Decrementa el tamaño del área maestra.

       Mod4-l Incrementa el tamaño del área maestra.

       Mod4-Return Cicla/aumenta la ventana enfocada desde/hacia el área maestra (sólo en disposición de cuadros).

Más detalles en dwm area maestra.

Salir/cerrar

       Mod4-Shift-c  Cerrar la ventana enfocada.

       Mod4-Shift-q  Salir de dwm.

Poniendo los tags a las ventanas

       Mod4-Shift-[1..n] Aplica el tag n a la ventana enfocada.

       Mod4-Button1-tagicon Aplica el tag n a la ventana enfocada (haga clic en la barra con botón izquierdo)

       Mod4-Button2-tagicon Agrega el tag n a la ventana enfocada (haga clic en la barra con botón derecho)

       Mod4-Shift-0 Aplica todos los tags a la ventana enfocada.

Dos pantallas

Para navegar cuando hay más de una pantalla:

  • Mod4-, cambia el foco a la pantalla previa.
  • Mod4-. cambia el foco a la pantalla próxima.

Para enviar una app de una pantalla a otra tiene las siguientes tres opciones:

  • En modo flotante, se puede simplemente arrastrar la ventana de una pantalla a otra.
  • Mod4-Shift-, envía la ventana con el foco a la pantalla previa, si hay alguna.
  • Mod4-Shift-. envía la ventana con el foco a la próxima pantalla, si hay alguna.

Pantallazos

Nunca hay espacio desperdiciado "en el escritorio".

Hacks

Terminal no cubre el espacio disponible

Esto hasta donde sé es provocado por el despliegue de las tipografías en el emulador de terminal. Puede cambiar el tamaño de tipografía (font) hasta encontrar una que se acomode o puede deshabilitar los resizehints en el redimensionado.

~/.dwm/config.h

static const Bool resizehints = False; /* True means respect size hints in tiled resizals */

Antes

Después

stalonetray systray

stalonetray es un systray simple, punto.

~/.dwm/config.h

static Rule rules[] = {
/* class instance title tags mask isfloating */
{ "stalonetray", NULL, "stalonetray", ~0, False },
};

Esto asegura que stalonetray sea visible a lo largo de todos los tags.

terminator en vez de uxterm

Mod4-Shift-Return de caja arranca uxterm, deseo cambiar eso a terminator

~/.dwm/config.h

1/*static const char *termcmd[]  = { "uxterm", NULL };*/
2static const char *termcmd[]  = { "terminator", NULL };

tags con nombres

Tener los tags simplemente numerados es conveniente, pero tal vez sienta la necesidad de ponerles un nombre.

~/.dwm/config.h

/* tagging */
static const char *tags[] = { "term", "web", "email", "chat", "fm", "mmx", "7", "8", "9" };

Foco sigue al ratón, deshabilitar

No me gusta la idea de que el movimiento del ratón defina el foco de las ventanas, suele provocarme problemas por la sensibilidad de los touchpad y de los ratones ópticos que "se mueven solos" entonces cambian el foco de la ventana a una ventana que nada que ver con lo que estoy trabajando. En este caso debe comentar una declaración en el código fuente.

/usr/src/dwm-user-5.8.2-9.fc15/dwm.c

1      [DestroyNotify] = destroynotify,
2/*      [EnterNotify] = enternotify, */
3      [Expose] = expose,

Y forzar una compilación, yo resolví ajustando ficticiamente por ejemplo un nombre de un tag y luego devolviendo el cambio (no estoy seguro que el sistema de construcción de dwm en Fedora note mis cambios en dwm.c).

Dos monitores al vuelo

Si iniciamos sesión DWM con los dos monitores encendidos en Fedora no hay problemas todo funciona al pelo, sin embargo, puede que necesite conectar y encender el segundo monitor una vez ya iniciada la sesión, por supuesto no queremos reiniciar nuestra sesión DWM. Casualmente me tropecé con esta circunstancia y reusé un pequeño script xrandr, la sorpresa es que no tuve que hacer nada con DWM, simplemente apareció el segundo monitor con sus nueve tags listo para trabajar. En resumidas, sólo debe configurar para detectar el segundo monitor, el script abajo es la forma que usé en mi laptop:

~/xrandr

xrandr --output VGA1 --mode 1280x1024
xrandr --output LVDS1 --mode 1280x800
xrandr --output VGA1 --left-of LVDS1

~/xrandr-alreves

xrandr --output VGA1 --mode 1024x768
xrandr --output LVDS1 --mode 1280x800
xrandr --output VGA1 --right-of LVDS1

La primera forma es para que el segundo monitor quede al lado izquierdo del primero, la segunda, al revés.

Aplicaciones systray

Ya sea con stalonetray o cualquier otro panel que incorpore un systray para el sistema, seguro deseará usar algunas de las siguientes aplicaciones:

  • nm-applet : applet para systray de Network Manager, le facilitará conectarse a redes.
  • PNMixer : mezclador de audio para el systray, le permitirá ajustar el volumen.
  • Empathy , cliente chat.
  • Pidgin , cliente chat.
  • batti, monitor de batería, suspender, hibernar.

Mi configuración feliz

Esta sección es para poner "mi configuración", mis ajustes, mis aplicaciones preferidas que se ajustan a mi manera de trabajar en dwm.

  • Ya no uso panel, anteriormente experimenté/usé...
    • fbpanel configurado a lo mínimo, no toma foco y se esconde solo, lo veo cuando quiero :).
    • lxpanel configurado a lo mínimo, necesita tal vez algunos ajustes pero me es útil.
  • Información en el escritorio y notificaciones
    • Para información en el escritorio, uso scripts propios Ruby para mostrar fecha/hora y estado de la batería, me falta indicador de la conexión de red.
    • Comenzando a usar dunst como servidor de notificaciones.
  • dmenu como lanzador de aplicaciones.
  • urxvt con tmux remplaza a terminator, terminator es magnífico, pero no me ayuda a avanzar con tmux que es un multiplexor de terminales.
  • tmux multiplexor de terminales.
  • weechat como cliente irc y xmpp (en proceso de migrarme desde pidgin).
  • vifm es mi gestor de archivos para consola preferido.
  • pcmanfm es mi gestor de archivos gui preferido, seguido de nautilus.
  • totem y/o xine para ver películas y videos en general.
  • cmus como reproductor de audio y radio.
  • nmcli y mis scripts para conectarme a redes, no más nm-applet para conectarme a redes.
  • uzbl es mi explorador web preferido, seguido de Firefox, uno es muy ligero y el otro es el peso pesado.
  • batti para vigilar la batería de mi laptop, suspender e hibernar (TODO, conseguir remplazo).
  • radiotray para escuchar radio en línea, es una aplicación para systray.
  • su -c "pm-suspend" para suspender mi laptop.
  • Pendiente bloqueo de pantalla.

Un par de pantallazos, por supuesto.

Así se ve mi dwm hoy día

Ejemplo usando lxpanel

Referencias

Páginas hijas

Pendientes

Algunas cosas pueden no tener ya validez pero mantengo para luego revisar.

  • Al usar tint2 este es sujeto de foco de ventana, quiero evitar ello ya que no deseo pasar por tint2 para llegar a otra aplicación, es en realidad el primer punto fastidioso para mi en el uso de dwm. Si tint2 aparece en todos los tags (algo deseable), entonces es sujeto de tener el foco, es una "ventana más flotante" (stalonetray sufre igual).
  • Con dos pantallas, en mi Fedora funciona perfecto, incluso mover las apps de una pantalla a otra, BUT, cómo etiqueto una app para que esté en la "otra" pantalla. En las dos pantallas tengo el panel con los 9 tags individuales del 1 al 9.
  • dmenu no se muestra correctamente, en mi laptop cuando arranco con dos monitores, dmenu no se muestra correctamente, el reconectar físicamente el segundo monitor repara la falla, es algo con el X o el propio dwm.

dwm-2.png (463.8 kB) Guillermo Gómez, 06/09/2011 01:03 am

dwm-3.png (424.8 kB) Guillermo Gómez, 07/18/2011 05:37 pm

dmenu-dwm.png (14.5 kB) Guillermo Gómez, 07/23/2011 10:09 am

dwm-tags-nombres.png (5.2 kB) Guillermo Gómez, 07/23/2011 11:52 am

dwm-1.png (299.9 kB) Guillermo Gómez, 06/02/2012 09:10 am

dwm-urxvt-si-ocupa-todo-el-espacio.png (192.8 kB) Guillermo Gómez, 07/24/2012 10:34 am

dwm-urxvt-no-ocupa-todo-el-espacio.png (155.8 kB) Guillermo Gómez, 07/24/2012 10:35 am

dwm-lxpanel.png (106.4 kB) Guillermo Gómez, 07/24/2012 12:08 pm

dwm-happy-config.png (341.7 kB) Guillermo Gómez, 08/04/2012 12:04 pm

dwm-4.png (178.4 kB) Guillermo Gómez, 02/13/2013 09:48 am