In "Custom Move / Resize Window", I would like a way to control the placement of all window edges directly, and have the sizing be implicit.
I have made a number of shortcuts for placing windows so they fill most of the screen, but leave a stripe or corner for each one to be always visible no matter the stacking.
I also switch a lot between laptop-only and external display, and want to use the same shortcuts in both contexts.
The screens have different sizes, but my margin needs are the same for both, so specifying the window size at all, even using percentages, is a bad fit.
My preferred solution would let me specify the positions of both edges of each axis. Pixels from edge would suffice for my needs, but percent of screen should obviously still be supported.
The underlying mechanism would be no more complex than today. The biggest challenge would be for the GUI to support it all in a usable way. I think a full restructuring would be the best way to to make all the resulting possibilities manageable:
Here is a suggested outline of the relevant section of the "Configure Move/Resize" GUI
[v] Move left edge
based on [Left side of screen |v]
New X: [ 40] [px |v]
[-] Move right edge - unavailable when both Left edge and Width are provided
based on [Right side of screen |v]
New X: [ -30] [% of screen width |v]
[v] Change width
[Absolute| Relative to screen | Relative to window]
similar to horizontal
You can select max 2 of left/right/width. Same for top/bottom/height.
When a choice becomes unavailable because of this rule, it should be visibly disabled and an info-icon or plain text inside the section should explain why.
"Fill" would become obsolete - just position both the relevant edges in stead.
I believe it is fairly straightforward to migrate all possible settings for the old scheme to this one in a correct and unambiguous way.