2452 Commits

Author SHA1 Message Date
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
Ivan Molodetskikh
d0e98d6e73 layout/tile: Remove unused function
As far as I can tell, it was unused even when it was first added.
2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
0b500334f9 layout/tile: Extract two variables 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
a3203d92ec layout/scrolling: Animate tiles_origin changing on un/fullscreen 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
c832bdecdd layout/scrolling: Track pending vs. current fullscreen for Columns
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-17 22:04:23 +03:00
Ivan Molodetskikh
b8995a12d1 layout/scrolling: Store view_offset_before_fullscreen when column actually 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-17 22:04:23 +03:00
Ivan Molodetskikh
2f9832aa36 tests/fullscreen: Add broken slow client unfullscreen view offset restoration test 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
618c83c59f tests: Move complete_animations() to Fixture 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
318f6ca8cc layout/tests/fullscreen: Add broken removing tile view pos restore test 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
c9c28aa497 Add unfullscreen view offset restoration tests 2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
5357db39cd layout/tests: Extract fullscreen tests to submodule 2025-09-17 22:04:23 +03:00
Kai Koehler
08f5c6fecb Make hot corners configurable, including per-output (#2108)
* Add corner selection in config

* Add hot corner docs

* Working per-monitor hot corners

Handle defaults

* run cargo fmt --all

* Fix hot corners in is_sticky_obscured_under

* Change default to fall back to gesture hot corners if output hot corners are unset

* Add hot corner output config docs

* Support fractional scaling

* Trigger hot corners over widgets

* Improve float handling
Fixed YaLTeR/niri/pull/2108

* Refactor

* Bug Fixes

* Amend docs

Fix styling

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Integrate code review

Move is_inside_hot_corner

* fixes

---------

Co-authored-by: Aadniz <8147434+Aadniz@users.noreply.github.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-09-16 15:10:01 +00:00
Anagram
bffc5c1377 Include play/stop/prev/next media keys in the default config. (#2395)
* Included example for media keys: play/pause, stop, previous and next in the default config

* Update resources/default-config.kdl

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-09-16 13:47:29 +00:00
Ivan Molodetskikh
c30e5c9185 layout: End DnD gesture when toggling interactive move to floating
Effective behavior mostly unchanged (it would end on refresh()), but this was
failing the invariant checks.
2025-09-16 08:35:03 +03:00
Ivan Molodetskikh
b2d2a766e4 layout: Fix crash when a window opens next-to an only interactively moved window with no outputs 2025-09-16 08:35:03 +03:00
Ivan Molodetskikh
cd0d45fdb8 layout/tests: Mark operations_dont_panic as slow
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-09-15 09:06:34 +03:00
Ivan Molodetskikh
e6a8ad3847 niri.spec.rpkg: Add xwayland-satellite dependency
It landed in stable Fedora.
2025-09-14 09:40:20 +03:00
Ivan Molodetskikh
b7909dbf61 Update cargo-rpm version 2025-09-12 09:00:21 +03:00
ilyx
bdee1a6576 Don't clear DISPLAY/WAYLAND_DISPLAY/WAYLAND_SOCKET on WSL with --session (#2354)
* use winit backend on WSL

* Update src/main.rs

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-09-08 19:13:04 +00:00
Jan Ivica
22f629c24b wiki: Remove rofi-wayland mention 2025-09-07 04:00:23 -07:00
Ivan Molodetskikh
c69464c128 wiki: Add Name and Logo page 2025-09-03 22:01:04 +03:00
Ivan Molodetskikh
c08bffb092 wiki: Set vertical-align: middle for tables
Should match GitHub better.
2025-09-03 21:41:55 +03:00
Ivan Molodetskikh
0c5beaac40 wiki/Accessibility: Mention more current limitations 2025-09-03 13:34:28 +03:00
yuitayuun
77465e11fe wiki/Xwayland: Added a mention of Native Wayland for gaming compat (#2321)
* wiki/Xwayland: Added a mention of Native Wayland for gaming compatibility

* Update docs/wiki/Xwayland.md

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-09-01 15:04:33 +03:00
Ivan Molodetskikh
db419b4fc7 wiki/Accessibility: Clarify workspace announcement 2025-08-31 11:20:20 +03:00
Ivan Molodetskikh
7c14063707 wiki/Accessibility: Mention xfce4-appfinder 2025-08-31 11:19:29 +03:00
Ivan Molodetskikh
01be0e65f4 README: Add logo v25.08 2025-08-30 15:18:41 +03:00
Ivan Molodetskikh
96d9e5e956 Update README 2025-08-30 15:18:41 +03:00
Ivan Molodetskikh
5dd6fbddb5 wiki/Accessibility: Add demo video 2025-08-30 15:18:41 +03:00
Ivan Molodetskikh
a62b38790e niri.spec.rpkg: Update licenses 2025-08-29 22:39:15 +03:00
Ivan Molodetskikh
af4b5f99e9 Bump version to 25.08 2025-08-29 22:01:28 +03:00
Ivan Molodetskikh
ddb9dd407d Change xwl-s spawning error messages from info! to warn! 2025-08-29 19:06:16 +03:00
Ivan Molodetskikh
0cc041f5ad wiki/Nvidia: Mention that screencast flickering was fixed 2025-08-29 16:30:46 +03:00
Ivan Molodetskikh
6e0b38050d default-config: Use spawn-sh more
It's easier to understand.
2025-08-29 15:58:01 +03:00
Ivan Molodetskikh
bf472970c6 wiki: Update Xwayland-related info 2025-08-29 11:54:25 +03:00
Ivan Molodetskikh
082d0581b7 Improve filtering for tests that need EGL
This way we don't skip the layout animation tests.
2025-08-29 10:07:15 +03:00