dwm-layoutscroll-6.2.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-layoutscroll-6.2.diff (1989B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 4c56466..11ee7b5 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -90,6 +90,8 @@ static Key keys[] = {
6 { MODKEY, XK_period, focusmon, {.i = +1 } },
7 { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
8 { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
9 + { MODKEY|ShiftMask, XK_h, layoutscroll, {.i = -1 } },
10 + { MODKEY|ShiftMask, XK_l, layoutscroll, {.i = +1 } },
11 TAGKEYS( XK_1, 0)
12 TAGKEYS( XK_2, 1)
13 TAGKEYS( XK_3, 2)
14 diff --git a/dwm.c b/dwm.c
15 index 1e37fcf..24effbc 100644
16 --- a/dwm.c
17 +++ b/dwm.c
18 @@ -148,6 +148,7 @@ struct Monitor {
19 Monitor *next;
20 Window barwin;
21 const Layout *lt[2];
22 + int ltcur; /* current layout */
23 };
24
25 typedef struct {
26 @@ -227,6 +228,7 @@ static void sendmon(Client *c, Monitor *m);
27 static void setclientstate(Client *c, long state);
28 static void setfocus(Client *c);
29 static void setfullscreen(Client *c, int fullscreen);
30 +static void layoutscroll(const Arg *arg);
31 static void setlayout(const Arg *arg);
32 static void setmfact(const Arg *arg);
33 static void setup(void);
34 @@ -725,6 +727,7 @@ createmon(void)
35 m->nmaster = nmaster;
36 m->showbar = showbar;
37 m->topbar = topbar;
38 + m->ltcur = 0;
39 m->lt[0] = &layouts[0];
40 m->lt[1] = &layouts[1 % LENGTH(layouts)];
41 strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
42 @@ -1667,6 +1670,25 @@ setfullscreen(Client *c, int fullscreen)
43 }
44 }
45
46 +void
47 +layoutscroll(const Arg *arg)
48 +{
49 + if (!arg || !arg->i)
50 + return;
51 + int switchto = selmon->ltcur + arg->i;
52 + int l = LENGTH(layouts);
53 +
54 + if (switchto == l)
55 + switchto = 0;
56 + else if(switchto < 0)
57 + switchto = l - 1;
58 +
59 + selmon->ltcur = switchto;
60 + Arg arg2 = {.v= &layouts[switchto] };
61 + setlayout(&arg2);
62 +
63 +}
64 +
65 void
66 setlayout(const Arg *arg)
67 {