FvwmRearrange(1)

๐Ÿ“ฆ
version 2.7.0 ยท 6 versions
, in alpine 3.24, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

๐ŸŽ€ FvwmRearrange(1) ๐ŸŽ€

Hey bestie ๐Ÿซถ this is the manual page for FvwmRearrange, from the Fvwm Modules section. Let's get into it ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

FvwmRearrange - rearrange fvwm windows โœจ

๐Ÿ’… SYNOPSIS ๐Ÿ’…

okay so FvwmRearrange is spawned by fvwm, which means no command line invocation will work ๐Ÿ™… don't even try typing it in your terminal, it's not gonna slay that way ๐Ÿ’€

๐Ÿ’œ DESCRIPTION ๐Ÿ’œ

This module can be called to tile or cascade windows ๐Ÿฆ‹

When tiling, the module tries to tile windows on the current screen, subject to certain constraints. Horizontal or vertical tiling is done so that no window overlaps another, and by default each window gets resized to its nearest resize increment. ngl sometimes you'll see a little space between tiled windows, and this is why ๐Ÿ™ˆ

When cascading, the module tries to cascade windows on the current screen, subject to certain constraints. Layering happens so that each consecutive window keeps its window title visible underneath the previous one. It's giving stacked-cards energy ๐ŸŒˆ

๐Ÿงš INVOCATION ๐Ÿงš

FvwmRearrange is best invoked from a menu, pop up, or button โœจ there's a bunch of command line options that let you constrain the layering, and we'll go through them below. Here are the example calls:

FvwmRearrange -tile -h 10 10 90 90

or

FvwmRearrange -cascade -resize 10 2 80 70

The first one horizontally tiles windows inside a bounding box that starts at 10 by 10 percent into and down the screen and ends at 90 by 90 percent into and down the screen. Main character tiling ๐Ÿ‘‘

The second one cascades windows starting 10 by 2 percent into and down the screen. The windows get constrained to 80 by 70 percent of the screen dimensions. Since -resize is also in the mix, the windows get resized to that constrained width and height ๐Ÿ”ฅ

โš ๏ธ FvwmRearrange can also be called as FvwmTile or FvwmCascade. That's the same as passing -tile or -cascade, BUT this form is obsolete and only kept around for backwards compatibility, so maybe don't build your new stuff on it ๐Ÿฅบ

Here's the rundown on the command line arguments ๐Ÿ’–

๐Ÿ“ OPTIONS ๐Ÿ“

  • -a โ€” affects every window type, even the ones with the WindowListSkip style ๐Ÿ‘€
  • -animate โ€” tries to do an animated move. This gets ignored if -resize or -maximize are used ๐ŸŽž๏ธ
  • -cascade โ€” cascades windows. This must be the very first thing on the command line. It's the default too ๐Ÿฅฐ
  • -desk โ€” cascades or tiles all the windows on the desk, instead of just the current screen ๐Ÿ–ฅ๏ธ
  • -flatx โ€” inhibits the border width increment. Only matters when cascading ๐Ÿ™…โ€โ™€๏ธ
  • -flaty โ€” inhibits the border height increment. Only matters when cascading ๐Ÿ™…โ€โ™€๏ธ
  • -h โ€” tiles horizontally (the default is vertical). Tiling only ๐ŸŒŠ
  • -incx arg โ€” adds a horizontal increment to each cascaded window, one after another. arg is a percentage of the screen width, or a pixel value if you slap a p on the end. Default is zero, and it's cascading only ๐Ÿ“
  • -incy arg โ€” same vibe as -incx, but vertical. arg is a percentage of the screen height, or pixels with a p suffix. Default is zero, cascading only ๐Ÿ“
  • -m โ€” also affects maximized windows (implied by -a) ๐ŸชŸ
  • -maximize โ€” when you move or resize a window, it also gets put into the maximized state ๐Ÿš€
  • -mn arg โ€” tiles up to arg windows in the tile direction. If there are more windows than that, a new row or column gets made, so basically a matrix is born ๐Ÿงฎ Tiling only.
  • -noanimate โ€” no animated move for you ๐Ÿ™…
  • -nomaximize โ€” don't put windows into the maximized state ๐Ÿ™…
  • -noraise โ€” stops windows from being raised, so the depth ordering stays exactly as it was ๐Ÿชจ
  • -noresize โ€” stops windows from being resized, so their sizes stay intact. This is the default when cascading ๐ŸงŠ
  • -nostretch โ€” if you're tiling, this stops windows from growing to fill the tile. They get shrunk to fit but never expanded. If you're cascading, it stops windows from expanding when you use -resize, so they'll only shrink to fit the maximal width and height (if you gave those) ๐Ÿค
  • -r โ€” reverses the window sequence ๐Ÿ”„
  • -resize โ€” forces every window to resize to the constrained width and height (if given). This is the default when tiling ๐Ÿ’ช
  • -s โ€” makes sticky windows get affected too (implied by -a) ๐Ÿ“Œ
  • -sp โ€” makes windows that are sticky across pages get affected too (implied by -a) ๐Ÿ“„
  • -sd โ€” makes windows that are sticky across desks get affected too (implied by -a) ๐Ÿ—‚๏ธ
  • -t โ€” makes transient windows get affected too (implied by -a) ๐Ÿซง
  • -tile โ€” tiles windows. This must be the first argument on the command line ๐Ÿงฉ
  • -u โ€” makes untitled windows get affected too (implied by -a) ๐Ÿซฅ
  • -ewmhiwa โ€” when rearranging, the calculation ignores the working area, like EwmhBaseStruts. By default, FvwmRearrange honours the working area ๐ŸŒค๏ธ

Also, up to four numbers can go on the command line as long as they aren't switches. The first pair sets an x and y offset to start the first window (default is 0, 0). What the second pair means depends on the mode:

  • When tiling, it's an absolute coordinate reference for the lower right bounding box for tiling ๐Ÿ“
  • When cascading, it's a maximal width and height for the layered windows. If an affected window goes over either of those, it gets resized down to the maximal width or height ๐Ÿ“ฆ

If any number ends with the letter p, it's taken as a pixel value. Otherwise it's a screen percentage. And specifying zero for any parameter is the same as not specifying it at all ๐Ÿซถ

๐Ÿ› BUGS ๐Ÿ›

๐Ÿšจ It is probably not a good idea to delete windows while windows are being rearranged. Bestie, I'm begging you, don't do that ๐Ÿ˜ญ

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

  • Andrew Veliath (original FvwmTile and FvwmCascade modules) ๐ŸŒŸ
  • Dominik Vogt (merged FvwmTile and FvwmCascade to FvwmRearrange) ๐Ÿซถ

And that's the whole page, bestie ๐ŸŒˆ Source is the 3rd Berkeley Distribution, version 2.7.0, dated 19 October 2022. Now go rearrange something iconic ๐Ÿ’–๐Ÿฆ‹โœจ