|Browse all patches|
From the author: this patch is currently suspended - not to be accepted right now, but nor to be rejected - with good reason. If you are interested, please help me. Thank you. - Teika kazura 08:02, 17 July 2008 (UTC)
This patch allows the new window not to be focused when it appeared, overriding the global option `focus-windows-when-mapped'.
Let me remind you first that there's the global option `focus-windows-when-mapped', and the boolean window property `focus-when-mapped'. When a new window appears, will it be focused? Compare these situations:
- `focus-windows-when-mapped' is nil and `focus-when-mapped' is t. Then the window is focused. OK.
- `focus-windows-when-mapped' is t and `focus-when-mapped' is unset. Then the window is focused. OK.
- `focus-windows-when-mapped' is t and `focus-when-mapped' is set false. In fact, the window gets focused, despite of the window specific option. This seems quite unnatural; I expect that it is unfocused, and this patch allows it.
Let me summarize: if a boolean property is unset, nothing special is meant, the default. When set and is false, then it is stronger; a negation. At least I understand so.
Why this is suspended, dispite of its usefulness?
It used to be unable for Sawfish to distinguish between an unset property and set with the value nil. So fixing only 'focus when mapped' field is a bit lopsided - not consistent with other options.
Patch testing Edit
- Copy/paste the patch listed below into some file, eg.
- If you don't have sawfish sources yet, have one, as described get it from GIT repo.
- Go into the directory where sawfish sources reside, eg.
- Test if the patch applies cleanly with this command:
patch -p1 --ignore-whitespace --dry-run < TEST.diffin case of problems try also:
- If it applies cleanly, then remove the
--dry-runfrom above command and run it again, otherwise ask on the mailing list.
- Compile sawfish:
./autogen.sh && make
- Install it for testing, but it depends on your linux distribution.
- It is always better to install sawfish as your distribution package, but it is different for each distribution.
- So you may try
make install, which will install sawifish in
/usr/local/share/sawfish/(if you have write access). But then make sure that you run the correct version and delete it from that directory afterwards, to avoid any conflicts.
- Se also
PS: edit this template if you feel that those instructions can be improved.
For 1.5 and later:
diff --git a/lisp/sawfish/wm/state/transient.jl b/lisp/sawfish/wm/state/transient.jl index d308d4e..9483d10 100644 --- a/lisp/sawfish/wm/state/transient.jl +++ b/lisp/sawfish/wm/state/transient.jl @@ -172,6 +172,7 @@ the level of any transient windows it has." (eql x-for-id (root-window-id)) (let ((x-for (get-window-by-id x-for-id))) (and x-for (window-get x-for 'desktop)))) + (window-get w 'focus-when-mapped t) (or (and focus-windows-when-mapped (not (window-get w 'never-focus))
For 1.3.x series:
--- sawfish-1.3.3.orig/lisp/sawfish/wm/state/transient.jl 2007-07-29 18:45:03.000000000 +0900 +++ sawfish-1.3.3/lisp/sawfish/wm/state/transient.jl 2008-06-22 17:03:06.000000000 +0900 @@ -165,7 +165,8 @@ (input-focus) (transient-of-p w (input-focus) #:allow-root t)) (set-input-focus w)) - ((and (or (and focus-windows-when-mapped + ((and (window-get w 'focus-when-mapped t) + (or (and focus-windows-when-mapped (not (window-get w 'never-focus))) (window-get w 'focus-when-mapped)) (or (not (window-transient-p w))
Community's reasons for inclusion or rejection Edit
When voting anonymously please write your name, so that it can be associated with your posts on the mailing list. If you are logged in you can sign yourself by typing four tilda characters: ~~~~.
For old comments, see here