mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2025-09-06 19:24:51 +00:00
port the tagshift patch from dwm
This commit is contained in:
parent
7d54a01970
commit
9137f21d74
10
patches/tagshift/README.md
Normal file
10
patches/tagshift/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
### Description
|
||||
Port of the [tagshift](https://dwm.suckless.org/patches/tagshift/) patch into dwl.
|
||||
|
||||
Allows a user to change his view and/or focused client into the next or previous tag.
|
||||
|
||||
### Download
|
||||
- [0.7](/dwl/dwl-patches/raw/branch/main/patches/tagshift/tagshift.patch)
|
||||
### Authors
|
||||
- [h3nc4](https://codeberg.org/h3nc4)
|
||||
me@h3nc4.com
|
83
patches/tagshift/tagshift.patch
Normal file
83
patches/tagshift/tagshift.patch
Normal file
@ -0,0 +1,83 @@
|
||||
From 938c63ad0a8a706fba0b4db1c66397e9defdcb92 Mon Sep 17 00:00:00 2001
|
||||
From: h3nc4 <me@h3nc4.com>
|
||||
Date: Mon, 17 Mar 2025 17:38:22 -0300
|
||||
Subject: [PATCH] port the tagshift patch from dwm
|
||||
|
||||
---
|
||||
config.def.h | 4 ++++
|
||||
dwl.c | 37 +++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 41 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 22d2171..72dbaa1 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -131,6 +131,10 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_k, focusstack, {.i = -1} },
|
||||
{ MODKEY, XKB_KEY_i, incnmaster, {.i = +1} },
|
||||
{ MODKEY, XKB_KEY_d, incnmaster, {.i = -1} },
|
||||
+ { MODKEY, XK_Left, shiftview, {.i = -1 } },
|
||||
+ { MODKEY, XK_Right, shiftview, {.i = +1 } },
|
||||
+ { MODKEY|WLR_MODIFIER_SHIFT, XK_Left, shifttag, {.i = -1 } },
|
||||
+ { MODKEY|WLR_MODIFIER_SHIFT, XK_Right, shifttag, {.i = +1 } },
|
||||
{ MODKEY, XKB_KEY_h, setmfact, {.f = -0.05f} },
|
||||
{ MODKEY, XKB_KEY_l, setmfact, {.f = +0.05f} },
|
||||
{ MODKEY, XKB_KEY_Return, zoom, {0} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index cf3ef70..be1e89e 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -333,6 +333,8 @@ static void setmon(Client *c, Monitor *m, uint32_t newtags);
|
||||
static void setpsel(struct wl_listener *listener, void *data);
|
||||
static void setsel(struct wl_listener *listener, void *data);
|
||||
static void setup(void);
|
||||
+static void shiftview(const Arg *arg);
|
||||
+static void shifttag(const Arg *arg);
|
||||
static void spawn(const Arg *arg);
|
||||
static void startdrag(struct wl_listener *listener, void *data);
|
||||
static void tag(const Arg *arg);
|
||||
@@ -2646,6 +2648,41 @@ setup(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
+void
|
||||
+shiftview(const Arg *arg)
|
||||
+{
|
||||
+ Arg a;
|
||||
+ int nextseltags, curseltags = selmon->tagset[selmon->seltags];
|
||||
+ if (arg->i > 0) // left circular shift
|
||||
+ nextseltags = (curseltags << arg->i) | (curseltags >> (TAGCOUNT - arg->i));
|
||||
+ else // right circular shift
|
||||
+ nextseltags = curseltags >> (-arg->i) | (curseltags << (TAGCOUNT + arg->i));
|
||||
+
|
||||
+ a.i = nextseltags; // Change view to the new tag
|
||||
+ view(&a);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+shifttag(const Arg *arg)
|
||||
+{
|
||||
+ Arg a;
|
||||
+ int nextseltags, curseltags = selmon->tagset[selmon->seltags];
|
||||
+ Client *sel = focustop(selmon);
|
||||
+ if (!sel)
|
||||
+ return;
|
||||
+ if (arg->i > 0) // left circular shift
|
||||
+ nextseltags = (curseltags << arg->i) | (curseltags >> (TAGCOUNT - arg->i));
|
||||
+ else // right circular shift
|
||||
+ nextseltags = curseltags >> (-arg->i) | (curseltags << (TAGCOUNT + arg->i));
|
||||
+
|
||||
+ sel->tags = nextseltags & TAGMASK;// Apply new tag to the client
|
||||
+ a.i = nextseltags; // Change view to the new tag
|
||||
+ view(&a);
|
||||
+
|
||||
+ arrange(selmon);
|
||||
+ printstatus(); // change to 'drawbars();' if using "bars" patch
|
||||
+}
|
||||
+
|
||||
void
|
||||
spawn(const Arg *arg)
|
||||
{
|
||||
--
|
||||
2.47.2
|
||||
|
Loading…
x
Reference in New Issue
Block a user