I need dwm to temporarily forget the designated tags for clients. As I mentioned how I used dwm’s tags, when I am working on my workspace tags, sometimes I will open a new window in Firefox. According to my rules, that new window will go to tag a, I will need to switch to tag a and tag that new window. It’s only a few seconds task, but I want to avoid that.

So, I added a new function toggle_rules() to my config.h. Note that you need to remove const from your rules[]. My code is to store the original tags of each rule, then override the tags with 0 or the original tags. I have to hack in this way because I can not touch applyrules(), simply because I am not patching the dwm.c.

I also want to mention about dwm 5.9, I just updated because 5.6.1 has some problem with window’s position when you re-show a window and you use topbar. The y position always being added up with the height of topbar when re-shows, I didn’t check the code, but it’s fixed after I upgraded dwm.

A surprise is that fullscreen is also fixed. Whenever a program enters fullscreen mode (including Flash), it does not have any problem. I don’t need to use monocle or floating anymore.

5.6.1 is more than two years old, I should have tried it. Just too lazy to put dwm to package.keywords. ;)