dwm - Alle Fenster für ein Tag schließen

dwm - Alle Fenster für ein Tag schließen

IndwmGibt es eine Möglichkeit, alle Fenster mit einem bestimmten Tag zu schließen? Beispiel: Ich würde gerne alle mit 2 markierten Fenster schließen.

Dies würde die Funktion „Arbeitsbereich beenden“ simulieren, die in vielen anderen Fenstermanagern mit Kachelfunktion verfügbar ist.

Antwort1

Dwm verfügt standardmäßig nicht über diese Funktionalität.

Sie können eine Datei mit dem Namen erstellen wipetag.cund Folgendes hinzufügen:

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);
      }
    }
  }
}

Fügen Sie die Datei ein in config.h:

#include "wipetag.c"

Anschließend können Sie eine Verknüpfung hinzufügen, die die wipetagFunktion aufruft:

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

Durch Hinzufügen des Arguments .i = 0wird das erste Tag gelöscht, .i = 1das zweite und so weiter.

verwandte Informationen