In Sawfish there is a function called “pack window”, which moves a window in a given direction (up, down, left, right), until it’s border touches another window’s border. Almost like fvwm’s “Maximize grow” but it moves the window instead of resizing it.
This is useful for moving windows around with the keyboard. Combined with “maximize grow” it becomes like a tiling window manager but with more control.
Do you think this is possible to implement as a function in fvwm?
This was added in fvwm3 version 1.0.4: Moving windows: allow for "warping" to other windows in a given direction. The key bindings used in the default-config for this are
# Shuffle moves a window in a given direction until it hits another window.
# These bindings will shuffle a window using the arrow keys.
# Ctrl-Alt Up_Arrow - Shuffle window up
# Ctrl-Alt Right_Arrow - Shuffle window right
# Ctrl-Alt Down_Arrow - Shuffle window down
# Ctrl-Alt Left_Arrow - Shuffle window left
# Holding shift (Ctrl-Alt-Shift) will grow the window in the given direction.
DestroyFunc ShuffleDir
AddToFunc ShuffleDir
+ I Move shuffle layers $[w.layer] $[w.layer] snap windows $0
+ I WarpToWindow 50 50
Key Up WTSF CM ShuffleDir up
Key Down WTSF CM ShuffleDir down
Key Left WTSF CM ShuffleDir left
Key Right WTSF CM ShuffleDir right
Key Up WTSF CSM Maximize True 0 growup
Key Down WTSF CSM Maximize True 0 growdown
Key Right WTSF CSM Maximize True growright 0
Key Left WTSF CSM Maximize True growleft 0
You can find more information about this under the Move command in the manual page for fvwm3 1.0.4.