-
-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FvwmRearrange overhaul #1081
Merged
Merged
FvwmRearrange overhaul #1081
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
somiaj
force-pushed
the
js/rearrange-improvements
branch
from
October 22, 2024 15:08
6d611e6
to
90bfd5f
Compare
ThomasAdam
added
type:enhancement
Augmenting an existing feature
type:new-feature
Brand new feature not yet present in fvwm3
relates:module
Issue is in module code
labels
Oct 22, 2024
somiaj
force-pushed
the
js/rearrange-improvements
branch
5 times, most recently
from
October 29, 2024 04:33
dc6a9e5
to
4f5d004
Compare
Create a boundingbox strut that contains the left, right, top, and bottom base struts. Use a common place for computing this, such that we can use it from move_resize, and be able to send the information to modules. Add the boundingbox base struts to the monitor information that is set to modules, so they are area of the base struts in any computations they want to do.
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.
Rather than relying on FvwmRearrange not creating a race condition between gathering a list of windows, and sending commands back to fvwm to move them, use a common event loop like how every other module does.
somiaj
force-pushed
the
js/rearrange-improvements
branch
from
October 31, 2024 15:31
4f5d004
to
77e8169
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
relates:module
Issue is in module code
type:enhancement
Augmenting an existing feature
type:new-feature
Brand new feature not yet present in fvwm3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
-screen
option. Default to current monitor.M_CONFIG_INFO
to get both the base struts and current desk. The default bounding box is the monitors working area.-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.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.longer separate loops.
-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.-cascadew
and-cascadeh
to specific size to make cascaded windows. This accepts both percent of bounding box and pixel sizes.-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.-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.-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.-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
.-order_name
,-order_icon
,-order_class
,-order_resource
,-order_xy
,-order_yx
,-order_hw
, and-order_wh
.