dwl

My patch set and modifications to dwl
git clone git://git.ethandl.dev/dwl
Log | Files | Refs | README | LICENSE

commit 66054700cb58d97f3f333317db18b24e0f39ef2c
parent 35557ab0426ba326e7bba8f1aeac1ac5495bf079
Author: Devin J. Pohly <djpohly@gmail.com>
Date:   Thu, 23 Apr 2020 20:02:17 -0500

add toggletag and toggleview

Diffstat:
Mconfig.def.h | 4+++-
Mdwl.c | 27+++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/config.def.h b/config.def.h @@ -32,7 +32,9 @@ static const struct xkb_rule_names xkb_rules = { #define MODKEY WLR_MODIFIER_ALT #define TAGKEYS(KEY,SKEY,TAG) \ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ - { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} } + { MODKEY|WLR_MODIFIER_CTRL, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_SHIFT, SKEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|WLR_MODIFIER_CTRL|WLR_MODIFIER_SHIFT,SKEY,toggletag, {.ui = 1 << TAG} } /* commands */ static const char *termcmd[] = { "kitty", "-o", "linux_display_server=wayland", NULL }; diff --git a/dwl.c b/dwl.c @@ -154,6 +154,8 @@ static void spawn(const Arg *arg); static void tag(const Arg *arg); static void tile(Monitor *m); static void togglefloating(const Arg *arg); +static void toggletag(const Arg *arg); +static void toggleview(const Arg *arg); static void unmapnotify(struct wl_listener *listener, void *data); static void view(const Arg *arg); static Client *xytoclient(double x, double y, @@ -1117,6 +1119,31 @@ togglefloating(const Arg *arg) } void +toggletag(const Arg *arg) +{ + unsigned int newtags; + Client *sel = selclient(); + if (!sel) + return; + newtags = sel->tags ^ (arg->ui & TAGMASK); + if (newtags) { + sel->tags = newtags; + focus(NULL, NULL); + } +} + +void +toggleview(const Arg *arg) +{ + unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK); + + if (newtagset) { + selmon->tagset[selmon->seltags] = newtagset; + focus(NULL, NULL); + } +} + +void unmapnotify(struct wl_listener *listener, void *data) { /* Called when the surface is unmapped, and should no longer be shown. */