Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FVWMREARRANGE(1)						FVWMREARRANGE(1)

NAME
     FvwmRearrange - rearrange fvwm windows

SYNOPSIS
     FvwmRearrange [options] [bounding box] [options]

     FvwmRearrange is spawned by fvwm, so no command line invocation will work.

DESCRIPTION
     This module can be called to tile or cascade windows.

     When  tiling the module will tile the windows into a grid (table or matrix)
     inside the bounding box (the current monitor's working  area  by  default).
     Tiling  is  performed so that windows will not overlap. When moving and re-
     sizing windows to fit into the grid, windows are resized to  their  nearest
     increment size, specified by the window's size hints (this is why sometimes
     space  might  appear between tiled windows, common with terminals). Use the
     ResizeHintOverride style on widows with increment size  hints  to	override
     this behavior (which removes the gaps).

     When  cascading the module will cascade the windows inside the bounding box
     from the top left of the bounding box. Windows will be resized to	fit  the
     bounding box and layering is performed so that consecutive windows all have
     their titles visible underneath the previous window.

     The  behavior of both tiling and cascading can be configured by the options
     listed below. This can control the size of the bounding box, if windows are
     resized, and which windows are affected, and so on.

INVOCATION
     FvwmRearrange is best invoked from a menu, keybinding, or button. There are
     a number of command line options which can be used to control  how  windows
     will be cascaded/tiled, described below. Invoking FvwmRearrange with no op-
     tions will auto tile (see _-auto_tile) windows on the current monitor:

	 FvwmRearrange

     This  tiles  all  windows in the working area of the current monitor into a
     grid. This size of the grid will be computed using the  number  of  windows
     trying  to make the grid as square as possible. Windows on the top row will
     be resized to take up any extra space filling the full working area. Adding
     additional arguments can change the behavior, for example:

	 FvwmRearrange -tile -swap 10 10 90 90

     This invocation will tile windows in a single column with	a  bounding  box
     which  starts  at 10 by 10 percent into and down the monitor's working area
     and ends at 90 by 90 percent into and down the working area. Another  exam-
     ple:

	 FvwmRearrange -cascade 10 2 80 70

     This invocation will cascade windows starting 10 by 2 percent into and down
     the  monitor's  working  area.  Windows will be resized so their height and
     width are 75 percent of the bounding box, which ends at 80 by 70 percent of
     the working area.

     FvwmRearrange can also be run multiple times on the same monitor with  dif-
     ferent  bounding  boxes.  This  way  you can better control how windows are
     tiled. Consider the following example:

	 FvwmRearrange -tile -swap 0 0 35 100
	 FvwmRearrange 35 0 100 100

     The first command will create a single column of  windows	located  on  the
     left  35%	of the monitor, and the second will auto tile the windows on the
     right 65% of the monitor. This way you can control how windows are tiled in
     different parts of the monitor independent of each other.

     If you want to run FvwmRearrange automatically when new windows are  added,
     use  FvwmEvent  to trigger FvwmRearrange with an add_window event. If using
     multiple bounding boxes (like the above example), a  ManualPlacement  Style
     would  allow  you to place a window in the portion of the screen you wanted
     it to be tiled in.

