Commit Graph

2437 Commits

Author SHA1 Message Date
Ivan Molodetskikh
eff41ab716 config: Add merging for SwitchBinds 2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
0673260249 utils/watcher: Support config includes 2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
0a33dca5fd utils/watcher: Extract Props 2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
b3ae3adbb7 Partially implement config includes
Subsequent commits will add merging for all leftover sections.
2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
264289cd41 wiki: Document per-output and per-workspace layout overrides 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
f975672255 Add layout overrides to window_opening test 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
67ca2cb06c layout: Move scrolling width resolution to workspace
This is required now with per-output and per-workspace options.
2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
9ff1c90fa6 layout/monitor: Fix wrong Clone/Copy generic bounds 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
09cf8402c3 Add per-output layout config 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
a5e285865b Move background rendering to Workspace
Per-output background-color doesn't work yet.
2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
d5f4e79e4c Add per-workspace layout config
Per-workspace background-color doesn't work yet.
2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
d015c7e55b layout: Extract Monitor::append_workspaces() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
1465cd4139 layout: Move empty workspace handling to Monitor::new() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
7fc544b9d6 layout: Extract Monitor::into_workspaces() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
36dc5c6e8e layout: Deduplicate move_workspace_to_output() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
ea3bbea6bd layout: Extract Monitor::insert_workspace() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
3b4cf1ec8f layout: Extract Monitor::remove_workspace_by_idx() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
1484175408 layout: Remove unname_workspace() clean-up to Monitor 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
8c3345807a layout: Extract Monitor::verify_invariants() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
c353a7dae9 layout: Extract Layout::monitors{,_mut}() 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
e3068cd483 layout/tests: Make UpdateConfig an actual Op
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-02 09:33:08 +03:00
Ivan Molodetskikh
6aa8146c32 layout/tests: Generate LayoutPart instead of Layout config
Necessary for future changes, also produces much shorter failing output due to
not having to include all the options.
2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
4c524b4719 layout: Store Layout directly in Options 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
1fa9dd32ed config: Split Layout from LayoutPart 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
2781d3a743 config: Replace resolve_against with MergeWith 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
e739ce8171 config: Add merge!() macros to reduce boilerplate 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
a2727ba2c9 config: Introduce MergeWith trait 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
8df6231cc1 layout/tests: Make Op non-Copy 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
e837e39623 FAQ: Mention how to escape from a dead screen locker 2025-09-24 08:31:01 +03:00
Ivan Molodetskikh
3850739e44 FAQ: Mention directly opening in column, and focus-follows-mouse on monitor edges 2025-09-23 15:40:39 +03:00
Malix
4d4d968d97 enhance(docs): NixOS - Intel graphics workaround wiki link 2025-09-22 17:42:12 +03:00
Ivan Molodetskikh
6451d6be4f config: Fix discrepancy in default shadow color 2025-09-20 15:08:15 +03:00
Ivan Molodetskikh
00a4e22566 config: Add a diff empty to default test 2025-09-20 15:08:15 +03:00
Ivan Molodetskikh
19d21fc9b1 config: Fix inability to override border/focus-ring/tab-indicator gradient with color in window rules 2025-09-20 15:08:15 +03:00
Ivan Molodetskikh
a1dccedbb7 Update libdisplay-info and Smithay (popup destruction protocol check, constraints check) 2025-09-20 15:08:09 +03:00
Ivan Molodetskikh
37aea69715 Move workspace options check to workspace tests 2025-09-20 13:42:59 +03:00
Ivan Molodetskikh
7024a23d2c layout/workspace: Rearrange checks 2025-09-20 13:42:59 +03:00
Ivan Molodetskikh
86edeb3b0b Fix DnD icon offset from surface cursor
The offset is already relative to the hotspot, no need to offset twice.
2025-09-19 15:48:07 +03:00
Ross Smyth
d9648e6bde Revert "revert nushell completion for flake.nix"
This reverts commit ed799f5afc.
2025-09-18 11:26:11 +03:00
Ross Smyth
fcd10fea8e nix: Bump flake.lock 2025-09-18 11:26:11 +03:00
Ivan Molodetskikh
ffb3030e36 Fix layer-shell initial commit logic
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-18 08:11:08 +03:00
Ivan Molodetskikh
4808ba2b20 Update Smithay (last_acked refactor, Qt layer-shell popup grab fix, popup ordering fix) 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
35cbab476e Add unmap-from-floating test
Hits a code path that reads the last acked state after unmapping.
2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
28d072d893 tests/client: Check and panic on protocol error
Otherwise it keeps inf-looping.
2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
276275ff76 Add sending initial configure trace log 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
82276771a5 Downgrade lack of our initial configure from error! to debug!
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-17 22:04:23 +03:00
Ivan Molodetskikh
cd7108ef5d Improve commit handler trace logging 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
d45b06385d layout/scrolling: Remove more redundant animate args
These were redundant before too.
2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
919dcbe774 layout/scrolling: Remove now-redundant animate arg 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
a0d002c318 layout/tile: Animate un/fullscreen resize
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-17 22:04:23 +03:00