默认情况下,dwm config.h
为每个布局提供一个键绑定。
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
我想在我的dwm配置中获取功能,这将以圆圈方式改变可接受的布局。
这样的事情:
static void circlesetlayout (const Arg *arg);
...
{ MODKEY, XK_space, circlesetlayout, {0} },
...
void
circlesetlayout (const Arg *arg) {
Arg finallayout;
if (Monitor.sellt == 2) {
finallayout.v = &layouts[0];
} else {
finallayout.v = &layouts[1];
}
setlayout (&finallayout);
}
但它没有按照我期望的方式发挥作用。
答案 0 :(得分:2)
这对我有用:
void
setnextlayout(const Arg *arg) {
Arg newarg = {0};
size_t i = 0;
while(i < LENGTH(layouts) && selmon->lt[selmon->sellt] != &layouts[i])
i++;
newarg.v = &layouts[(i + 1) % LENGTH(layouts)]; // you can do it without '%'
setlayout(&newarg);
}