Node: Raising and Lowering Windows, Previous: Stacking Order, Up: Window Stacking



Raising and Lowering Windows

Over time, Sawfish has accumulated several subtle variations of functions for raising and lowering windows. One set of functions operates on single windows.

lower-window window Function
lower-single-window window Command
Lower window to the bottom of its stacking depth.

raise-window window Function
raise-single-window window Command
Raise window to the top of its stacking depth.

raise-lower-window window Function
raise-lower-single-window window Command
If window is the highest in its stacking level, lower it to the bottom of this level, otherwise raise it to the top of its level.

Notice how the function name and command name for each pair differs slightly. Another set of functions supports operating on multiple windows simultaneously. Again, the function name and command name for each pair is different.

lower-window* window Function
lower-window window Command
Lower window and possibly associated windows to the bottom of their stacking depths.

raise-window* window Function
raise-window window Command
Raise window and possibly associated windows to the top of their stacking depth.

raise-lower-window* window Function
raise-lower-window window Command
If window is the highest in its stacking level, lower it and possibly associated windows to the bottom of their level, otherwise raise them to the top of their level.

user-raise-type Variable
Indicates which windows the lower-window*, raise-window* and raise-lower-window* functions affect. This variable can be
none
Only the specific argument window is affected.
transients
The specific argument window and all of its transients are affected. This is the default.
group
The specific argument window and all windows in its group are affected.

maybe-raise-window w Function
If window w supports the _SAWFISH_WM_RAISE_WINDOW protocol, ask it whether it wants to raise itself or not. Otherwise, raise the window unconditionally.

maybe-lower-window w Function
If window w supports the _SAWFISH_WM_LOWER_WINDOW protocol, ask it whether it wants to lower itself or not. Otherwise, lower the window unconditionally.

Sawfish has more general operations that raising a window to the top or lowering it to the bottom. It can place a window relative to one or more other managed windows.

raise-windows w order Function
lower-windows w order Function
raise-lower-windows w order Function
Raise (or lower) all windows in order, such that items earlier in the list are higher (or lower) than later items. The window w is special, always being the highest or lowest window, even if appears in the middle of order.

For raise-lower-windows, if w would be raised or lowered, then all the other windows are also raised or lowered.

There are also functions (and associated commands) to change a window's depth.

lower-window-depth window Function
lower-window-depth window Command
Decrement the stacking depth of window.

raise-window-depth window Function
raise-window-depth window Command
Increment the stacking depth of window.

Sawfish provides special support for "click-to-focus" mode, where you may or may not want to raise the window or pass the click to the underlying application.

raise-and-pass-through-click w Function
Raise the window that received the current event with maybe-raise-window. Then replay any pointer events that invoked the command.

raise-and-pass-through-click-if-focused w Function
Raise the window that received the current event (if it's focused) with maybe-raise-window. Then replay any pointer events that invoked the command.

raise-or-pass-through-click w Function
If the window that received the current event is not on top, raise it with maybe-raise-window. Otherwise replay any pointer events that invoked the command, sending them to the window.

When the above commands are called interactively, Sawfish will try to invoke them on the window that received the current event. Failing that, Sawfish will invoke them on the currently focused window.