aboutsummaryrefslogtreecommitdiff
path: root/src/layout
AgeCommit message (Collapse)Author
2025-10-18feat(move-floating-window): percentage change (#2371)Mykyta Onipchenko
* feat: add percentage change to move-floating-window * fixes --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-10-15layout: Make resizing actions unmaximizeIvan Molodetskikh
I feel this is more intuitive compared to them doing nothing. True maximize is kinda similar to full-width in spirit, so make the actions behave the same.
2025-10-15Implement maximize-to-edges (true Wayland maximize)Ivan Molodetskikh
2025-10-15layout/monitor: Make between-workspace insert hint narrowerIvan Molodetskikh
I've got feedback that full-width hint looks like the window will be maximized on the new workspace.
2025-10-15layout/tile: Fade out border for fullscreenIvan Molodetskikh
2025-10-15layout/tile: Fade out shadow for fullscreenIvan Molodetskikh
2025-10-15layout/tile: Fade out focus ring for fullscreenIvan Molodetskikh
2025-10-15layout: Fix anim jump when releasing interactive move in the overviewIvan Molodetskikh
Probably the tile window loc wasn't zoomed when it should. But also the interactive move grab case doesn't consider the window loc at all, which seems to work ok, so let's do that until a problem is found with it.
2025-10-15layout: Unfullscreen before removing for interactive moveIvan Molodetskikh
Several reasons for this: - Remove the sizing code from interactive move duplicated with toggle_window_floating. - Make the tiled size restore too instead of requesting 0x0 (which doesn't work for windows in the Tiled state).
2025-10-02config: Add merging for GesturesIvan Molodetskikh
2025-10-02config: Add merging for misc sectionsIvan Molodetskikh
2025-10-02Partially implement config includesIvan Molodetskikh
Subsequent commits will add merging for all leftover sections.
2025-10-02layout: Move scrolling width resolution to workspaceIvan Molodetskikh
This is required now with per-output and per-workspace options.
2025-10-02layout/monitor: Fix wrong Clone/Copy generic boundsIvan Molodetskikh
2025-10-02Add per-output layout configIvan Molodetskikh
2025-10-02Move background rendering to WorkspaceIvan Molodetskikh
Per-output background-color doesn't work yet.
2025-10-02Add per-workspace layout configIvan Molodetskikh
Per-workspace background-color doesn't work yet.
2025-10-02layout: Extract Monitor::append_workspaces()Ivan Molodetskikh
2025-10-02layout: Move empty workspace handling to Monitor::new()Ivan Molodetskikh
2025-10-02layout: Extract Monitor::into_workspaces()Ivan Molodetskikh
2025-10-02layout: Deduplicate move_workspace_to_output()Ivan Molodetskikh
2025-10-02layout: Extract Monitor::insert_workspace()Ivan Molodetskikh
2025-10-02layout: Extract Monitor::remove_workspace_by_idx()Ivan Molodetskikh
2025-10-02layout: Remove unname_workspace() clean-up to MonitorIvan Molodetskikh
2025-10-02layout: Extract Monitor::verify_invariants()Ivan Molodetskikh
2025-10-02layout: Extract Layout::monitors{,_mut}()Ivan Molodetskikh
2025-10-02layout/tests: Make UpdateConfig an actual OpIvan Molodetskikh
We can do it now that it's non-Copy. This also fixes a new stack overflow when running the random test in debug mode (which somehow occurs even though it's skipped in debug mode) that appeared after adding LayoutPart for some unbeknownst to me reason.
2025-10-02layout/tests: Generate LayoutPart instead of Layout configIvan Molodetskikh
Necessary for future changes, also produces much shorter failing output due to not having to include all the options.
2025-10-02layout: Store Layout directly in OptionsIvan Molodetskikh
2025-10-02config: Split Layout from LayoutPartIvan Molodetskikh
2025-10-02config: Replace resolve_against with MergeWithIvan Molodetskikh
2025-10-02layout/tests: Make Op non-CopyIvan Molodetskikh
2025-09-20Move workspace options check to workspace testsIvan Molodetskikh
2025-09-20layout/workspace: Rearrange checksIvan Molodetskikh
2025-09-17layout/scrolling: Remove more redundant animate argsIvan Molodetskikh
These were redundant before too.
2025-09-17layout/scrolling: Remove now-redundant animate argIvan Molodetskikh
2025-09-17layout/tile: Animate un/fullscreen resizeIvan Molodetskikh
This turned out to require quite a few changes. We keep track of the tile resize animation progress separately now, in order to provide a resizing black fullscreen backdrop for non-resizable windows. The window is always rendered in the middle of the tile, which once again aids with the resizing black fullscreen backdrop. The backdrop itself will fade in from transparency so that it's less jarring. The resize animation now keeps track of the fullscreen progress to deal with the case where an unfullscreen resize is interrupted by another non-fullscreen resize. In this case, the fullscreen progress continues animating to avoid sudden disappearance of the fullscreen backdrop. Some things like border visibility switch to this fullscreen progress once again to avoid jarring appearance/disappearance. The border radius animates in accordance with the fullscreen progress to match the visuals.
2025-09-17layout/tile: Remove unused functionIvan Molodetskikh
As far as I can tell, it was unused even when it was first added.
2025-09-17layout/tile: Extract two variablesIvan Molodetskikh
2025-09-17layout/scrolling: Animate tiles_origin changing on un/fullscreenIvan Molodetskikh
2025-09-17layout/scrolling: Track pending vs. current fullscreen for ColumnsIvan Molodetskikh
We already did that for Tiles, but for Columns we only tracked what was effectively pending fullscreen. We used it in several places where the current fullscreen should've been used instead, like the tile origin or the view offset. This commit splits the two and makes every place use the right one. Fixes things like tiles briefly appearing at y=0 between issuing the fullscreen command and the tile committing in response to the fullscreen configure.
2025-09-17layout/scrolling: Store view_offset_before_fullscreen when column actually ↵Ivan Molodetskikh
goes fullscreen Simplifies the handling and correctly saves/restores view offset for clients that are slow to fullscreen, as can be seen from the fixed test.
2025-09-17layout/tests/fullscreen: Add broken removing tile view pos restore testIvan Molodetskikh
2025-09-17Add unfullscreen view offset restoration testsIvan Molodetskikh
2025-09-17layout/tests: Extract fullscreen tests to submoduleIvan Molodetskikh
2025-09-16layout: End DnD gesture when toggling interactive move to floatingIvan Molodetskikh
Effective behavior mostly unchanged (it would end on refresh()), but this was failing the invariant checks.
2025-09-16layout: Fix crash when a window opens next-to an only interactively moved ↵Ivan Molodetskikh
window with no outputs
2025-09-15layout/tests: Mark operations_dont_panic as slowIvan Molodetskikh
It's by far the slowest test (disabling it cuts cargo test time by 2x), and it hadn't caught much in the past months.
2025-08-29layout/floating: Fix resetting preset width idx instead of heightIvan Molodetskikh
2025-08-29Add cycle back feature for presets of column/window width/height.Said Kadrioski