Next: , Previous: , Up: Windows   [Contents][Index]


8.16 Window Rules by Matching

Sawfish can trigger actions particular to each window. More precisely, if the window’s properties match to the user set rule, then it is executed when the window appears. Check is done in before-add-window-hook. (see Standard Hooks)

These rules can easily be set by configurater GUI, but there’re functions to manipulate them. They’re defined in sawfish.wm.ext.match-window.

Function: add-window-matcher rules actions

Let us see an example first:

(add-window-matcher '((WM_NAME . "^root$")
                      (WM_CLASS . "^XTerm/xterm$"))
                    '((ignore-program-position . t)
                      (maximize . vertical)))

rules is an list where each element is a (property . regex) or a (function . arguments) cons. In the first form, specified property is matched against the regular expression. Allowed properties are any of WM_NAME, WM_CLASS, WM_ICON_NAME, WM_WINDOW_ROLE, WM_CLIENT_MACHINE, WM_COMMAND, and WM_LOCALE_NAME. In the second form, specified function is called with window as first argument and list of arguments specified in the cons as remaining arguments. Windows are selected if all of these rules match.

actions is an alist. For possible keys and values, see lisp/sawfish/wm/ext/match-window.jl.

Check for invalid arguments are not done.

Function: remove-window-matcher rules props

Opposite of add-window-matcher, but unlike it, props are list of properties. Example:

(remove-window-matcher '((WM_NAME . "^root$"))
                       '(place-mode ignore-program-position))

The best place to use add-window-matcher is in ~/.sawfish/rc. It’s because rules modified by these commands are not necessarily saved, depending on how you run the configurator.

The rules are stored in variable match-window-profile. Use the above functions to modify its value. It is not recommended to directly manipulate it.


Next: Animating Windows, Previous: Cycling Between Windows, Up: Windows   [Contents][Index]