summaryrefslogtreecommitdiff
path: root/dwl/dwl-patches/patches/setrule/README.md
diff options
context:
space:
mode:
authorcoasteen <coasteen@proton.me>2026-07-09 10:42:28 +0330
committercoasteen <coasteen@proton.me>2026-07-09 10:42:28 +0330
commit8cbadb61604667b407b53ee1258433994fa4765a (patch)
tree97765fb29418fd6278fcb4cbb9760893afaf7a58 /dwl/dwl-patches/patches/setrule/README.md
Diffstat (limited to 'dwl/dwl-patches/patches/setrule/README.md')
-rwxr-xr-xdwl/dwl-patches/patches/setrule/README.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/dwl/dwl-patches/patches/setrule/README.md b/dwl/dwl-patches/patches/setrule/README.md
new file mode 100755
index 0000000..bdb7408
--- /dev/null
+++ b/dwl/dwl-patches/patches/setrule/README.md
@@ -0,0 +1,46 @@
+### Description
+
+This patch adds an ability to add or change client rules at runtime.
+
+Sometimes it happens that some client rule I've set is not relevant in the
+current circumstance and adds major disturbance and annoyance to my work
+(e.g., `isfloating` is set or unset and I want the opposite). Changing the rule
+is not an option because it will require recompilation and restarting dwl, which
+is even worse. Having an option of always being able to change a rule solves
+this issue.
+
+The patch only adds one keybinding (`Alt+Shift+R`) to toggle `isfloating`
+option. Upon pressing it, dwl will try to find a matching rule for the focused
+client and change its `isfloating` setting. If there's no such a rule, a new
+rule will be added. The new rule will inherit an appid of the focused client.
+
+It's very easy to add support for more rule options from other patches as well.
+You just need to define a new function similar to `setruleisfloating` and add a
+new keybinding to `config.h`. For example, this is a function I created for my
+build to toggle `noswallow` option from the [swallow][swallow] patch:
+
+```c
+void
+setrulenoswallow(const Arg *arg)
+{
+ Rule *r = getrule(focustop(selmon));
+ if (!r)
+ return;
+ r->noswallow = !r->noswallow;
+}
+```
+
+You can also try [menurule][menurule] patch if you want to be able to edit rules
+with dmenu.
+
+[swallow]: /dwl/dwl-patches/src/branch/main/patches/swallow
+[menurule]: /dwl/dwl-patches/src/branch/main/patches/menurule
+
+### Download
+
+- [v0.7](/dwl/dwl-patches/raw/branch/main/patches/setrule/setrule.patch)
+- [2025-02-14 v0.7](https://codeberg.org/dwl/dwl-patches/raw/commit/268bee3cee239e5bd52cceed88a52bfc21143cc3/patches/setrule/setrule.patch)
+
+### Authors
+
+- [Nikita Ivanov](https://codeberg.org/nikitaivanov) ([GitHub](https://github.com/NikitaIvanovV))