Next: Popup Menus, Previous: RandR and Xinerama, Up: Top [Contents][Index]
Sawfish supports multiple ways of placing new windows on the display. There is a “current” placement mode for normal windows, and another mode for transient windows.
A symbol indicating the method of placing normal windows. This
defaults to top-left
.
A symbol indicating the method of placing transient windows. This
defaults to centered-on-parent
.
Return the placement mode object corresponding to name.
List of names of all placement modes. Sawfish 1.3 ships with the following placement modes:
randomly
The new window is placed at a random location on the screen.
interactively
Prompt the user to select a position with the mouse. The new window
is created such that its top-left corner is at that position.
centered
The new window is created at the center of the screen.
centered-on-parent
The new window has a parent, it is centered on that parent. If the
new window instead has a focused window in the same group, it is
centered on that focused window. Otherwise the new window is simply
centered
.
under-pointer
Create the new window so that it’s under the pointer, without going
off the edge of the screen.
first-fit
best-fit
Look for positions where the new window would have a small overlap
area with already visible windows. The first-fit
algorithm
uses the first “good” position found. The best-fit
algorithm
looks at all possible positions and picks the best of them.
best-fit-group
As best-fit
, but the new window is only checked for overlap
with other windows in its group.
first-fit-or-interactive
As first-fit
, but if Sawfish cannot find a “good” position,
it falls back to interactively
mode.
stagger
Attempts to place each new window below and to the right of the
previous window. See stagger-placement-step
.
top-left
Interpret the top-left to bottom-right screen diagonal as a series of
slots, each of which may have a window. Find the first empty slot and
place the window there. Sawfish will shrink the window to
prevent it from going past the right or bottom edge, or even beneath a
special window like a panel. If Sawfish is not allowed to shrink the
window enough to prevent this, it instead places the window randomly.
off-center
Tries to put windows in the center of the screen, but in such a way
that the newly placed window doesn’t fully obscure an existing
window.
This is to handle the case where two windows of the same size are created one after the other, so that the user is sure to see (at least part of) both windows.
none
Make no changes to the window’s position. The window remains wherever
the X server placed it initially.
In all of these placement modes, the mode is responsible for taking
the window object as an argument, and manipulating its position with,
e.g., move-window-to
.
The window to be placed avoids overlapping with already existing
“avoided” windows (see Avoided Windows), unless
the position is explicitly specified by coordinates, or placement mode
interactively
is used.
In stagger
placement mode, the distance down and to the right
from the previously placed window to the new one. This is measured
in pixels.
There are two circumstances in which Sawfish will place a window:
either the window has just been created, or Sawfish has begun managing
the window’s display. In the latter case, the window will have the
placed
property.
When t
, program position size hints are not considered when
placing windows.
You can define your own placement modes.
Define a new window placement mode called name (a symbol). The function fun will be called with a single argument when a window should be placed using this mode. The single argument is the window to be placed.
If the for-normal keyword is t
, then this placement mode
is marked as valid for place-window-mode
. The same applies to
for-dialogs and place-transient-mode
.
Define placement mode name (a symbol) to be loaded from
structure structure-name (a symbol) when first referenced. The
keyword-args are passed along to the call to
define-placement-mode
that creates the placement mode.
Next: Popup Menus, Previous: RandR and Xinerama, Up: Top [Contents][Index]