feat: metaws pin

This commit is contained in:
Arthur Khachaturov 2024-08-23 16:44:37 +03:00
parent b4c17e4a80
commit 448eee179a
No known key found for this signature in database
GPG key ID: CAC2B7EB6DF45D55
2 changed files with 22 additions and 8 deletions

View file

@ -94,8 +94,6 @@ static const char *termcmd[] = { "alacritty", NULL };
static const Key keys[] = { static const Key keys[] = {
/* modifier key function argument */ /* modifier key function argument */
// movement // movement
// { MODKEY|ShiftMask, XK_l, incnmaster, {.i = +1 } },
// { MODKEY|ShiftMask, XK_h, incnmaster, {.i = -1 } },
{ MODKEY, XK_d, spawn, {.v = dmenucmd } }, { MODKEY, XK_d, spawn, {.v = dmenucmd } },
{ MODKEY, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_Return, spawn, {.v = termcmd } },
{ MODKEY|ShiftMask, XK_b, togglebar, {0} }, { MODKEY|ShiftMask, XK_b, togglebar, {0} },
@ -103,20 +101,19 @@ static const Key keys[] = {
{ MODKEY, XK_k, focusstack, {.i = -1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_n, setmfact, {.f = -0.05} }, { MODKEY, XK_n, setmfact, {.f = -0.05} },
{ MODKEY, XK_m, 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_c, zoom, {0} },
{ MODKEY, XK_q, killclient, {0} }, { MODKEY, XK_q, killclient, {0} },
// layout // 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, XK_f, togglefullscr, {0} },
{ MODKEY|ShiftMask, XK_f, togglefloating, {0} }, { MODKEY|ShiftMask, XK_f, togglefloating, {0} },
{ MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } },
{ MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } },
{ MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ControlMask, XK_0, tag, {.ui = ~0 } }, { MODKEY|ControlMask, XK_0, tag, {.ui = ~0 } },
{ AltMask|ControlMask, XK_0, pinmetaws, {0} },
{ MODKEY|ControlMask, XK_p, invertdir, {0} }, { MODKEY|ControlMask, XK_p, invertdir, {0} },
// apps // apps

21
dwm.c
View file

@ -210,6 +210,7 @@ static void monocle(Monitor *m);
static void motionnotify(XEvent *e); static void motionnotify(XEvent *e);
static void movemouse(const Arg *arg); static void movemouse(const Arg *arg);
static Client *nexttiled(Client *c); static Client *nexttiled(Client *c);
static void pinmetaws(const Arg* _);
static void pop(Client *c); static void pop(Client *c);
static void propertynotify(XEvent *e); static void propertynotify(XEvent *e);
static void quit(const Arg *arg); static void quit(const Arg *arg);
@ -938,8 +939,11 @@ expose(XEvent *e)
void void
focus(Client *c) focus(Client *c)
{ {
if (!c || !ISVISIBLE(c)) if (!c || !ISVISIBLE(c)) {
for (c = selmon->stack; c && (!ISVISIBLE(c) || c->isfloating); c = c->snext); 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) if (selmon->sel && selmon->sel != c)
unfocus(selmon->sel, 0); unfocus(selmon->sel, 0);
if (c) { if (c) {
@ -1403,6 +1407,19 @@ nexttiled(Client *c)
return 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 void
pop(Client *c) pop(Client *c)
{ {