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第二个标签,依此类推。

相关内容