Next: , Previous: Multi-Head Environments, Up: Top


14 Window Placement

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.

— Variable: place-window-mode

A symbol indicating the method of placing normal windows. This defaults to top-left.

— Variable: place-transient-mode

A symbol indicating the method of placing transient windows. This defaults to centered-on-parent.

— Function: placement-mode name

Return the placement mode object corresponding to name.

— Variable: placement-modes

List of names of all placement modes. Sawfish 1.3 ships with the following placement modes:

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.

— Variable: stagger-placement-step

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.

— Variable: ignore-program-positions

When t, program position size hints are not considered when placing windows.

“Avoided” windows should be kept unobscured by other windows wherever possible. In particular, first-fit and best-fit methods will attempt to place new windows away from them, and maximized windows will not stretch over them.

— Function: window-avoided-p window

Return t if window should be kept unobscured by other windows wherever possible.

— Function: avoided-windows &optional window

Returns a list of all windows that should be left unobscured where possible. If window is defined, then it defines a window that will be never returned in the list.

— Variable: dont-avoid-ignored

When non-nil, ignored windows aren't avoided by default. Defaults to non-nil.

— Variable: avoid-by-default

When non-nil, any unspecified windows are avoided by default. Defaults to nil.

You can define your own placement modes.

— Function: define-placement-mode name fun &keywords for-normal for-dialogs

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.

— Function: autoload-placement-mode name module-name &keywords for-normal for-dialogs

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.