mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2025-10-26 09:44:21 +00:00
Add remembertags-pertag patch
This commit is contained in:
parent
93523c00fb
commit
5fc962c218
25
patches/remembertags-pertag/README.md
Normal file
25
patches/remembertags-pertag/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
### Description
|
||||||
|
|
||||||
|
Based on the original remembertags patch by minego.
|
||||||
|
This patch expects the pertag patch to be applied first.
|
||||||
|
|
||||||
|
To quote from the original remembertags patch:
|
||||||
|
|
||||||
|
> This patch modifies the behavior when selecting tags so that selecting a tag will also enable any other tags that were previously visible.
|
||||||
|
>
|
||||||
|
> For example:
|
||||||
|
>
|
||||||
|
> 1. Select tag 5, with mod+5
|
||||||
|
> 2. Toggle tag 8, with ctrl+mod+8
|
||||||
|
> 3. Select tag 1, with mod+1. Tags 5 and 8 should no longer be visible.
|
||||||
|
> 4. Select tag 5 again, with mod+5. Tag 8 should be visible since it was remembered.
|
||||||
|
> 5. Select tag 5 again, with mod_5. Selecting the already selected tag resets any remembered tags, so now tag 5 should be the only one visible.
|
||||||
|
|
||||||
|
Remember to change `TAGCOUNT` to `(int)LENGTH(tags)` if you're also using bar patch.
|
||||||
|
|
||||||
|
### Download
|
||||||
|
- [git branch](/markus-langgeng/dwl/src/branch/0.7-remembertags-pertag)
|
||||||
|
- [0.7](/dwl/dwl-patches/raw/branch/main/patches/remembertags-pertag/remembertags-pertag.patch)
|
||||||
|
|
||||||
|
### Author
|
||||||
|
- [markus-langgeng](https://codeberg.org/markus-langgeng)
|
||||||
80
patches/remembertags-pertag/remembertags-pertag.patch
Normal file
80
patches/remembertags-pertag/remembertags-pertag.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
From d0c296b215f8a20ad654ff702abd5e6d7e7e3605 Mon Sep 17 00:00:00 2001
|
||||||
|
From: markus-langgeng <markus.langgeng4@gmail.com>
|
||||||
|
Date: Mon, 31 Mar 2025 12:53:52 +0700
|
||||||
|
Subject: [PATCH] Add remembertags-pertag
|
||||||
|
|
||||||
|
Based on the original remembertags patch but requires the pertag patch
|
||||||
|
to be applied first.
|
||||||
|
|
||||||
|
fix out-of-bound access when is 0
|
||||||
|
---
|
||||||
|
dwl.c | 30 ++++++++++++++++++++++++++----
|
||||||
|
1 file changed, 26 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dwl.c b/dwl.c
|
||||||
|
index d234cd2..26bf772 100644
|
||||||
|
--- a/dwl.c
|
||||||
|
+++ b/dwl.c
|
||||||
|
@@ -209,6 +209,11 @@ struct Monitor {
|
||||||
|
int gamma_lut_changed;
|
||||||
|
int nmaster;
|
||||||
|
char ltsymbol[16];
|
||||||
|
+ unsigned int createtag[2]; /* Create windows on the last tag directly selected, not all selected */
|
||||||
|
+ struct {
|
||||||
|
+ unsigned int tagset;
|
||||||
|
+ Client *zoomed;
|
||||||
|
+ } remembered[31];
|
||||||
|
int asleep;
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -2993,26 +2998,43 @@ void
|
||||||
|
view(const Arg *arg)
|
||||||
|
{
|
||||||
|
size_t i, tmptag;
|
||||||
|
+ int oldtag;
|
||||||
|
+ unsigned int newcreate;
|
||||||
|
|
||||||
|
if (!selmon || (arg->ui & TAGMASK) == selmon->tagset[selmon->seltags])
|
||||||
|
return;
|
||||||
|
+
|
||||||
|
+ oldtag = selmon->createtag[selmon->seltags];
|
||||||
|
+ if (oldtag < TAGCOUNT) {
|
||||||
|
+ selmon->remembered[oldtag].tagset = selmon->tagset[selmon->seltags];
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
selmon->seltags ^= 1; /* toggle sel tagset */
|
||||||
|
if (arg->ui & ~0) {
|
||||||
|
- selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
|
||||||
|
+ for (i = 0; !(arg->ui & 1 << i); i++) {};
|
||||||
|
+ newcreate = arg->ui & TAGMASK;
|
||||||
|
+ if (oldtag == (int)i + 1) {
|
||||||
|
+ /* Select twice to isolate the tag */
|
||||||
|
+ selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
|
||||||
|
+ } else {
|
||||||
|
+ /* Restore whatever was previously on this tag */
|
||||||
|
+ selmon->tagset[selmon->seltags] = (arg->ui & TAGMASK) | selmon->remembered[newcreate].tagset;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
selmon->pertag->prevtag = selmon->pertag->curtag;
|
||||||
|
|
||||||
|
if (arg->ui == TAGMASK)
|
||||||
|
selmon->pertag->curtag = 0;
|
||||||
|
- else {
|
||||||
|
- for (i = 0; !(arg->ui & 1 << i); i++) ;
|
||||||
|
+ else
|
||||||
|
selmon->pertag->curtag = i + 1;
|
||||||
|
- }
|
||||||
|
} else {
|
||||||
|
+ newcreate = selmon->createtag[selmon->seltags];
|
||||||
|
tmptag = selmon->pertag->prevtag;
|
||||||
|
selmon->pertag->prevtag = selmon->pertag->curtag;
|
||||||
|
selmon->pertag->curtag = tmptag;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ selmon->createtag[selmon->seltags] = newcreate;
|
||||||
|
selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag];
|
||||||
|
selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag];
|
||||||
|
selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
|
||||||
|
--
|
||||||
|
2.47.2
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user