Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FvwmRearrange fixes, updates, and changes.
Update, improve, rewrite, and add to the functionality of FvwmRearrange to fix issues, better understand monitors and their working area, make use of window hints when computing window sizes, and more. The following is a summary of the changes. * Add a -screen option. Default to current monitor. * Parse Monitor lines from M_CONFIG_INFO to get both the base struts and current desk. The default bounding box is the monitors working area. * Compare windows desk against current_desk with -desk option, so now only windows on the same desk are included. If using the global screen, -screen g', this will use the current_desk of the last monitor sent. * Store windows flags, position and size hints. Use window hints to compute the final size of the window (to match what fvwm would do). This honors ResizeHintOverride style and only uses size hints if that style is not set. Note, aspect ratio hints are not supplied to modules so will be ignored. * Skip sending Move/Resize commands to windows whose size or position will not change. * Redo math and logic for tiling and cascading functions. This simplifies things, and vertical and horizontal tiling are no longer separate loops. * Restructure a lot of the options and rename one letter options. * Update the manual page to list all the current options and describe new behavior. Options are grouped by tiling options, cascade options, general options, resizing options, filtering options, and ordering options. * Cascade windows resizes by default so it is consistent with tiling, remove the -resize option reducing this to a single -noresize flag to stop resizing for both tiling and cascading. The default size for cascading is 75 percent of the bounding box. * Add option -cascadew and -cascadeh to specific size to make cascaded windows. This accepts both percent of bounding box and pixel sizes. * Honor title bars placed in other locations besides the top, this way the padding due to the frame is correctly computed when using vertical tile bars. Note title bars on the bottom or right will not be visible when cascading windows, but their width will still affect offsets. * Add -fill_start and -fill_end options when tiling windows. This will allow empty cells in the grid to be filled by expanding windows in the first row/column or last row/column. * Add -auto_tile option which computes the size of the grid to tile in based off the number of windows. Make this behavior default if no options are sent. The default is to keep columns and rows close to equal, but this can be modified with the -max_n option which states the number of more columns (or rows with -h) to use. * Add -inc_equal option for cascading windows to make the x and y incremental offsets equal to the maximum of the two computed offsets using the default or combined with -incx, -incy, -flatx, and -flaty options. * Rename -h option as -swap, as this is more accurately describing what the option does, swaps the columns and rows before tiling. The old option -h is still accepted as an alias for -swap. * Add options to order the windows beyond the default order using the WindowList. These are -order_name, -order_icon, -order_class, -order_resource, -order_xy, -order_yx, -order_hw, and -order_wh.
- Loading branch information