## 6 Frames ¶

Frames contain windows. All windows exist within a frame.

Those used to ratpoison will notice that this differs from ratpoison’s window pool, where windows and frames are not so tightly connected.

Command: pull-window-by-number n &optional group ¶

  Default Values:

        group  (stumpwm:current-group)

  Pull window N from another frame into the current frame and focus it.

Command: hsplit &optional ratio ¶

  Default Values:

        ratio  "1/2"

  Split the current frame into 2 side-by-side frames.

Command: vsplit &optional ratio ¶

  Default Values:

        ratio  "1/2"

  Split the current frame into 2 frames, one on top of the other.

Command: hsplit-equally amt ¶

  Deprecated. Use ‘vsplit-uniformly’ instead.

Command: vsplit-uniformly amt ¶

  Split current frame in n rows of equal size.

Command: vsplit-equally amt ¶

  Deprecated. Use ‘hsplit-uniformly’ instead.

Command: hsplit-uniformly amt ¶

  Split current frame in n columns of equal size.

Command: remove-split &optional group frame ¶

  Default Values:

        group  (stumpwm:current-group)
        frame  (stumpwm::tile-group-current-frame stumpwm:group)

  Remove the specified frame in the specified group (defaults to current group, current frame). Windows in the frame are migrated to the frame taking up its space.

Command: only ¶

  Delete all the frames but the current one and grow it to take up the entire head.

Command: curframe ¶

  Display a window indicating which frame is focused.

Command: fnext ¶

  Cycle through the frame tree to the next frame.

Command: fprev ¶

  Cycle through the frame tree to the previous frame.

Command: sibling ¶

  Jump to the frame’s sibling. If a frame is split into two frames, these two frames are siblings.

Command: fother ¶

  Jump to the last frame that had focus.

Command: fselect frame-number ¶

  Display a number in the corner of each frame and let the user to select a frame by number or click. If frame-number is specified, just jump to that frame.

Command: resize width height ¶

  Move the frame split directly to the right of the current frame as much as possible up to width pixels, or if impossible try the split directly to the left instead. Similarly, also move the frame split directly below the current frame as much as possible up to height pixels, or if impossible try the split directly above instead.

Command: resize-direction d ¶

  Resize frame to direction d

Command: balance-frames &aux ¶

  Make frames the same height or width in the current frame’s subtree.

Command: fclear ¶

  Clear the current frame.

Command: move-focus dir ¶

  Focus the frame adjacent to the current one in the specified direction. The following are valid directions:

  up
  down
  left
  right

Command: move-window dir ¶

  Just like move-focus except that the current is pulled along.

Command: next-in-frame ¶

  Go to the next window in the current frame.

Command: prev-in-frame ¶

  Go to the previous window in the current frame.

Command: other-in-frame ¶

  Go to the last accessed window in the current frame.

Command: next-urgent ¶

  Jump to the next urgent window

Command: frame-windowlist &optional fmt ¶

  Default Values:

        fmt  stumpwm:*window-format*

  Allow the user to select a window from the list of windows in the current frame and focus the selected window. The optional argument fmt can be specified to override the default window formatting.

Command: echo-frame-windows &optional fmt ¶

  Default Values:

        fmt  stumpwm:*window-format*

  Display a list of all the windows in the current frame.

Command: exchange-direction dir &optional win ¶

  Default Values:

        win  (stumpwm:current-window)

  Exchange the current window (by default) with the top window of the frame in specified direction. (bound to `C-t x` by default)

  up
  down
  left
  right

Command: expose ¶

  Automagically lay out all windows in a grid and let the user select one, making that window the focused window. Set the variable ‘*expose-auto-tile-fn*’ to another tiling function if a different layout is desired for tile groups. Set ‘*expose-n-max*’ to the maximum number of windows to be displayed for choosing when in a tile group.

Macro: save-frame-excursion &body body ¶

  Execute body and then restore the current frame.

Function: run-or-pull cmd props &optional all-groups all-screens ¶

  Default Values:

        all-groups   stumpwm:*run-or-raise-all-groups*
        all-screens  stumpwm:*run-or-raise-all-screens*

  Similar to run-or-raise, but move the matching window to the current frame instead of switching to the window.

Function: only-one-frame-p ¶

  T if there is only one maximized frame in the current head. This can be used around a the "only" command to avoid the warning message.

Variable: *min-frame-width* ¶

  The minimum width a frame can be. A frame will not shrink below this width. Splitting will not affect frames if the new frame widths are less than this value.

Variable: *min-frame-height* ¶

  The minimum height a frame can be. A frame will not shrink below this height. Splitting will not affect frames if the new frame heights are less than this value.

Variable: *new-frame-action* ¶

  When a new frame is created, this variable controls what is put in the new frame. Valid values are

  `:empty`

    The frame is left empty

  `:last-window`

    The last focused window that is not currently visible is placed in the frame. This is the default.

Variable: *expose-auto-tile-fn* ¶

  Function to call to tile current windows.

Variable: *expose-n-max* ¶

  Maximum number of windows to display in the expose

Variable: *frame-indicator-text* ¶

  What appears in the frame indicator window?

Variable: *frame-indicator-timer* ¶

  Keep track of the timer that hides the frame indicator.

Variable: *frame-number-map* ¶

  Set this to a string to remap the frame numbers to more convenient keys. For instance,

  "hutenosa"

  would map frame 0 to 7 to be selectable by hitting the appropriate homerow key on a dvorak keyboard. Currently, only single char keys are supported. By default, the frame labels are the 36 (lower-case) alphanumeric characters, starting with numbers 0-9.