From 448eee179a07f40864c7a79a610bfcad8561b2f8 Mon Sep 17 00:00:00 2001 From: Arthur Khachaturov Date: Fri, 23 Aug 2024 16:44:37 +0300 Subject: [PATCH] feat: metaws pin --- config.h | 9 +++------ dwm.c | 21 +++++++++++++++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/config.h b/config.h index 1b8f718..35bc4ad 100644 --- a/config.h +++ b/config.h @@ -94,8 +94,6 @@ static const char *termcmd[] = { "alacritty", NULL }; static const Key keys[] = { /* modifier key function argument */ // movement - // { MODKEY|ShiftMask, XK_l, incnmaster, {.i = +1 } }, - // { MODKEY|ShiftMask, XK_h, incnmaster, {.i = -1 } }, { MODKEY, XK_d, spawn, {.v = dmenucmd } }, { MODKEY, XK_Return, spawn, {.v = termcmd } }, { MODKEY|ShiftMask, XK_b, togglebar, {0} }, @@ -103,20 +101,19 @@ static const Key keys[] = { { MODKEY, XK_k, focusstack, {.i = -1 } }, { MODKEY, XK_n, setmfact, {.f = -0.05} }, { MODKEY, XK_m, setmfact, {.f = +0.05} }, + { MODKEY|ShiftMask, XK_n, incnmaster, {.i = -1} }, + { MODKEY|ShiftMask, XK_m, incnmaster, {.i = +1} }, { MODKEY, XK_c, zoom, {0} }, { MODKEY, XK_q, killclient, {0} }, // layout - { MODKEY|ControlMask, XK_u, setlayout, {.v = &layouts[0]} }, - { MODKEY|ControlMask|ShiftMask, XK_u, setlayout, {.v = &layouts[1]} }, - { MODKEY|ControlMask, XK_m, setlayout, {.v = &layouts[2]} }, - { MODKEY|ControlMask|ShiftMask, XK_m, setlayout, {.v = &layouts[3]} }, { MODKEY, XK_f, togglefullscr, {0} }, { MODKEY|ShiftMask, XK_f, togglefloating, {0} }, { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ControlMask, XK_0, tag, {.ui = ~0 } }, + { AltMask|ControlMask, XK_0, pinmetaws, {0} }, { MODKEY|ControlMask, XK_p, invertdir, {0} }, // apps diff --git a/dwm.c b/dwm.c index 61a75b2..f92b57a 100644 --- a/dwm.c +++ b/dwm.c @@ -210,6 +210,7 @@ static void monocle(Monitor *m); static void motionnotify(XEvent *e); static void movemouse(const Arg *arg); static Client *nexttiled(Client *c); +static void pinmetaws(const Arg* _); static void pop(Client *c); static void propertynotify(XEvent *e); static void quit(const Arg *arg); @@ -938,8 +939,11 @@ expose(XEvent *e) void focus(Client *c) { - if (!c || !ISVISIBLE(c)) - for (c = selmon->stack; c && (!ISVISIBLE(c) || c->isfloating); c = c->snext); + if (!c || !ISVISIBLE(c)) { + for (c = selmon->stack; c && (!ISVISIBLE(c) || (!c->isfullscreen && c->isfloating)); c = c->snext); + if (!c) for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); + } + if (selmon->sel && selmon->sel != c) unfocus(selmon->sel, 0); if (c) { @@ -1403,6 +1407,19 @@ nexttiled(Client *c) return c; } +void +pinmetaws(const Arg *_) +{ + int i; + Client *c = selmon->sel; + if (!selmon || !selmon->sel) + return; + + c->mwpin = !c->mwpin; + for(i = 0; i < LENGTH(metaworkspaces); ++i) + c->tags[i] = c->tags[metaws]; +} + void pop(Client *c) {