mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2025-09-09 20:54:50 +00:00
47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
### 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))
|