summaryrefslogtreecommitdiffstats
path: root/dwl-patches/patches/menurule/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'dwl-patches/patches/menurule/README.md')
-rw-r--r--dwl-patches/patches/menurule/README.md70
1 files changed, 70 insertions, 0 deletions
diff --git a/dwl-patches/patches/menurule/README.md b/dwl-patches/patches/menurule/README.md
new file mode 100644
index 0000000..8d8b757
--- /dev/null
+++ b/dwl-patches/patches/menurule/README.md
@@ -0,0 +1,70 @@
+### Description
+
+This patch adds a dmenu interface to [setrule][setrule], which allows to add or
+change client rules at runtime. It must be applied on top of [setrule][setrule]
+and [menu][menu] patches.
+
+You can invoke the menu by pressing `Alt+R`. The menu lists all the rules, plus
+a shortcut to define a new one that would apply to the currently focused client
+(marked with `(NEW)`). Rules that already apply to the focused client are marked
+with `<`.
+
+![menurule in action](menurule.png)
+
+To edit a rule, you need to select it, press `Tab`, change what you need and
+finally press `Enter`. You can remove a rule by prepending it with `-`. To add a
+new rule, just put new values into `[appid|title]`.
+
+To add support for new rules, you need to edit `fprintf` and `sscanf` calls in
+`menurulefeed` and `menuruleaction` functions respectively.
+
+For example, this is what I did to add support for [swallow][swallow] patch
+rules.
+
+```diff
+diff --git a/dwl.c b/dwl.c
+index 34397fc..f1b31ea 100644
+--- a/dwl.c
++++ b/dwl.c
+@@ -2441,10 +2441,14 @@ menurulefeed(FILE *f)
+ fprintf(f, "%-*s "
+ " tags:%-4"PRIi32
+ " isfloating:%-2d"
++ " isterm:%-2d"
++ " noswallow:%-2d"
+ " monitor:%-2d"
+ "%s\n", wid, buf,
+ r->tags,
+ r->isfloating,
++ r->isterm,
++ r->noswallow,
+ r->monitor,
+ (r == &t) ? " (NEW)" : match ? " <" : "");
+ }
+@@ -2465,10 +2469,14 @@ menuruleaction(char *line)
+ sscanf(line, "[%255[^|]|%255[^]]]"
+ " tags:%"SCNu32
+ " isfloating:%d"
++ " isterm:%d"
++ " noswallow:%d"
+ " monitor:%d"
+ "%n", appid, title,
+ &r.tags,
+ &r.isfloating,
++ &r.isterm,
++ &r.noswallow,
+ &r.monitor,
+ &end);
+```
+
+[setrule]: /dwl/dwl-patches/src/branch/main/patches/setrule
+[menu]: /dwl/dwl-patches/src/branch/main/patches/menu
+[swallow]: /dwl/dwl-patches/src/branch/main/patches/swallow
+
+### Download
+
+- [v0.7](/dwl/dwl-patches/raw/branch/main/patches/menurule/menurule.patch)
+
+### Authors
+
+- [Nikita Ivanov](https://codeberg.org/nikitaivanov) ([GitHub](https://github.com/NikitaIvanovV))