table of contents
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 resizing 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 options 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 example:
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 different 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 windows 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
-tile
-max_n N
-swap
-fill_start
-fill_end
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 previous 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 -nostretch and -noresize options will prevent windows from being stretched or resized.
-cascade
-cascadew arg
-cascadeh arg
-inc_equal
-incx arg
-incy arg
-flatx
-flaty
GENERAL OPTIONS¶
-screen name
-noraise
-maximize
-animate
-ewmhiwa
RESIZING OPTIONS¶
By default both tiling and cascading will resize windows based on the provided options. These options will limit this behavior.
-noresize
-nostretch
-nostretchx
-nostretchy
FILTERING OPTIONS¶
These options affect which windows inside the bounding box will be tiled or cascaded.
-all
-some
-skiplist
-sticky
-sticky_page
-sticky_desk
-transient
-no_maximized
-no_titled
-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_icon
-order_class
-order_resource
-order_xy
-order_yx
-order_hw
-order_wh
-reverse
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 working 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 instance 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 (updated for fvwm3 including adding the auto_tile option).
2024-11-30 |