OPTIONS
     FvwmRearrange is only configured using command line options. These  options
     can  come before or after the bounding box, and all start with a '-'. Below
     the options are split into categories, TILING OPTIONS,  CASCADING	OPTIONS,
     GENERAL OPTIONS, RESIZING OPTIONS, FILTERING OPTIONS, and ORDERING OPTIONS.

   TILING OPTIONS
     Tiling  takes  the windows inside the bounding box, creates a grid of equal
     sized cells based on the number of windows, then resizes and moves the win-
     dows to fill the cells, starting at the top left. The cells are then filled
     one row at a time (from left to right) working downward.

     Windows may have minimum size or size increment EMWH hints, so there  could
     be  gaps  between windows or some windows minimum size might be bigger than
     the cell. The ResizeHintOverride fvwm Style will override this behavior and
     make windows fit in their cells better.

     -auto_tile
	 This is the default behavior which tiles all windows into as close to a
	 square grid as possible. There can be up to one more  column  than  row
	 (or  one  more row than column with -swap), depending on number of win-
	 dows. If the option -max_n N is also provided, then the grid will  have
	 N  more  columns than rows (or N more rows than columns if -swap is in-
	 cluded). This option implies -fill_start so all space will be used.  If
	 -fill_end  option  is	provided,  the free space is used at the end in-
	 stead.

     -tile
	 This will tile the windows into a single row (or column if with -swap).
	 If -max_n N is also provided, there will be at most N columns	per  row
	 (or  N  rows  per column with -sawp) in the resulting grid. If the grid
	 has more cells than the number of windows, then the additional cells at
	 the end will be left open, unless the -fill_start or -fill_end  options
	 are included.

     -max_n N
	 This option alters how the grid is computed. When using -auto_tile this
	 gives	the  number of more columns than rows (or more rows than columns
	 with -swap). When using -tile this gives the max number of columns, be-
	 fore a new row is created (or max number of rows with	-swap).  Default
	 is 0.

     -swap
	 Swaps	the  rows  and	columns,  and  swaps the direction the cells are
	 filled, by starting at the top left cell and filling each column  down-
	 ward  (from  top  to bottom) while working to the right. This use to be
	 called horizontal sort (with the default being vertical sort), and  the
	 old option -h is an alias for -swap, due to this history.

     -fill_start
	 This will use any unused space in the grid by filling the first row (or
	 first column with -swap) left open in the grid. This is done by growing
	 the  windows  in the row (or column) to fill the unused space. The rest
	 of the windows will then fill up the rest of the grid.

     -fill_end
	 This will use any unused space in the grid by filling the last row  (or
	 last column with -swap) left open in the grid.

     -gap_x N, -gap_y N, -gap N
	 This  will  set  the  gap  between the cells the windows are placed in.
	 -gap_x sets the size of the horizontal gap, -gap_y sets the size of the
	 vertical gap, and -gap sets both the size of the horizontal and  verti-
	 cal  gap  to  be  the same. The value N is the number of pixels between
	 cells, or the width of the line between cells. Default: 0.

   CASCADING OPTIONS
     Cascading takes all windows in the bounding box, places the first window in
     the upper left corer of the bounding box, then  stacks  the  second  window
     just  below the first shifted slightly down and to the right, so the previ-
     ous window can be seen behind it. This process  is  repeated  placing  each
     window slightly down and to the right of the previous window.

     By default the windows are resized such that their height and width are 75%
     of the bounding box's height and width. Though as the windows are cascaded,
     windows  will  shrunk  so they will stay inside the bounding box. The -nos-
     tretch and -noresize options will prevent windows from being  stretched  or
     resized.

     -cascade
	 Cascade windows inside the bounding box.

     -cascadew arg
	 Specifies  the width of the cascade windows. arg is a percentage of the
	 bounding box's width, or a pixel value if a p is suffixed. Windows  are
	 shrunk  if  the  width pushes them outside the bounding box. Default is
	 75.

     -cascadeh arg
	 Specifies the height of the cascade windows. arg is a percentage of the
	 bounding box's height, or a pixel value if a p is suffixed. Windows are
	 shrunk if the height pushes them outside the bounding box.  Default  is
	 75.

     -inc_equal
	 Make the x and y increment equal to the maximum of the two values. This
	 is  useful  to get the offset to be equal to the size of the border and
	 title bar in both directions. This can be combined with -incx,  _-incy,
	 -flatx, and -flaty.

     -incx arg
	 Specifies  an	additional  horizontal	increment  which is successively
	 added to cascaded windows. arg is a percentage of bounding box's width,
	 or a pixel value if a p is suffixed. Default is zero.

     -incy arg
	 Specifies an additional vertical increment which is successively  added
	 to cascaded windows. arg is a percentage of bounding box's height, or a
	 pixel value if a p is suffixed. Default is zero.

     -flatx
	 Inhibits incrementing the horizontal position by a windows border width
	 (and title width if titles are on the right or left). Useful with -incx
	 to better control the horizontal increment.

     -flaty
	 Inhibits  incrementing  the vertical position by a windows border width
	 (and title width if titles are on the top or bottom). Useful with -incy
	 to better control the vertical increment.

   GENERAL OPTIONS
     -screen name
	 By default the current monitor is used to  determine  what  windows  to
	 cascade/tile,	and  is used as the base bounding box. This will use the
	 monitor specified by the RandR name instead. If name is  equal  to  "g"
	 the  global  monitor  (bounding  box  containing all monitors is used).
	 Since this may cause windows to  span	across	multiple  monitors,  the
	 working area is ignored (see ewmhiwa).

     -noraise
	 Inhibits window raising, leaving the depth ordering intact.

     -maximize
	 When  moving/resizing	a  window, put them into a maximized state. This
	 makes so Maximize can be used to restore the previous	size  and  posi-
	 tion.

     -animate
	 When  only  moving windows (-noresize is used), use AnimateMove instead
	 of Move to move windows.

     -ewmhiwa
	 When rearranging windows, make the calculation ignore the working area,
	 such as EwmhBaseStruts; by default, FvwmRearrange will honour the work-
	 ing area. This option may place windows outside of the current monitor.

     -win_cmd COMMAND
	 Runs the fvwm COMMAND in the  context	of  every  window  that  is  re-
	 arranged.  This  can  be  used to set the state of all affected windows
	 with the COMMAND "State n" so they can be matched using the  "State  n"
	 conditional.  The COMMAND is sent after the window is moved/resized, so
	 any change in window's size, adding removing title bars, etc, will  not
	 be used in computing the new position/size of the window.

   RESIZING OPTIONS
     By  default both tiling and cascading will resize windows based on the pro-
     vided options. These options will limit this behavior.

     -noresize
	 Inhibits window resizing, leaving window sizes intact.

     -nostretch
	 Inhibits windows from growing to fit the grid	cell  (when  tiling)  or
	 bounding  box (when cascading). Windows are still shrunk to fit but not
	 expanded. This implies both -nostretchx and -nostretchy.

     -nostretchx
	 Inhibits windows from growing horizontally to fit, but they will  still
	 be shrunk.

     -nostretchy
	 Inhibits windows from growing vertically to fit, but they will still be
	 shrunk.

   FILTERING OPTIONS
     These options affect which windows inside the bounding box will be tiled or
     cascaded.

     -all
	 Cause	skipped, sticky, and transient windows to also be cascaded/tiled
	 (ignored by default). This is a shortcut  for	-skiplist,  -sticky  and
	 -transient.

     -some
	 Don't	include maximized windows and windows without title bars (useful
	 when cascading) when cascading/tiling. This is a shortcut for -no_maxi-
	 mized and -no_titled.

     -skiplist
	 Causes windows on the windows skip list (see WindowListSkip  style)  to
	 also be affected.

     -sticky
	 Causes  sticky  windows  to  also  be	affected. This is a shortcut for
	 -sticky_page and -sticky_desk.

     -sticky_page
	 Causes windows sticky across pages to also be affected.

     -sticky_desk
	 Causes windows sticky across desks to also be affected.

     -transient
	 Causes transient windows to also be affected.

     -no_maximized
	 Don't include windows in the maximized state to be cascaded/tiled.

     -no_titled
	 Don't include windows with title bars to be cascaded/tiled.

     -desk
	 Causes all windows on the desk to be  cascaded/tiled  instead	of  only
	 windows that intersect the bounding box.

     -on_screen
	 Causes  all windows on the monitor to be cascaded/tiled instead of only
	 windows that intersect the bounding box. Has no effect  when  used  to-
	 gether with -desk.

   ORDERING OPTIONS
     Windows are tiled or cascaded based on their order. By default the order is
     based  off fvwm's WindowList order (usually based off the order the windows
     were last focused). These options control the window order.

     -order_name
	 Order the windows by their name.

     -order_icon
	 Order the windows by their icon name.

     -order_class
	 Order the windows by their class.

     -order_resource
	 Order the windows by their resource.

     -order_xy
	 Order the windows based on their (x, y) coordinate position. This is  a
	 lexicographic	ordering,  by comparing x-coordinates first, then if the
	 x-coordinates	are  equal  compare  the  y-coordinates.  This	ordering
	 matches the ordering of the -swap tiling option.

     -order_yx
	 Order	the windows based on their (x, y) coordinate position. This is a
	 lexicographic ordering, by comparing y-coordinates first, then  if  the
	 y-coordinates	are  equal  compare  the  x-coordinates.  This	ordering
	 matches the default positing of tiling windows.

     -order_hw
	 Order the windows based on their height, and if their heights	are  the
	 same  compare	windows  based	on  their width. This can be useful with
	 -cascade and -noresize to stack windows based on their size.

     -order_wh
	 Order the windows based on their width, and if  their	widths	are  the
	 same  compare	windows  based	on their height. This can be useful with
	 -cascade and -noresize to stack windows based on their size.

     -reverse
	 Reverses the window ordering.

