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第二個標籤,依此類推。

相關內容