Did some work on the TTY backend in niri over the past few days. Merged PR for DisplayLink dock support, added "panel orientation" property read, and, based on cosmic-comp code, implemented the necessary logic to avoid screen blanking. Finally, both at niri startup and when switching TTYs, your screen won't flicker, as long as resolution/refresh rate stay the same.
Even when the screen does blank, it'll go faster, as there's now just one modeset instead of two (clear then draw frame).
@nikitonsky remember when Discord just appeared? You could just type a name and join a server. That didn't scale much of course, but still, for several months you did not need an account to use a major IM service. Kinda crazy to think about, especially compared to nine circles of hell you have to go through to use some Microsoft applications
Due to some Rust feature unification reasons, some builds of niri will load libwayland-server via dlopen rather than dynamic linking, hiding this dependency from build errors and from autodetection by rpm. This frequently just happens to work since libwayland-server is usually installed from other compositors.
A few lucky users however did hit the runtime panic trying to run niri while missing libwayland-server, making this a rare legitimate case of a "did not install Wayland" problem
Merged the "window positions and sizes in IPC" PR. Please test and report if anything's broken or missing, we have time to fix it until the next release.
Yesterday dove into one of the older animation jank bugs in niri: quickly resizing a window back and forth would cause adjacent windows to jump. This problem is hard to trigger unless you're specifically trying to (then it's easy), but it was causing "downstream" problems for more complex actions.
The fix was simple enough, but I imagined enough "interesting" cases around it and decided to write a whole bulk of tests. Check this out, all thanks to our layout and clock code!
niri v25.08 is now released with a logo, xwayland-satellite integration, basic screen reader support, NVIDIA screencast flickering fix, window positions and sizes in IPC, and many other improvements! :ablobcatbongo:
Implemented basic AccessKit integration for niri based on @DataTriny's proof-of-concept. I have little experience with screen readers, and also had several questions, so I would appreciate more eyes and testing on the PR:
Finally finished making niri screencasts asynchronously wait for rendering completion before handing the buffer over to PipeWire. This fixes screencast flickering problems on NVIDIA setups.
This is not PW explicit sync; I can now finish that too (OBS and PW released their fixes), but it'll act more as an optimization on top of the current code (since only OBS can use it for now, and not on its Flathub build (PW is too old there)).