dwm - Закрытие всех окон для тега

dwm - Закрытие всех окон для тега

Вдвместь ли способ убить все окна с определенным тегом? Пример: хотелось бы убить все окна с тегом 2.

Это имитирует функцию закрытия рабочего пространства, доступную во многих других оконных менеджерах.

решение1

По умолчанию Dwm не имеет такой функциональности.

Вы можете создать файл с именем wipetag.cи добавить следующее:

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

Включить файл в config.h:

#include "wipetag.c"

Затем вы можете добавить ярлык, который вызывает wipetagфункцию:

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

Добавление аргумента .i = 0сотрет первый тег, .i = 1второй и т. д.

Связанный контент