aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrolyxon <krolyxon@tutanota.com>2022-06-05 13:02:48 +0530
committerkrolyxon <krolyxon@tutanota.com>2022-06-05 13:02:48 +0530
commit127d89b4246e3743ac24c425a80733cbf3dd832a (patch)
treeeae1db3acdaa2b940d965b1fda87ce17833a16c3
parent16de98fbf857c97b133469946ebf34487ed0e8a5 (diff)
layoutscroll patch
-rw-r--r--README.md3
-rw-r--r--config.def.h2
-rw-r--r--config.h2
-rwxr-xr-xdwmbin75184 -> 75248 bytes
-rw-r--r--dwm.c22
-rw-r--r--patch/dwm-layoutscroll-6.2.diff67
6 files changed, 95 insertions, 1 deletions
diff --git a/README.md b/README.md
index e503ae8..12ce822 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@
3. [scratchpad](https://dwm.suckless.org/patches/scratchpad/) patch for scratchpad
4. [bar height](https://dwm.suckless.org/patches/bar_height/) for changing bar's height
5. [pertag](https://dwm.suckless.org/patches/pertag/) for layout for each tag.
-6. [swallow](https://dwm.suckless.org/patches/swallow/) patch for swallowing windows (have reversed the patch right now.)
+6. [layoutscroll](https://dwm.suckless.org/patches/layoutscroll/) for scrolling through layouts with ``mod+shift+tab``
+7. [swallow](https://dwm.suckless.org/patches/swallow/) patch for swallowing windows (have reversed the patch right now.)
### MAKE SURE TO INSTALL ``libxft-bgra`` OR DWM WILL CRASH
diff --git a/config.def.h b/config.def.h
index fa3d86c..3c80a7d 100644
--- a/config.def.h
+++ b/config.def.h
@@ -93,6 +93,8 @@ static Key keys[] = {
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
+ // { MODKEY|ShiftMask, XK_h, layoutscroll, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_Tab, layoutscroll, {.i = +1 } },
{ MODKEY, XK_minus, setgaps, {.i = -1 } },
{ MODKEY, XK_equal, setgaps, {.i = +1 } },
{ MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } },
diff --git a/config.h b/config.h
index fa3d86c..3c80a7d 100644
--- a/config.h
+++ b/config.h
@@ -93,6 +93,8 @@ static Key keys[] = {
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
+ // { MODKEY|ShiftMask, XK_h, layoutscroll, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_Tab, layoutscroll, {.i = +1 } },
{ MODKEY, XK_minus, setgaps, {.i = -1 } },
{ MODKEY, XK_equal, setgaps, {.i = +1 } },
{ MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } },
diff --git a/dwm b/dwm
index 987dd58..70ea2f9 100755
--- a/dwm
+++ b/dwm
Binary files differ
diff --git a/dwm.c b/dwm.c
index 405b49f..331c78b 100644
--- a/dwm.c
+++ b/dwm.c
@@ -148,6 +148,7 @@ struct Monitor {
Monitor *next;
Window barwin;
const Layout *lt[2];
+ int ltcur; /* current layout */
Pertag *pertag;
};
@@ -220,6 +221,7 @@ static void sendmon(Client *c, Monitor *m);
static void setclientstate(Client *c, long state);
static void setfocus(Client *c);
static void setfullscreen(Client *c, int fullscreen);
+static void layoutscroll(const Arg *arg);
static void setgaps(const Arg *arg);
static void setlayout(const Arg *arg);
static void setmfact(const Arg *arg);
@@ -675,6 +677,7 @@ createmon(void)
m->nmaster = nmaster;
m->showbar = showbar;
m->topbar = topbar;
+ m->ltcur = 0;
m->gappx = gappx;
m->lt[0] = &layouts[0];
m->lt[1] = &layouts[1 % LENGTH(layouts)];
@@ -1601,6 +1604,25 @@ setgaps(const Arg *arg)
}
void
+layoutscroll(const Arg *arg)
+{
+ if (!arg || !arg->i)
+ return;
+ int switchto = selmon->ltcur + arg->i;
+ int l = LENGTH(layouts);
+
+ if (switchto == l)
+ switchto = 0;
+ else if(switchto < 0)
+ switchto = l - 1;
+
+ selmon->ltcur = switchto;
+ Arg arg2 = {.v= &layouts[switchto] };
+ setlayout(&arg2);
+
+}
+
+void
setlayout(const Arg *arg)
{
if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
diff --git a/patch/dwm-layoutscroll-6.2.diff b/patch/dwm-layoutscroll-6.2.diff
new file mode 100644
index 0000000..95e621d
--- /dev/null
+++ b/patch/dwm-layoutscroll-6.2.diff
@@ -0,0 +1,67 @@
+diff --git a/config.def.h b/config.def.h
+index 4c56466..11ee7b5 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -90,6 +90,8 @@ static Key keys[] = {
+ { MODKEY, XK_period, focusmon, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
++ { MODKEY|ShiftMask, XK_h, layoutscroll, {.i = -1 } },
++ { MODKEY|ShiftMask, XK_l, layoutscroll, {.i = +1 } },
+ TAGKEYS( XK_1, 0)
+ TAGKEYS( XK_2, 1)
+ TAGKEYS( XK_3, 2)
+diff --git a/dwm.c b/dwm.c
+index 1e37fcf..24effbc 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -148,6 +148,7 @@ struct Monitor {
+ Monitor *next;
+ Window barwin;
+ const Layout *lt[2];
++ int ltcur; /* current layout */
+ };
+
+ typedef struct {
+@@ -227,6 +228,7 @@ static void sendmon(Client *c, Monitor *m);
+ static void setclientstate(Client *c, long state);
+ static void setfocus(Client *c);
+ static void setfullscreen(Client *c, int fullscreen);
++static void layoutscroll(const Arg *arg);
+ static void setlayout(const Arg *arg);
+ static void setmfact(const Arg *arg);
+ static void setup(void);
+@@ -725,6 +727,7 @@ createmon(void)
+ m->nmaster = nmaster;
+ m->showbar = showbar;
+ m->topbar = topbar;
++ m->ltcur = 0;
+ m->lt[0] = &layouts[0];
+ m->lt[1] = &layouts[1 % LENGTH(layouts)];
+ strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol);
+@@ -1667,6 +1670,25 @@ setfullscreen(Client *c, int fullscreen)
+ }
+ }
+
++void
++layoutscroll(const Arg *arg)
++{
++ if (!arg || !arg->i)
++ return;
++ int switchto = selmon->ltcur + arg->i;
++ int l = LENGTH(layouts);
++
++ if (switchto == l)
++ switchto = 0;
++ else if(switchto < 0)
++ switchto = l - 1;
++
++ selmon->ltcur = switchto;
++ Arg arg2 = {.v= &layouts[switchto] };
++ setlayout(&arg2);
++
++}
++
+ void
+ setlayout(const Arg *arg)
+ {