index.md - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
index.md (2254B)
---
1 Setting rules in config.h
2 =========================
3
4 What does '`rules`' do?
5 -----------------------
6 The `rules` array allows treating of certain applications (clients) uniquely.
7 A rule has a matching and an action part. When a new client appears (sends a
8 maprequest), it is matched against the rules based on its class, instance
9 (`WM_CLASS`) and title (`WM_NAME`) properties and then the given tag and
10 floating mode setting actions are performed. The default tag mask is `0`, which
11 means the currently viewed tags and the default mode is tiled so isfloating is
12 `False` or `0`.
13
14 Example from the default config:
15
16 static Rule rules[] = {
17 /* class instance title tags mask isfloating monitor */
18 { "Gimp", NULL, NULL, 0, 1, -1 },
19 { "Firefox", NULL, NULL, 1 << 8, 1, -1 },
20 { "deadbeef", NULL, NULL, 1 << 7, 0 0 }
21 };
22
23 These rules make every Gimp and Firefox window floating and makes Firefox
24 windows appear on tag 9 instead of the currently viewed tags.
25 deadbeef similarly displays its window on tag 8 for a secondary display
26 monitor.
27
28 How does the matching work?
29 ---------------------------
30 A client is matched if its properties contain the given strings as substrings
31 (case-sensitively) or `NULL` is given (which means anything is matched there).
32
33 More than one rule can be applied to a client, the rules are matched in order.
34
35 How to check these properties of a client?
36 ------------------------------------------
37 The `xprop` utility can be used to get this information:
38 `WM_CLASS` is (instance, class) `WM_NAME` (or `_NET_WM_NAME`) is the title.
39
40 For example this shell script prints the relevant properties of the selected
41 client (if the properties does not contain '`=`' or '`,`'):
42
43 xprop | awk '
44 /^WM_CLASS/{sub(/.* =/, "instance:"); sub(/,/, "\nclass:"); print}
45 /^WM_NAME/{sub(/.* =/, "title:"); print}'
46
47 How to add exception to a tagging rule?
48 ---------------------------------------
49 It cannot be simply done. For example it is difficult to achieve that each
50 Firefox window goes to tag 9 except one specific dialog, which goes to tag 8,
51 because the tag masks of different matched rules are 'or'ed (and not overwritten).