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.c
und 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 wipetag
Funktion aufruft:
static Key keys[] = {
{ Mod1Mask|ShiftMask, XK_1, wipetag, {.i = 0} },
Durch Hinzufügen des Arguments .i = 0
wird das erste Tag gelöscht, .i = 1
das zweite und so weiter.