BOUNDING BOX
     The bounding box is the area in which  FvwmRearrange  will  both  find  and
     place  windows  when cascading/tiling. The base bounding box is the working
     area of the current or specified monitor via the -screen  name  option.  If
     the option -ewmhiwa is provided the base bounding box will ignore the work-
     ing area and use the full monitor.

     Up  to four numbers can be placed on the command line to specify a bounding
     box relative to the base bounding box of the  given  monitor.  The  numbers
     give the position of the corners of the bounding box in the following order
     (default is "0 0 100 100"):

	 Left Top Right Bottom

     These numbers are treated as a percentage of the base bounding box. For in-
     stance  the  bounding  box  "10  5 85 80" would use a bounding starting 10%
     across the working area from the left and ending  85%  across  the  working
     area,  while  starting 5% down the working area from the top and ending 80%
     down the working area. If any number is suffixed with the letter p, then it
     is taken to be a pixel value instead of a percentage. Specifying  zero  for
     any  parameter is equivalent to not specifying it (for example "0 0 0 0" is
     the same as "0 0 100 100").

BUGS
     It is probably not a good idea to delete windows while  windows  are  being
     rearranged.

AUTHORS
     Andrew  Veliath  (original  FvwmTile and FvwmCascade modules), Dominik Vogt
     (merged FvwmTile and FvwmCascade to FvwmRearrange),  Jaimos  Skriletz  (up-
     dated for fvwm3 including adding the auto_tile option).

				   2026-06-27			FVWMREARRANGE(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=FvwmRearrange&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help