aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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-02config: Add merge!() macros to reduce boilerplateIvan Molodetskikh
2025-10-02config: Introduce MergeWith traitIvan Molodetskikh
2025-10-02layout/tests: Make Op non-CopyIvan Molodetskikh
2025-09-24FAQ: Mention how to escape from a dead screen lockerIvan Molodetskikh
2025-09-23FAQ: Mention directly opening in column, and focus-follows-mouse on monitor ↵Ivan Molodetskikh
edges
2025-09-22enhance(docs): NixOS - Intel graphics workaround wiki linkMalix
2025-09-20config: Fix discrepancy in default shadow colorIvan Molodetskikh
2025-09-20config: Add a diff empty to default testIvan Molodetskikh
2025-09-20config: Fix inability to override border/focus-ring/tab-indicator gradient ↵Ivan Molodetskikh
with color in window rules
2025-09-20Update libdisplay-info and Smithay (popup destruction protocol check, ↵Ivan Molodetskikh
constraints check)
2025-09-20Move workspace options check to workspace testsIvan Molodetskikh
2025-09-20layout/workspace: Rearrange checksIvan Molodetskikh
2025-09-19Fix DnD icon offset from surface cursorIvan Molodetskikh
The offset is already relative to the hotspot, no need to offset twice.
2025-09-18Revert "revert nushell completion for flake.nix"Ross Smyth
This reverts commit ed799f5afcf6a3dc805def75d0824ecc24de4f32.
2025-09-18nix: Bump flake.lockRoss Smyth
2025-09-18Fix layer-shell initial commit logicIvan Molodetskikh
I didn't properly update it for the Smithay refactor. It was reading initial_configure_sent too early. This worked before when niri had to reset it manually, but it no longer works now that it is automatically reset already before entering this function.
2025-09-17Update Smithay (last_acked refactor, Qt layer-shell popup grab fix, popup ↵Ivan Molodetskikh
ordering fix)
2025-09-17Add unmap-from-floating testIvan Molodetskikh
Hits a code path that reads the last acked state after unmapping.
2025-09-17tests/client: Check and panic on protocol errorIvan Molodetskikh
Otherwise it keeps inf-looping.
2025-09-17Add sending initial configure trace logIvan Molodetskikh
2025-09-17Downgrade lack of our initial configure from error! to debug!Ivan Molodetskikh
This can happen if a surface unmaps by committing a null buffer and then immediately does the initial commit without a sync roundtrip, while there are pending configures from the compositor in-flight. In this case, the surface cannot tell that the pending configures were meant for "before unmapping" and considers them to be the new initial configure. From our point of view, we don't get to do a proper initial configuration sequence in this case, and receive a mapping commit without our initial configure state. We cannot really do much about it, but it is not an error when this specific situation happens.
2025-09-17Improve commit handler trace loggingIvan 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-17tests/fullscreen: Add broken slow client unfullscreen view offset ↵Ivan Molodetskikh
restoration test
2025-09-17tests: Move complete_animations() to FixtureIvan Molodetskikh
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