在数据管理有没有办法杀死带有特定标签的所有窗口?示例想要杀死所有标记为 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
第二个标签,依此类推。