dwm: elimina todas las ventanas de una etiqueta

dwm: elimina todas las ventanas de una etiqueta

Endwm¿Hay alguna manera de cerrar todas las ventanas con una etiqueta en particular? Al ejemplo le gustaría eliminar todas las ventanas etiquetadas con 2.

Esto simularía la función de eliminación del espacio de trabajo que está disponible en muchos otros administradores de ventanas en mosaico.

Respuesta1

Dwm no tiene esa funcionalidad de forma predeterminada.

Puede crear un archivo llamado wipetag.cy agregar lo siguiente:

static void wipetag(const Arg *arg);

void wipetag(const Arg *arg) {
  Client *c;

  for (c = selmon->clients; c; c = c->next) {
    if (c->tags & 1 << arg->i) {
      if (!sendevent(c, wmatom[WMDelete])) {
        XGrabServer(dpy);
        XSetErrorHandler(xerrordummy);
        XSetCloseDownMode(dpy, DestroyAll);
        XKillClient(dpy, c->win);
        XSync(dpy, False);
        XSetErrorHandler(xerror);
        XUngrabServer(dpy);
      }
    }
  }
}

Incluya el archivo en config.h:

#include "wipetag.c"

Luego puedes agregar un atajo que llame a la wipetagfunción:

 static Key keys[] = {
    { Mod1Mask|ShiftMask,    XK_1,             wipetag,          {.i = 0} },

Agregar el argumento .i = 0borrará la primera etiqueta, .i = 1la segunda y así sucesivamente.

información relacionada