Post AzlR9yLSuimXtF5vSi by YaLTeR@mastodon.online
(DIR) More posts by YaLTeR@mastodon.online
(DIR) Post #AYj21kFfTyskKSHNQW by YaLTeR@mastodon.online
2023-08-14T15:13:27Z
2 likes, 1 repeats
Decided to try writing a Wayland compositor for fun. Took me a few days to get things going to a video-able state.This is scrollable tiling, heavily inspired by PaperWM (which I'm still using and very much enjoying). You've got an infinite strip of windows that you can scroll through.It's also got dynamic workspaces which work like in GNOME Shell (the Correct™ way to do workspaces), but all monitors have workspaces.The repo is https://github.com/YaLTeR/niri if you want to peek at the code
(DIR) Post #AYj21lfaD7Coj7PaSW by a1ba@suya.place
2023-08-14T15:18:40.311620Z
0 likes, 0 repeats
@YaLTeR it might be fun on tablets...
(DIR) Post #AYj2Hwgf1325Wud6tE by YaLTeR@mastodon.online
2023-08-14T15:19:50Z
0 likes, 0 repeats
@a1ba idk my brain just Agrees with scrollable tiling on the desktop, i've been digging it
(DIR) Post #AYj2HxZxhRGiIQVH5U by a1ba@suya.place
2023-08-14T15:21:51.500169Z
0 likes, 0 repeats
@YaLTeR never liked tiling on the desktop, but I think that concept might work for big devices with touch screen (like the tables or big phones). I mean, some people even use Sway with the pmOS...
(DIR) Post #AYj2iFTbmOhhKk4DU8 by YaLTeR@mastodon.online
2023-08-14T15:23:26Z
1 likes, 0 repeats
@a1ba have you tried scrollable tiling before? The thing with normal tiling is you are constrained by the screen width, which results in very awkward layouts frequently, or realistically just maximized windows everywhere. But with scrollable tiling there's no width restriction
(DIR) Post #AYj2iGKQc0xFyYmOoa by a1ba@suya.place
2023-08-14T15:26:35.895838Z
0 likes, 0 repeats
@YaLTeR nope, never actually %)
(DIR) Post #AYjEQKOpw6CUq73YTQ by rafaelmardojai@social.odka.org
2023-08-14T17:37:39Z
0 likes, 0 repeats
@YaLTeR Makes me think on this concept that always made sense to me: https://desktopneo.com
(DIR) Post #AbL9GlF7n0oQ5nIpzE by YaLTeR@mastodon.online
2023-08-27T16:14:27Z
0 likes, 0 repeats
Added quite a number of things into the compositor since then. It's at the point where I can somewhat-comfortably use it for working or (Wayland-only) gaming sessions.Today I figured out how to make it run as a proper session, launched from GDM, with systemd integration and all. It even mostly works!Also finally implemented the ability to take screenshots—this one is from a real session.Kinda want to try my hand at the screencast portal for OBS. How hard can it be, right? 🙃
(DIR) Post #AbL9GmThCK3tvH7zKy by YaLTeR@mastodon.online
2023-09-02T09:59:46Z
0 likes, 0 repeats
Almost done adding touchpad gesture support to Smithay!Here you can see the pinch zoom/rotate gesture visually in gtk4-demo, then the swipe gesture only in WAYLAND_DEBUG on the right, then the hold gesture by stopping the kinetic scrolling by putting a finger on the touchpad.
(DIR) Post #AbL9GnBIaCwM6VWoIi by YaLTeR@mastodon.online
2023-09-03T18:06:53Z
0 likes, 0 repeats
After adding dmabuf feedbacks to niri, I stumbled upon an extremely strange performance problem when using overlay planes. One specific animation, with a GTK 4 window open, stutters, but only when going into one direction.Spent half a day debugging it with Smithay developers. Couldn't crack it yet; for some reason an AMDGPU kernel worker just... takes a while under those specific conditions, causing delayed frames. Seems to be doing the same thing as in the normal case, just... slower somehow.
(DIR) Post #AbL9GnloOS9BvkbyDI by YaLTeR@mastodon.online
2023-09-04T12:28:47Z
0 likes, 0 repeats
Aaand my touchpad gesture support has been merged into Smithay! :ablobcatbongo:
(DIR) Post #AbL9GoMKChM1kzh87s by YaLTeR@mastodon.online
2023-09-04T12:52:59Z
0 likes, 0 repeats
I'm quite enjoying playing with the Tracy profiler. Turns out when you run the program with sudo, it records a ton of extra useful info, like CPU core scheduling, monitor VSync events, kernel context switches, what your process is blocked on.I also annotated my compositor with Tracy Frame events for monitor VBlank cycles. I can then set a target FPS in Tracy and instantly see which frames were too slow! Both in the bar at the top, and in the main area highlighted in red.
(DIR) Post #AbL9Goq6PzApFLcuXY by YaLTeR@mastodon.online
2023-09-06T09:32:49Z
0 likes, 0 repeats
lol a few days ago someone posted niri on the orange site and now it surpassed all my other projects by star count 🫠
(DIR) Post #AbL9GpUA13DTFaMtyi by YaLTeR@mastodon.online
2023-09-07T17:30:05Z
1 likes, 0 repeats
aaaaaaaaahhhhhhhhhhh these two days were a grind but I somehow got monitor streaming working! with pipewire and dmabufs and dbus and screencast portal and everything! and it wooorkssssssssss woooooooooooooo
(DIR) Post #AbL9Gq79g4PNCWc2l6 by YaLTeR@mastodon.online
2023-09-07T18:35:47Z
0 likes, 0 repeats
I just streamed for an hour from this and nothing crashed??
(DIR) Post #AbL9GqgbYGlSyTCM0u by YaLTeR@mastodon.online
2023-09-08T18:11:39Z
1 likes, 0 repeats
Dmabuf screencasting is crazy good. Here's a histogram of the screencasting overhead on my 2560×1600@165 screen—the median is 300 microseconds, and the worst across 12,669 frames was just below 1 ms. Most of that time is spent rendering the frame, perhaps something could even be further optimized in Smithay.And yeah, if you look at the profiling timeline, I zoomed it in such a way that almost the entire width is taken by one frame, that is 6.05 ms long. Most of it is completely empty!
(DIR) Post #AbL9Grdo0A7Tw4tdI0 by YaLTeR@mastodon.online
2023-09-11T05:36:19Z
0 likes, 0 repeats
Today in Wayland compositor profiling! Turns out closing a shm pool file descriptor can result in a fat stall of up to like 6 ms with the kernel waiting on some spinlocks. Which is extra fun when you realize it covers the entire frame budget of your 165 Hz screen, and some clients are sometimes doing it every frame!I'm trying a "dropping thread" workaround where the fd closing happens on a separate thread. Appears to work at the first glance.
(DIR) Post #AbL9GsL3PMiM6D8AhU by YaLTeR@mastodon.online
2023-09-19T04:16:30Z
0 likes, 0 repeats
new main loop stall droppedand it is, uhhhhh, epoll_wait doing blocking disk decryption for solid 8 ms? is that a thing that it does?seems to have happened once over a long period but still
(DIR) Post #AbL9GsurGFM1tFslVY by YaLTeR@mastodon.online
2023-09-19T04:25:51Z
0 likes, 0 repeats
Found the same disc decryption during rendering. Does it just randomly decide to do it or something?
(DIR) Post #AbL9GtSBGM0dYbTNRo by YaLTeR@mastodon.online
2023-09-19T05:02:22Z
0 likes, 0 repeats
Aside from this and some other weirdness, not a single dropped frame on my slower laptop! (which is admittedly just 60 Hz)
(DIR) Post #AbL9Gu5Wu3U7WdsnmS by YaLTeR@mastodon.online
2023-09-20T08:06:23Z
0 likes, 0 repeats
Thought of another thing to plot in Tracy: target presentation time offset! This is the difference between when a frame was shown on screen and the target time that we were rendering for.Here you can see data across 17 seconds of runtime while recording with OBS. Offset on both monitors fluctuates within a few microseconds around zero, which means that our rendering lands right on time.
(DIR) Post #AbL9GuZJ7LIv0zoaC8 by YaLTeR@mastodon.online
2023-09-20T08:10:03Z
0 likes, 0 repeats
It's also common to see one frame worth of offset like on this zoomed-out screenshot. This happens when the compositor wakes up from idling too late into the monitor refresh cycle and doesn't manage to render a new frame in time.
(DIR) Post #AbL9Gv0bTr8eNeaNk0 by YaLTeR@mastodon.online
2023-10-07T08:15:34Z
0 likes, 0 repeats
I'm still working on niri btw (and using it myself too). Today I finally finished a window layout refactor that was due from very early on.Now the layout always works correctly, with all the paddings, struts, fullscreen windows and animations. It's tricky because while most of the logic operates only on the "working area" (view excluding struts), fullscreen windows in particular must cover the entire view area, while otherwise acting as just another regular window column.
(DIR) Post #AbL9GvXZVHVg1u0i80 by YaLTeR@mastodon.online
2023-10-30T17:28:53Z
0 likes, 0 repeats
niri development is ongoing, getting a lot of help from kchibisov too.Today I implemented an interactive area screenshot capture tool. Almost like a mini screenshot UI :ablobcatbongo:
(DIR) Post #AbL9Gw2PecBDZYRLCS by YaLTeR@mastodon.online
2023-10-31T17:19:30Z
1 likes, 4 repeats
Decided to make a new demo video for niri, finally. The last one was so old that niri didn't even have cursors implemented, it showed an orange rectangle instead. 🫠Here's the link again for the curious: https://github.com/YaLTeR/niriVery happy I've come this far writing my own compositor from scratch. Honestly thought my motivation would only last for two weeks max, but here we are. :blobcattea:Learned a ton in the process, and now this experience helps me with Mutter & Shell profiling.#rust
(DIR) Post #AbL9GxQCVennrcZquu by xerz@fedi.xerz.one
2023-10-31T20:22:43.024191Z
0 likes, 0 repeats
@YaLTeR OH HEY I HAD THIS IDEA LIKE 5 YEARS AGOwell there goes a project I had in mind (don’t worry tho, I evolved and perfected my ideas!)
(DIR) Post #AbLKPCe2tOuutHBgQq by bugaevc@floss.social
2023-10-31T20:26:06Z
0 likes, 0 repeats
@xerz you can still contribute to @YaLTeR's project :D
(DIR) Post #AbLKPM1Q1rxdyNByc4 by xerz@fedi.xerz.one
2023-10-31T22:27:50.075256Z
0 likes, 0 repeats
@bugaevc @YaLTeR Yeahhhhhh I’m a bit too much of a perfectionist and I like to take the lead, and thus I’d probably prefer to experiment with a fork if not outright from scratch I also might or might not have undiagnosed ADHD so I can’t promise timely delivery of PRs
(DIR) Post #AbMFvxoojRSPqpzJVg by YaLTeR@mastodon.online
2023-11-01T03:18:36Z
1 likes, 0 repeats
@xerz heh, well, it's by no means an original idea—niri is rather directly inspired by PaperWM which I stumbled upon earlier this year and really liked.
(DIR) Post #AbMFvzVOSd6n5AupVo by xerz@fedi.xerz.one
2023-11-01T09:12:31.840404Z
0 likes, 0 repeats
@YaLTeR true, I’ve seen it mentioned once or twice — originality is overrated anyway :blobcatfluffowo:
(DIR) Post #AjTfj9iqOBuBD4b476 by YaLTeR@mastodon.online
2023-11-26T17:04:42Z
0 likes, 0 repeats
The development pace had slowed down a little, so I've tagged an alpha release for niri: https://github.com/YaLTeR/niri/releases/tag/v0.1.0-alpha.1Also made a COPR for the occasion, if you're on Fedora: https://copr.fedorainfracloud.org/coprs/yalter/niri/
(DIR) Post #AjTfjAuDzMbQsevfUW by YaLTeR@mastodon.online
2023-12-23T07:32:58Z
0 likes, 0 repeats
A month has passed and a number of important additions have landed in niri, so here's a second alpha release: https://github.com/YaLTeR/niri/releases/tag/v0.1.0-alpha.2Highlights include relative-pointer and pointer-constraints which let Xwayland masterfully handle 3D games mouse look, and popup unconstraining which prevents popups from opening off-screen. I actually made popups place within their window with some padding, which looks quite nice.#rust #wayland
(DIR) Post #AjTfjBqiTtOHo4INf6 by YaLTeR@mastodon.online
2024-01-03T16:17:42Z
1 likes, 0 repeats
Aaahhhhhh another difficult refactor down and niri now does multi-GPU! By which I mean that monitors plugged into secondary GPUs will now light up and work. All the screenshot UI and screencast portal stuff also works just fine. Wouldn't be able to do this as quickly without Smithay's MultiRenderer support and lots of help from @drakulix 😄 I went for the easier strat of always rendering on the primary GPU, but you can also pick render GPU dynamically, which apparently cosmic-comp does, cool!
(DIR) Post #AjTfjCIinlnBCvOkJU by YaLTeR@mastodon.online
2024-01-07T14:32:44Z
0 likes, 0 repeats
Tagged niri v0.1.0-alpha.3 with multi-GPU support, borders and other improvements! Multi-GPU was one of the bigger things I wanted to get done before going out of alpha so I guess I'm slowly getting there.https://github.com/YaLTeR/niri/releases/tag/v0.1.0-alpha.3
(DIR) Post #AjTfjCpKqVscq4en9E by YaLTeR@mastodon.online
2024-01-15T13:20:19Z
0 likes, 0 repeats
Turns out that if you implement xdg-decoration in your compositor but tell clients that you want CSD, then SDL2 + libdecor clients will break due to a bug. The bug is already fixed, but the fix hasn't made it to any SDL2 release yet, let alone all the runtimes and vendored copies.Hiding xdg-decoration from clients it is then#wayland #sdl
(DIR) Post #AjTfjCyuGvXJJl8R4C by YaLTeR@mastodon.online
2024-01-20T06:35:32Z
0 likes, 0 repeats
I added text rendering to niri using pangocairo, which turned out to be surprisingly simple. It basically "just worked". This unlocks a lot of features, beginning with a hotkey overlay, which should help people get started (suggested by @ju).I've tagged niri 0.1.0-beta.1 which includes the overlay along with many more improvements: https://github.com/YaLTeR/niri/releases/tag/v0.1.0-beta.1I'm now happy enough with the feature set so in a week I'll release 0.1.0. Time to finally catch up on other projects I've been neglecting.
(DIR) Post #AjTfjDbtvwjDGhNZqa by YaLTeR@mastodon.online
2024-01-23T14:50:26Z
0 likes, 0 repeats
I'm pretty excited to finally be able to "release" niri soon but god I'm glad I set aside a beta week for bugfixes. We already stumbled upon and fixed several issues
(DIR) Post #AjTfjE5KAYGQjx94i0 by YaLTeR@mastodon.online
2024-01-26T18:20:41Z
0 likes, 0 repeats
A few latency tests before release confirm that niri's still doing good (at least on idle; I don't have any repaint scheduling yet but on idle it doesn't matter). The compositors are pretty much within the noise threshold from each other. Except some sway fullscreen bug and Shell losing one frame somewhere.
(DIR) Post #AjTfjEJVJpbfRvmOoK by YaLTeR@mastodon.online
2024-01-27T13:33:35Z
1 likes, 0 repeats
Well, I'm happy to release the first stable version of niri, my scrollable-tiling compositor: https://github.com/YaLTeR/niri/releases/tag/v0.1.0Very satisfied with the current state, even though there's plenty left to do. Took a lot of time and work but I've certainly learned a lot, and I'm glad to have contributed a bit to Smithay too!#wayland #rust #smithay
(DIR) Post #AjTfjF8YG2RK0FfANU by YaLTeR@mastodon.online
2024-02-05T11:43:40Z
0 likes, 0 repeats
Before adding more animations into niri, I'm making a "visual tests" application. It shows a set of hardcoded scenarios which I can quickly go through and visually check that everything looks right.It uses solid color rectangles as "windows", but otherwise this is the real niri layout code and real niri + Smithay rendering code, drawing to a GTK GL area.For example, on the last test you can see that my offscreen code currently clips CSD shadows (during the open animation).
(DIR) Post #AjTfjFgEEpNVghQ3s0 by YaLTeR@mastodon.online
2024-02-07T07:28:26Z
0 likes, 0 repeats
visual tests are such a lifesaver, so glad I stole that idea from osu!lazer
(DIR) Post #AjTfjFo1lpcI4t4I1g by YaLTeR@mastodon.online
2024-02-17T06:18:51Z
1 likes, 0 repeats
The window opening animation is now live as part of niri v0.1.2: https://github.com/YaLTeR/niri/releases/tag/v0.1.2I'm really looking forward to more animations, but wow they sure do need a lot of care to get right in all the edge cases.Also, I added a way to programmatically invoke compositor actions, and turns out that's quite useful for making video demos!#wayland #rust #smithay
(DIR) Post #AjTfjGbIod22Xi7dpY by YaLTeR@mastodon.online
2024-02-22T07:35:17Z
0 likes, 0 repeats
For a bit of fun I added gradient borders to niri. One of the visual tests for it turned out a bit mesmerizing to look at
(DIR) Post #AjTfjGnM5ofn95lGcK by YaLTeR@mastodon.online
2024-03-09T11:22:23Z
0 likes, 0 repeats
Tagged niri v0.1.3: https://github.com/YaLTeR/niri/releases/tag/v0.1.3This one has much improved touchpad gestures with inertia, springs, rubberbanding and everything else I copied from libadwaita, my primary source for things that feel good :blobmiou: Also thanks @alice for helping and giving feedback on the gestures and for giving a try to the touch support!#wayland #rust #smithay
(DIR) Post #AjTfjHc33LDrgJTkdE by YaLTeR@mastodon.online
2024-03-24T06:38:00Z
1 likes, 0 repeats
Just implemented something I've had in mind for a while: compositor-side blocking out of windows from screencasts! The compositor is the perfect place to do this since it can replace the window contents in the render tree, which will work fine with any kind of overlapping, transparency, etc. AND it will work with anything that records the screen through the portal, be it OBS or video meeting, or whatever.
(DIR) Post #AjTfjHqaBIqgPOHMHo by YaLTeR@mastodon.online
2024-03-24T06:39:44Z
0 likes, 0 repeats
There's actually an important edge case here: if you open the screenshot UI while recording the monitor, then the screenshot UI preview will show the window, and OBS, recording the screenshot UI preview, will hence also show the window. There are trade-offs here for how you want this to work; for now I put a big warning around the option, and added a stricter mode that blocks out the window from ANY screen capture (which means you can't screenshot it).
(DIR) Post #AjTfjIPK68dc98X6R6 by YaLTeR@mastodon.online
2024-03-24T06:48:09Z
0 likes, 0 repeats
I think for the built-in screenshot UI this is solvable with one more layer of indirection (render the screenshot UI preview itself twice, once for screencasts, and once for the monitor). However, for third-party screenshot annotation tools, this will still be a problem.
(DIR) Post #AjTfjIusCpsJizIIc4 by YaLTeR@mastodon.online
2024-03-24T07:22:10Z
0 likes, 0 repeats
Implemented this idea. It means rendering each monitor 3 times always for the screenshot but maybe it's fine? On this laptop 3 monitors × 3 renders takes 2 ms, and there's some unnecessary blocking I forgot to remove.On the video, note how for me the screenshot UI has Secrets visible, but on the recording afterwards it's always blocked out.
(DIR) Post #AjTfjJMAZLi35e469w by YaLTeR@mastodon.online
2024-03-30T07:55:08Z
0 likes, 0 repeats
I may be having too much fun recording a demo for the release notes
(DIR) Post #AjTfjJqIlJoQb6AA7s by YaLTeR@mastodon.online
2024-03-30T11:26:59Z
0 likes, 0 repeats
Amidst all the fires being put out, niri 0.1.4 which can block out windows from screencasts! https://github.com/YaLTeR/niri/releases/tag/v0.1.4And also gamma control, focus follows mouse, warp mouse to focus, wheel and touchpad scroll bindings, xdp-gnome 46 support.Also, every single config option is now documented on the wiki! Which took like an entire week of work (even though I was reusing a lot of my previously written docs in the config). Check it out here: https://github.com/YaLTeR/niri/wiki/Configuration:-Overview#wayland #smithay #rust #niri
(DIR) Post #AjTfjKSaSyRAVq4jnk by YaLTeR@mastodon.online
2024-04-08T16:05:50Z
0 likes, 0 repeats
Today: horizontal column movement is now animated!
(DIR) Post #AjTfjKzCViWc8zKmdU by YaLTeR@mastodon.online
2024-04-10T05:49:22Z
0 likes, 0 repeats
Took the whole yesterday and a bit of today, but I've got window closing animations working! These turned out to be tricky because they need storing a snapshot of the surface render tree to draw once the app is gone.Some apps may start destroying their subsurfaces before the main surface, like alacritty with its sctk CSD, making it very easy to miss parts of the window in the snapshot, and therefore in the closing animation.Also, windows closing to the left no longer shift the view!#niri
(DIR) Post #AjTfjLiZn0oyPiZ1MW by YaLTeR@mastodon.online
2024-04-13T12:01:32Z
0 likes, 0 repeats
Definitely one of the most complex animations yet: window resizing.Just the crossfade effect itself took a while to get working with all the window geometries and buffer offsets, and then there's the whole multiple window orchestration with Wayland's asynchronous nature. (I don't do animation transactions yet, that'll be a whole other level of complexity on top.)Happy with the result though, and it's cool that it seamlessly works with block-out-from screencast.#niri
(DIR) Post #AjTfjMIjcZkEDrTtiq by YaLTeR@mastodon.online
2024-04-16T07:12:59Z
0 likes, 0 repeats
Window movement across columns is now animated too!These weren't complex per se, but very *finicky*. Spent quite a bit of time chasing down all the offsets and coordinates to add and subtract to avoid jumps, but it seems to all work well now!#niri
(DIR) Post #AjTfjMyD8MvCIUt1N2 by YaLTeR@mastodon.online
2024-04-20T15:52:10Z
0 likes, 0 repeats
All the animations, plus VRR, today in niri 0.1.5: https://github.com/YaLTeR/niri/releases/tag/v0.1.5I also remade the demo video to showcase the animations and some of the newer features!#niri #smithay #rust #wayland
(DIR) Post #AjTfjNgAUw5EUpS7t2 by YaLTeR@mastodon.online
2024-04-23T07:39:21Z
1 likes, 0 repeats
We've reached 1000 commits 😅 with an a bit of an anticlimactic one though
(DIR) Post #AjTfjOIoBGzYQfWz7A by YaLTeR@mastodon.online
2024-05-04T16:53:15Z
1 likes, 0 repeats
Another tricky feature, rounded corners! Took several days, but I believe I've got a pretty complete implementation.You (manually) set the window corner radius and whether to force-clip the window. You can set radius per-corner to match GTK 3 apps. It works correctly with subsurfaces, blocked-out windows, transparency, gradient borders, resize and other animations.Optimization-wise, opaque regions and even overlay plane unredirection work where possible!#niri #smithay
(DIR) Post #AjTfjOqUA3vk77Hsbg by YaLTeR@mastodon.online
2024-05-04T16:54:46Z
0 likes, 0 repeats
Also, we've now got a little #niri setup showcase thread :blobcat: https://github.com/YaLTeR/niri/discussions/325
(DIR) Post #AjTfjOv5svcILPRYn2 by YaLTeR@mastodon.online
2024-04-10T06:05:46Z
0 likes, 0 repeats
..i can't even enjoy these properly because my brain already stopped noticing them since now things act *as they should* (and also the settings are as usual copied from gnome shell)
(DIR) Post #AjTfjPPa3a0FrxhuJE by YaLTeR@mastodon.online
2024-05-08T05:59:05Z
1 likes, 0 repeats
Added (stole from GNOME Shell as usual) a screen transition action, so now I can finally switch between dark and light in style(of course, it works with blocked-out windows)#niri
(DIR) Post #AjTfjQ53ZNBDwb71xQ by YaLTeR@mastodon.online
2024-04-14T08:14:00Z
0 likes, 0 repeats
I have this monitor connected through HDMI, and if I enable VRR then it starts modesetting every frame (lol). Guessing some AMDGPU issue.But today I finally found a DisplayPort → USB C dongle, and this way VRR works perfectly, yay! Even bumped the refresh rate from 144 Hz to 170 Hz, which this monitor supports only through DP.Anyway, #niri has VRR now :ablobcatbongo:
(DIR) Post #AjTfjQCV7h8QJgayYq by YaLTeR@mastodon.online
2024-05-11T07:38:40Z
0 likes, 0 repeats
Okay, time for an actually useful feature: interactive mouse resizing (yes, finally). This was, as it goes, quite fiddly to implement, especially since niri has to negotiate with the window during the process.I also added a double-resize-click (i.e. trigger a resize twice quickly) gesture to reset the window height or to toggle full width. Suggested by FreeFull on our Matrix and worked out very well! Really starting to feel quite nice with mouse.(still no transactions yet)#niri
(DIR) Post #AjTfjQPyJbuUzStjYe by YaLTeR@mastodon.online
2024-05-11T07:41:36Z
0 likes, 0 repeats
nvim really taking its time processing all this 1000 Hz worth of resizing lol
(DIR) Post #AjTfjR3fvzfYybTRRY by YaLTeR@mastodon.online
2024-05-11T10:16:13Z
0 likes, 0 repeats
Since I'm in a mouse gesture mood today: hooked up the horizontal touchpad swipe to Mod + middle mouse drag and omg it feels so good with the spring deceleration and all(of course it also correctly avoids the touchpad scaling, so that when using the mouse gesture, the cursor location is always exactly anchored to the view position)#niri
(DIR) Post #AjTfjRYs40cgXM4M4G by YaLTeR@mastodon.online
2024-05-12T06:19:44Z
0 likes, 0 repeats
Now for something fun. I'm experimenting with the ability to set custom shaders for animations. Today I added custom shader support for window-close, which lets me make this cool falling down animation!This is entirely optional of course, and there's no performance impact if you don't use it. Also, custom shaders, like the rest of the niri config, are live-reloaded, making it easy to play around with them.#niri
(DIR) Post #AjTfjRrew9eTTcrMLw by YaLTeR@mastodon.online
2024-04-14T08:15:19Z
0 likes, 0 repeats
I also have smoother magic trackpad gestures now since it reports at 100 Hz, and before I had to deal with framerate aliasing. Too bad I don't use it much because mouse more convenient
(DIR) Post #AjTfjSHXNwLslsy1gm by YaLTeR@mastodon.online
2024-05-15T17:56:21Z
0 likes, 0 repeats
Been fixing quite a bit of interactive resize jank and other small stuff since the last time, but also added custom shader support for window-open, thus completing it for all three main window animations (open, close, resize).Now I didn't actually have any good idea of what I might want in a window open custom shader (I like the default), so I made a simple expanding circle animation to showcase it.#niri
(DIR) Post #AjTfjSSshlQTL4H5N2 by YaLTeR@mastodon.online
2024-05-18T11:53:33Z
0 likes, 0 repeats
Niri 0.1.6 with interactive window resizing, rounded corners, named workspaces, mouse view scrolling, animation custom shaders, screen transition!https://github.com/YaLTeR/niri/releases/tag/v0.1.6Didn't realize quite how many release notes there would be this time; even had to use an extra level of headings. 😅#niri #smithay #rust #wayland
(DIR) Post #AjTfjTMXMpwg7gJX7Y by YaLTeR@mastodon.online
2024-05-12T07:20:45Z
0 likes, 0 repeats
The inspiration for this was the S grade animation from here: https://github.com/ppy/osu/pull/26630
(DIR) Post #AjTfjTSZ0QlYQN8LVw by YaLTeR@mastodon.online
2024-06-17T11:42:12Z
0 likes, 0 repeats
Over the past few weeks I've been working on fractional scaling for niri. A simple implementation took about a day, but to do it *properly* I had to refactor the entire layout code to work in floating-point.The result is well worth it though. Borders, gaps and windows are always physical-pixel aligned, and not restricted to integer logical pixel positions. There's no blur or position-dependent +-1 px jank. Fractional-scale-aware clients remain crisp at any scale.#niri #smithay
(DIR) Post #AjTfjTlhrG4vNk5dLs by YaLTeR@mastodon.online
2024-06-21T08:16:29Z
0 likes, 0 repeats
So it turns out that changing PipeWire screencast stream resolution on the fly is actually not that hard! Which is great news because it's required (or at least very desirable) for implementing window screencasting.
(DIR) Post #AjTfjUYGwgvVoMoQ3E by YaLTeR@mastodon.online
2024-06-27T09:08:22Z
0 likes, 0 repeats
Phew, finished the initial implementation of window screencasting in niri! Complete with stream resolution change on window resizing.Some details are still iffy regarding frame timing and frame callbacks, especially to obscured windows, but it *should* work decently fine for now.#niri
(DIR) Post #AjTfjV2P8f1tJouU1A by YaLTeR@mastodon.online
2024-06-27T09:09:47Z
0 likes, 0 repeats
Icons are missing in the portal dialog because apparently Shell keeps track of Wayland app ID to .desktop file mapping internally and returns the .desktop file name to the portal for it to get the icon. Which is a bit too much effort for me to replicate for now. 😅
(DIR) Post #AjTfjVf2ozwDFezLFI by YaLTeR@mastodon.online
2024-06-28T05:06:42Z
0 likes, 0 repeats
Fixed transparency support. Turns out the BGRA format should've been in a separate pod, rather than as a choice in the same pod. Should've looked at Mutter code sooner as usual..
(DIR) Post #AjTfjVnCKgSZewnqxE by YaLTeR@mastodon.online
2024-06-29T07:27:54Z
0 likes, 0 repeats
niri v0.1.7 is out with fractional scaling, window screencasts and many smaller improvements!https://github.com/YaLTeR/niri/releases/tag/v0.1.7#niri #smithay #wayland #rust
(DIR) Post #AjTfjWXzWhtG04hDtI by YaLTeR@mastodon.online
2024-07-01T05:42:31Z
0 likes, 1 repeats
Apparently there's a cool Pango flag that enables subpixel glyph positioning which makes things scale smoother and improves kerning! Thanks Benjamin (the GTK maintainer) for the suggestion
(DIR) Post #AjTg5JyGxseZMoNmvA by a1ba@suya.place
2024-07-01T06:04:30.218051Z
0 likes, 0 repeats
@YaLTeR damn it really looks awesome.I wonder though how it is on bad quality/low density LCD panels though. These tend to leave the "rainbow" marks around glyphs with subpixel smoothing enabled.
(DIR) Post #AjTiOWXgeK8LlZEQhE by YaLTeR@mastodon.online
2024-07-01T06:09:19Z
0 likes, 0 repeats
@a1ba subpixel anti-aliasing (the color thing) is not the same as subpixel glyph positioning (= individual letter vectors don't have to be drawn at integer coordinates). Subpixel AA is generally disabled on Linux systems actually
(DIR) Post #AjTiOXZUp5AuxT5O9g by a1ba@suya.place
2024-07-01T06:30:06.261070Z
0 likes, 0 repeats
@YaLTeR ok, so it's not the same thing. Good.>Subpixel AA is generally disabled on Linux systemsIs it? I remember that at one point I was patching FreeType to have at least readable text but then text suddenly started to look good on Linux out of the box. Maybe that's when FreeType was improved enough and defaults has changed. :)
(DIR) Post #Ajz4HnqH9QvGum8EQy by YaLTeR@mastodon.online
2024-07-03T04:42:11Z
0 likes, 0 repeats
Oops, looks like niri had outstarred PaperWM on GitHub 🙈PaperWM introduced me to (and made me fall in love with) scrollable tiling. It's a solid implementation on top of GNOME, so you get all the benefits of running a stable and well-supported DE (and Xwayland). PaperWM is also a very direct inspiration for many parts of niri!https://github.com/paperwm/PaperWM
(DIR) Post #Ajz4Hp6cS9aepkmnY0 by YaLTeR@mastodon.online
2024-07-07T06:46:13Z
0 likes, 0 repeats
Implemented the thing where you can toggle the mouse pointer on the screenshot after the fact (by pressing P). Gonna add a help panel here soon to remind you of this.#niri
(DIR) Post #Ajz4HptBXaRFGNVaFM by YaLTeR@mastodon.online
2024-07-08T07:45:49Z
0 likes, 0 repeats
Much better#niri
(DIR) Post #Ajz4HqWt9yCJFW5I8G by YaLTeR@mastodon.online
2024-07-12T16:47:57Z
0 likes, 0 repeats
key repeat + scrollable tiling = fun#niri
(DIR) Post #Ajz4Hr5d4nzEzGL2HY by YaLTeR@mastodon.online
2024-07-16T07:59:02Z
1 likes, 0 repeats
One of the niri users has contributed a gradient interpolation color space setting! Now you can do pretty gradient borders in srgb-linear, oklab and oklch (in all four hue directions).#niri
(DIR) Post #AmuNtrupy2nUpET8Pw by YaLTeR@mastodon.online
2024-07-22T11:41:10Z
0 likes, 0 repeats
I made a COPR for git builds of niri: https://copr.fedorainfracloud.org/coprs/yalter/niri-gitApparently this is a thing you can do; relatively easily, even. It's fully automatic, triggers on a webhook from GitHub.Thanks Michael (my4ng) from our Matrix channel for showing me the relevant docs and doing the initial work!#niri
(DIR) Post #AmuNtsqyTtIljXfZ2G by YaLTeR@mastodon.online
2024-08-02T14:35:07Z
0 likes, 0 repeats
niri has reached 3000 stars yesterday!
(DIR) Post #AmuNttW610C9n4uP8C by YaLTeR@mastodon.online
2024-08-02T14:36:03Z
0 likes, 0 repeats
also in an act of severe procrastination i decided to try drawing a diagram of the redraw state machine: https://github.com/YaLTeR/niri/wiki/Redraw-Loop
(DIR) Post #AmuNttkd8xoyW9i0mm by YaLTeR@mastodon.online
2024-08-06T21:28:28Z
0 likes, 0 repeats
Spent a better part of today, but I've got dmabuf modifier negotiation fully working in my pipewire screencasting code in niri! This happens to finally fix screencasting on NVIDIA GPUs. Still haven't got any GStreamer pipeline working though, maybe needs a pipewire update.Apparently, my AMD selects a BGRA format modifier that has two planes. Some out of band info I suppose. And on Intel a preferred BGRA modifier has three entire planes! #niri #pipewire
(DIR) Post #AmuNtuedmiclJruk5Y by YaLTeR@mastodon.online
2024-08-10T12:54:10Z
0 likes, 0 repeats
My Wayland compositor, niri, turns one today! :ablobcatrave:Here's v0.1.8 with bind key repeat, screenshot UI pointer toggle, gradient color spaces, wlr screencopy v3 and output management, and lots of other improvements: https://github.com/YaLTeR/niri/releases/tag/v0.1.8#niri #smithay #wayland #rust
(DIR) Post #AmuNtuuEqj6K6FDCOu by YaLTeR@mastodon.online
2024-08-10T14:48:31Z
0 likes, 0 repeats
omg, my friend drew a birthday nirik :blobcataww: i recorded a demo video for the focus-follows-mouse section to showcase it lol
(DIR) Post #AmuNtvmTb4UCoSaVwO by YaLTeR@mastodon.online
2024-08-20T08:40:28Z
0 likes, 0 repeats
Several days and a lot of hair pulling later, I *think* I got resize transactions working?? Maybe? Hopefully?Resize transactions is when all windows that must resize together, resize together, with no mismatching frames in between. For example, all windows in a column must add up to the full screen height.This requires correct configure acks on the client (looking at you, Blender) and very careful state update delaying and resize throttling on the compositor side.#niri
(DIR) Post #AmuNtwLZUaYiZJ0Xdw by YaLTeR@mastodon.online
2024-08-20T11:20:44Z
0 likes, 0 repeats
narrator: there was still one case where it didn't work due to a bugokay, surely this time it definitely works for all correctly written clients
(DIR) Post #AmuNtwodkVoM1Sbkx6 by YaLTeR@mastodon.online
2024-08-23T14:02:03Z
0 likes, 0 repeats
Here's one mainly for people who disable animations: window closing now runs in a transaction with the other windows resizing. This means, no background flicker.#niri
(DIR) Post #AmuNtxLblwBNfi25L6 by YaLTeR@mastodon.online
2024-08-26T13:08:03Z
0 likes, 0 repeats
There's been another logo discussion in the niri Matrix room with some quite interesting concepts emerging. Here's one by Endg4me_ with edits by bluelinden and myself, and inspiration from a concept by ElKowar.What do you think?#niri
(DIR) Post #AmuNty1RGPdvlRbUXY by YaLTeR@mastodon.online
2024-08-29T09:46:19Z
0 likes, 0 repeats
I'm working on an "event stream" IPC for niri where you get notified about events as they happen. For example, "workspace switched" or "keyboard layout changed".To give it a good test, I actually started implementing native niri support in Waybar. You can give it a try too: https://github.com/YaLTeR/niri/pull/453#issuecomment-2317110904#niri
(DIR) Post #AmuNtygumCotq50cBk by YaLTeR@mastodon.online
2024-08-30T15:55:39Z
0 likes, 0 repeats
I finished the initial event stream IPC implementation for niri. My Waybar fork implements a decent amount of the modules niri/workspaces, niri/window, niri/language. Please give that a try, also anyone who makes IPC scripts or bars please give a try to the event stream IPC itself so we can find any design flaws before merging.The PR you will need: https://github.com/YaLTeR/niri/pull/453#issuecomment-2321730996Waybar fork is linked from there.#niri
(DIR) Post #AmuNtysc4iB4QMTxQG by YaLTeR@mastodon.online
2024-09-03T11:07:02Z
0 likes, 0 repeats
The other day, Christian Meissl finished updating and publishing the libdisplay-info bindings [1]. This is quite exciting because, unlike edid-rs, it can parse the manufacturer/model/serial from pretty much any monitor.So, today I spend a few hours integrating the manufacturer/model/serial monitor addressing all throughout niri: config, IPC, niri msg, screencast output selector. You should now be able to write/use "SomeCompany CoolMonitor 1234" everywhere![1]: https://lib.rs/crates/libdisplay-info#niri
(DIR) Post #AmuNtzXNd8msSnYVxw by YaLTeR@mastodon.online
2024-09-04T10:35:16Z
0 likes, 0 repeats
Set up CI rustdoc publishing for niri-ipc: https://yalter.github.io/niri/niri_ipc/This has the entirety of the niri IPC documented, including the new event stream events.#niri
(DIR) Post #AmuNu00Rt42Vux9jH6 by YaLTeR@mastodon.online
2024-09-14T11:54:22Z
0 likes, 0 repeats
After the Waybar maintainer speedran merging my niri modules and releasing, I would feel bad delaying any longer, so here's niri 0.1.9 :)Event stream IPC for bars, better window resizing, properly named outputs, on-demand VRR, out-of-the-box fix for NVIDIA flickering, and other improvements!https://github.com/YaLTeR/niri/releases/tag/v0.1.9#niri #smithay #wayland #rust
(DIR) Post #AmuNu0gdMDme1mtQ1o by YaLTeR@mastodon.online
2024-10-11T18:15:50Z
0 likes, 0 repeats
wtf did I Just Make
(DIR) Post #AmuNu1B7WsAbYL9lY0 by a1ba@suya.place
2024-10-11T20:54:57.192595Z
0 likes, 0 repeats
@YaLTeR да вам рандом в киоске заряжали!
(DIR) Post #AnBxwOzXMwgMsVAYwC by YaLTeR@mastodon.online
2024-10-18T08:57:21Z
0 likes, 0 repeats
Over the past 2 weeks I've been slowly but surely working on the interactive move niri PR [1] by @pajn. It's already got me to fix quite a bit of tech debt in the layout code, which is cool.The PR is still rough around the edges, but mostly works, and I switched to running the branch on my own systems to give it thorough testing.(also no, this is not the Floating Layer yet, though it's a good step towards that)Attaching a video of what it looks like rn[1]: https://github.com/YaLTeR/niri/pull/547#niri
(DIR) Post #AnBxwQ5xGZPUIhBCa0 by YaLTeR@mastodon.online
2024-10-20T07:08:25Z
0 likes, 0 repeats
Made interactive move work on touch (and resize too while I was at it), didn't need that many changes actually#niri
(DIR) Post #AolljUxsUPOEWio5se by YaLTeR@mastodon.online
2024-10-22T08:55:28Z
0 likes, 0 repeats
Added a bit of rubberbanding before the window is "dragged out" of the layout. Should help avoid unintended layout changes.Along with a few more fixes I did, I think interactive move should be good to merge? It's not 100% perfect and jank free, but I'm fairly sure I got all the important things done. Will give it some more testing.#niri
(DIR) Post #AolljVsF6qTbLXB6jg by YaLTeR@mastodon.online
2024-10-26T10:49:03Z
0 likes, 0 repeats
Suddenly, @drakulix showcasing the Cosmic session running on, among other compositors, niri! On the big screen at the Ubuntu Summit 😄 https://github.com/Drakulix/cosmic-ext-extra-sessions#niri
(DIR) Post #AolljWbyMp3XdMZd0y by YaLTeR@mastodon.online
2024-11-06T06:55:39Z
0 likes, 0 repeats
somehow this touch moving under stationary pointer works better than i expected(yes trying to do a precise left click with an elbow was difficult)
(DIR) Post #AolljXGjvFfLfneBYe by YaLTeR@mastodon.online
2024-11-07T12:12:12Z
0 likes, 0 repeats
By the way! I'll be giving a talk at RustCon in Moscow on December, 6! :ablobcatwave: https://rustcon.ru/Wherein I will briefly describe what a Wayland compositor is, and then show several testing and profiling workflows that I've been using to keep niri stable, robust and performant.(The invitation to submit a talk was completely unexpected, guess niri found its way into the right eyes. 😅)There will be a recording, though in Russian.#rust #niri
(DIR) Post #AolljXawi7pSgT6K3M by YaLTeR@mastodon.online
2024-11-09T16:16:16Z
0 likes, 0 repeats
Interactive window moving, laptop lid and tablet mode switch binds, mouse and touchpad scroll speed setting in today's niri v0.1.10 release!https://github.com/YaLTeR/niri/releases/tag/v0.1.10Also, niri-ipc is now on crates.io, but keep in mind that it will not be Rust-semver-stable: https://crates.io/crates/niri-ipc#wayland #smithay #rust #niri
(DIR) Post #AolljYHq8e8kpVAZua by YaLTeR@mastodon.online
2024-11-14T10:23:43Z
0 likes, 0 repeats
Added scaffolding for layer rules, along with a block-out-from rule. Now you can finally block notifications from screencasts!Though, layer-shell surfaces don't have a "geometry" so if they have shadows or transparent padding, all of that becomes solid black, since niri has no way to know where the "actual content" of the layer surface is (that's what geometry is for windows).#niri
(DIR) Post #AolljYzRWX1D0jZOsK by YaLTeR@mastodon.online
2024-11-15T08:17:47Z
0 likes, 0 repeats
We hit 4000 stars today on the niri repo!! :ablobcatheartsqueeze: #niri
(DIR) Post #AolljZXpSgWYjNerTM by YaLTeR@mastodon.online
2024-11-22T04:48:53Z
0 likes, 0 repeats
Thanks to Christian Meissl's fix in Smithay, the git version of niri correctly shows nested pop-up menus in lxqt-panel. They also submitted a fix for invalid pop-up spawning to ironbar, which makes it work on Smithay compositors.#niri #lxqt
(DIR) Post #AolljaMARWn3FVD3w0 by YaLTeR@mastodon.online
2024-11-24T09:01:49Z
0 likes, 0 repeats
Somehow, a small change for tests escalated into trying to completely refactor how animation timing works in niri. And right now I find myself at the exact opposite of this picture. Unfortunately, time has not stopped and is causing problems
(DIR) Post #AolljarMZXkAoFnyYi by YaLTeR@mastodon.online
2024-11-24T11:55:35Z
0 likes, 0 repeats
Like three complete refactors later, I think it's... working? For real this time? No weird issue is gonna sneak up that undermines the whole design?
(DIR) Post #AolljbQST3ogZ6E0GG by YaLTeR@mastodon.online
2024-11-26T04:39:32Z
0 likes, 0 repeats
Nothing seems to have caught on fire after one more day of personal testing and one more day in main. So here's a technical page I wrote about the the new niri animation timing design and its motivations: https://github.com/YaLTeR/niri/wiki/Animation-Timing
(DIR) Post #Aolljc7Lta7yi8IG7U by YaLTeR@mastodon.online
2024-11-29T16:50:39Z
0 likes, 0 repeats
Today I merged a PR by FluxTape which adds "always empty workspace before first" to niri. At the surface this is just a simple config flag with obvious behavior, but it's actually full of edge cases! Things like which workspace to focus at startup. The code refers to workspaces by index in many places, and those all shift when you suddenly insert an empty workspace at index 0.Took several days to catch them all even with our randomized tests, but I think it should be good now.#niri
(DIR) Post #AolljcHdHMLpE16T8y by YaLTeR@mastodon.online
2024-12-01T19:57:17Z
0 likes, 0 repeats
>did a +4,657 −4,237 refactor in the layout code>while testing, already found two uncaught regressions introduced in previous niri releases, and no issues with the refactor
(DIR) Post #AolljczEfFEHPFVI6i by YaLTeR@mastodon.online
2024-12-06T12:52:37Z
1 likes, 0 repeats
This morning was my niri (-adjacent) talk! :ablobcatbongo: Went really well, got many interesting questions!They promised us video recordings in a few days, so I'll post a link when I get it. Though of course the talk is in Russian.
(DIR) Post #ApTTltBWhwHlFfdYeG by YaLTeR@mastodon.online
2024-12-07T16:45:06Z
0 likes, 0 repeats
hmm#niri
(DIR) Post #ApTTlu6xGQDs7mVQA4 by YaLTeR@mastodon.online
2024-12-08T20:44:47Z
0 likes, 0 repeats
I'm thinking of switching niri to the year.month versioning. So instead of 0.1.11, the next release will be 24.12 or 25.01, and so on. Hotfix releases will use patch like 25.01.1.Are there any issues with this versioning that I should consider? There won't be releases more frequently than monthly so that's not a problem.#niri
(DIR) Post #ApTTlummktgQDW4pMW by sodiboo@gaysex.cloud
2024-12-10T10:40:51.385Z
0 likes, 0 repeats
@YaLTeR@mastodon.online honestly the only very minor issue I see is that this looks a lot like the year.month versions of many diatros like Ubuntu and NixOS, which release exactly twice a year. and at a glance, I would assume this meant the same. this has no significant implications. may I suggest using a four-digit year like Sharkey does? this way, it's "obviously" date-based even with no context or explanation. in particular, they have yyyy.m.n where n=1 at the start of each month and increments after each release. which is basically equivalent to what you were thinking of except it always specifies a patch number, even if only one release happens in a month
(DIR) Post #ApTTlvOMVBk063epvs by YaLTeR@mastodon.online
2024-12-10T12:50:54Z
0 likes, 0 repeats
@sodiboo hmm. Admittedly, it took me an embarrassingly long time to realize that the year.month in Ubuntu is, in fact, year.month, and four digits would clear that up a bit. I would prefer zero-padded double-digit month for the same reason.On the other hand, spelling out the whole 2024 seems a tad redundant, and there are other projects like Helix that use double-digit year.month so it's not like there's no precedent.
(DIR) Post #ApTTlw7jmU2MMmt4eu by sodiboo@gaysex.cloud
2024-12-10T15:58:03.351Z
0 likes, 0 repeats
@YaLTeR@mastodon.onlinespelling out the whole 2024 seems a tad redundantok but what if niri lives to be 100 years old? wouldn't want another Y2.1K now would we?(even if redundant I do think it's more aesthetically pleasing, and it's not like the length has any practical downside?)it took me an embarrassingly long time to realize that the year.month in Ubuntu is, in fact, year.month, and four digits would clear that up a bit. honestly yeah same, but now that I am aware of this and I've seen it in several other distros, that scheme reads to me as usually-semiannual. and given that niri is a compositor which is such a core component of a system that it's not uncommon to align with distro releases, it would make sense just by the class of software for niri to have such s release schedule. this is, additionally, the only argument I can think of against YY.MM. like it's all arbitrary anyways and it doesn't really matter in the end because you do have to pick something, but personally I like four-digit year betterI would prefer zero-padded double-digit month [because it's more obviously rooted in the Georgian calendar] yeah I have no opinion in favor of or against this.---also worth considering: at a certain point, a patch release might look like it's the full date. like when I installed Sharkey, I assumed 2024.5.3 meant it's from the third of May (it means that's the third release in May). so maybe a different separator is worth using, to show that the third field isn't a date? I guess it's "obviously" +.
(DIR) Post #ApTTlwwmigs0v6lqE4 by YaLTeR@mastodon.online
2024-12-10T17:20:13Z
1 likes, 0 repeats
@sodiboo > ok but what if niri lives to be 100 years old? wouldn't want another Y2.1K now would we?The world runs on huge AI clusters. Everyone is streaming their thoughts into a neutral network and receiving the complete rendered output directly into their brains. And then there are the two weird users, one connecting to the singularity through an IRC bridge, and the other scrolling tiles on their ancient manual computer
(DIR) Post #ApTTly62RlrmU66kHw by YaLTeR@mastodon.online
2024-12-09T19:15:40Z
0 likes, 0 repeats
unusual sights#niri
(DIR) Post #ApTTm3L6x9tUkICLya by YaLTeR@mastodon.online
2024-12-14T11:59:38Z
1 likes, 0 repeats
Turns out, there's a lot of details to get right when implementing a floating window space. For example, dialog windows should always show above their parent window. Otherwise, it's easy to lose them under the (usually much bigger) parent.The WIP floating branch in niri now handles this properly, even for xdg-desktop-portal dialogs (like file chooser) as long as the app correctly parents them via xdg-foreign.#niri
(DIR) Post #ApTTm8pQXs7BllQ8QK by YaLTeR@mastodon.online
2024-12-15T10:53:28Z
0 likes, 0 repeats
Another piece of the floating puzzle: keeping windows on screen. When you change your monitor scale or resolution, you don't want your floating windows to suddenly go unreachable behind the monitor's new borders.Here I'm resizing a nested niri with three windows, simulating resolution changes. No matter what I do, they always remain partially visible and reachable. Even for more unusual cases like trying to resize a window into out of bounds.#niri
(DIR) Post #ApTTmE4V3G8u1xVk6y by YaLTeR@mastodon.online
2024-12-21T10:33:17Z
0 likes, 0 repeats
In the tiling layout, niri is constantly asking windows to assume their expected size. In contrast, floating windows should be able to freely change size as they see fit.The logic turns out to be quite tricky. On the one hand we want a window to keep its latest size, but on the other we still want to be able to resize the window, which means asking it for a different size. The window can take a second to respond, or respond with a yet another size, and nothing must break.#niri
(DIR) Post #ApTTmJWglsf6wpjpFA by YaLTeR@mastodon.online
2024-12-21T10:39:12Z
0 likes, 0 repeats
While trying to make this work, I realized that this is the time when I *really really* want to be able to test this stuff. So I got on a sidetrack adventure to write testing infra for running real Wayland clients inside unit tests.I've got it working! In these tests, I'm creating a new niri instance along with test clients, all on the same test-local event loop. No global state, no threads needed.What's really cool is that this lets me test the weirdest client-server event timings.#niri
(DIR) Post #ApTTmQ6iIr2lMIdgEC by YaLTeR@mastodon.online
2024-12-22T19:40:31Z
1 likes, 0 repeats
This morning I worked on remembering the size for floating windows when they go to the tiling layout and back.The whole sizing code must be at the top by logic complexity in niri. I have to juggle, all at once:- new size I haven't sent to the window yet,- size changes I sent, but window hasn't acked yet (0, 1, or more in-flight),- size change window acked but hasn't committed for yet,- size change window acked and responded to with a commit (maybe with a different size entirely).#niri
(DIR) Post #ApTTmVPgZkBroaYOzg by YaLTeR@mastodon.online
2024-12-22T19:46:37Z
1 likes, 0 repeats
The diff is 85 lines of change and 243 lines of new tests, and I already found a few weirder edge cases that I've missed. No way I could do this well without that client-server testing setup that I posted about yesterday.Btw I pushed the testing setup if you're curious, along with the entirety of 1215 snapshot files for a powerset of new window workspace/output target settings: https://github.com/YaLTeR/niri/commit/771ea1e81557ffe7af9cbdbec161601575b64d81The WIP floating branch caused them to update in several commits already.#niri
(DIR) Post #ApTTmaSLpGIFSIq6LI by YaLTeR@mastodon.online
2024-12-26T12:55:51Z
1 likes, 0 repeats
The big 1215 snapshot test powerset (actually it already grew to 1695) continues to prove its worth. Just finished a big +495 -508 cleanup of the window opening code, and verified that not a single of those 1215 window opening configurations changed its outcome. I will be sleeping well tonight#niri
(DIR) Post #ApTTmfYCsuwrFucLfE by YaLTeR@mastodon.online
2024-12-27T14:04:59Z
0 likes, 0 repeats
After three weeks of hard work, I am undrafting the floating window PR in niri. Please give it thorough testing and report any bugs or issues!https://github.com/YaLTeR/niri/pull/871#niri
(DIR) Post #Aq9BikcSTQibIDHfGq by YaLTeR@mastodon.online
2024-12-15T11:23:44Z
1 likes, 0 repeats
@lunahd correct
(DIR) Post #AqltwizeJ1DWv1Sgqm by YaLTeR@mastodon.online
2024-12-30T17:33:21Z
0 likes, 0 repeats
Early happy new year! 🎉Thanks to everyone who helped with testing and ideas!#niri
(DIR) Post #Aqltwk4IJEWkFidujI by YaLTeR@mastodon.online
2025-01-03T15:06:13Z
0 likes, 0 repeats
I spent today figuring out the remaining layer-shell keyboard focus problems, and I've got it all working! Pop-ups now render above windows, and bottom/background layers can receive on-demand focus.Effectively, this makes the desktop icons components from @LXQt or @xfce just work on niri!#niri
(DIR) Post #Aqltwl2ufr15Hj0KDQ by YaLTeR@mastodon.online
2025-01-04T16:17:19Z
0 likes, 0 repeats
Alright, I think I got all of the important things in for the next niri release. Today I updated Smithay for the DRM compositor changes, and added a workaround for a panic when you have two monitors with exactly matching make/model/serial.I'll give it a week of testing (if you run niri-git, please report any problems) and if all goes well, tag next Saturday.There are a few PRs I'll try to review in time, but they're fairly self contained.#niri
(DIR) Post #Aqltwlp7mba5hFYpMW by YaLTeR@mastodon.online
2025-01-11T17:45:50Z
0 likes, 0 repeats
After a full day of writing release notes (god how'd it take so long 😫), niri v25.01 is out with Floating Windows and Working Layer-Shell Desktop Icons and Layer-Shell Screencast Blocking Out and so many more improvements! Yes, you read that right, we finally escaped zerover! I feel that niri is now ready to graduate from v0.1 :ablobcatbongo: Read here and download when your distribution package updates: https://github.com/YaLTeR/niri/releases/tag/v25.01#niri #smithay #wayland #rust
(DIR) Post #AqltwmlcH8MwcevXX6 by YaLTeR@mastodon.online
2025-01-14T06:30:06Z
0 likes, 0 repeats
something odd about these windows#niri
(DIR) Post #AqltwnTZdhWyozUe36 by YaLTeR@mastodon.online
2025-01-16T07:30:06Z
0 likes, 0 repeats
this is a completely normal screenshot. nothing unusual here#niri
(DIR) Post #AqltwoF4n5WpCJia5g by YaLTeR@mastodon.online
2025-01-16T16:01:42Z
0 likes, 0 repeats
Looking for testing and feedback for server-side shadows: https://github.com/YaLTeR/niri/pull/990#niri
(DIR) Post #Aqltwp1zrCeze2beLI by YaLTeR@mastodon.online
2025-01-20T12:27:38Z
0 likes, 0 repeats
ppl from our niri matrix playing around with the new compositor-side shadows! These screenshots are from @r4hulrosh4n and calops (no fedi)#niri
(DIR) Post #Aqltwph7OJYNhZqURE by YaLTeR@mastodon.online
2025-01-21T08:54:16Z
0 likes, 0 repeats
Added shadow support for layer-shell surfaces!Though unfortunately layer-shell has no way to signal the visual geometry, so this only looks right if the layer surface doesn't have its own margins.https://github.com/YaLTeR/niri/wiki/Configuration:-Layer-Rules#shadow#niri
(DIR) Post #AqltwqD1Th4fIWlyAS by YaLTeR@mastodon.online
2025-01-11T18:31:15Z
0 likes, 0 repeats
i was finishing writing these to celeste reach for the summit ost lol
(DIR) Post #AqltwqGZGVuTTWQnh2 by YaLTeR@mastodon.online
2025-02-04T09:48:22Z
1 likes, 0 repeats
I'm adding tabs to niri. Instead of some separate mode, they're just changing how a column is displayed. This means all your hotkeys and everything works exactly the same with tabs. Which was a wonderful UX idea by @elkowar!I've got a draft PR going with some design and UX questions, please feel free to try it and give feedback: https://github.com/YaLTeR/niri/pull/1085#niri
(DIR) Post #Aqltwv5lK7EmRSPk2q by YaLTeR@mastodon.online
2025-02-04T09:49:37Z
0 likes, 0 repeats
Why would you even want tabs in niri? Occasionally it's quite useful. For example, when streaming programming, I increase the font size, so I can no longer fit editor + terminal on the screen at once. Scrolling back and forth gets annoying, and tabs feel just right for this.
(DIR) Post #Aqlu8a8b3a6AvcIiLA by arthsmn@mastodon.online
2025-02-04T10:00:58Z
0 likes, 0 repeats
@YaLTeR @elkowar they look awesome! Does it implement window rules for auto-merging windows in the same column? This would suffice the need for window swallowing and be pretty useful for some apps.
(DIR) Post #Aqlu8bd7Va6nYZabYW by YaLTeR@mastodon.online
2025-02-04T10:04:24Z
0 likes, 0 repeats
@arthsmn no rules for auto-merging (how would this work?), you just have a bind to toggle a column between normal and tabbed mode
(DIR) Post #Aqlu8cGT9HaHWc01tA by fiore@brain.worm.pink
2025-02-04T10:12:26.438514Z
0 likes, 0 repeats
@YaLTeR @arthsmn i think this is great and would very likely be a great subsitute for swallowing , while also allowing the user to still check the terminal window in case of need !! great all around ^^
(DIR) Post #Aqnrrr1lCG2enOv2I4 by YaLTeR@mastodon.online
2025-02-05T08:23:14Z
1 likes, 0 repeats
We just hit 5000 stars! 🎉#niri
(DIR) Post #AqrzvjKHLf4EKnmOno by YaLTeR@mastodon.online
2025-02-07T08:44:18Z
1 likes, 0 repeats
A ton of changes in the tabs PR over the past few days. Mainly various options (tabbed display by default, tab indicator position, etc.).Just finished with a big one: you can now place the tab indicator within the column rather than "outside". This is needed for thicker tab bars, since otherwise they overlap adjacent windows.https://github.com/YaLTeR/niri/pull/1085#niri
(DIR) Post #Aqs0DYCLScID2BZALg by fiore@brain.worm.pink
2025-02-07T08:48:50.511217Z
0 likes, 0 repeats
@YaLTeR hii kinda unrelated but do u know of anyone who made a script for a dmenu window picker in niri ? i wanna make one but i wont if theres one already floating around haha , i just couldnt find it
(DIR) Post #Aqs1XPL0DFh5IfeEvg by YaLTeR@mastodon.online
2025-02-07T08:56:33Z
1 likes, 0 repeats
@fiore yeah ppl did make, search in Discussions. I don't have link handy
(DIR) Post #Aqs1YXgMfoNHTCBHwe by fiore@brain.worm.pink
2025-02-07T09:03:52.559499Z
0 likes, 0 repeats
@YaLTeR oh okie thank u very much ill look more ^^
(DIR) Post #Ar0D5d0QJk4W3yIaZc by YaLTeR@mastodon.online
2025-02-10T17:44:19Z
0 likes, 0 repeats
I merged tabbed columns into niri! Now you can play around with them using your nearest niri-git package. With working animations and all :ablobcatbongo: Noticed tabs can sometimes be useful for comparing windows without taking screenshots. Here for example I'm running the Adw demo from F41 vs. nightly Flathub, showing the slight color difference and apparently a 1 px layout shift.#niri
(DIR) Post #Ar0D5dhJkGNoD0MqQq by YaLTeR@mastodon.online
2025-02-11T07:39:03Z
1 likes, 0 repeats
Another cool suggestion by @elkowar: you can now match windows recorded by an active window screencast. For example, to highlight the casted window with a different color.#niri
(DIR) Post #ArqWpVE71IuC6En1I8 by YaLTeR@mastodon.online
2025-02-13T08:11:15Z
0 likes, 0 repeats
You can now (finally) customize the important hotkeys list: https://github.com/YaLTeR/niri/wiki/Configuration:-Key-Bindings#custom-hotkey-overlay-titles#niri
(DIR) Post #ArqWpWOmf72Hjcn3Z2 by YaLTeR@mastodon.online
2025-02-16T07:49:34Z
0 likes, 0 repeats
Today in *very long* overdue features (looks like I opened the issue even before v0.1.0): moving the mouse against a monitor edge now scrolls the view during drag-and-drop.(before this change, you had to use the keyboard for this, and yes it was very awkward)#niri
(DIR) Post #ArqWpX1mK8EBgZ2CLQ by YaLTeR@mastodon.online
2025-02-17T19:07:22Z
0 likes, 0 repeats
Another neat new thing: a bind to expand column to available width. Basically, "expand to fill empty space".But, a bit smarter: with scrollable tiling we can have windows partially off-screen. This bind ignores such windows, making it easy to position things to exactly fill the screen, even in the middle of a scrolling layout.#niri
(DIR) Post #ArqWpXhbobgjmIbbXs by YaLTeR@mastodon.online
2025-02-22T07:43:09Z
0 likes, 0 repeats
Today I'm releasing niri v25.02 with tabs, shadows, DnD view scrolling, and a ton of other improvements! Read the release notes at https://github.com/YaLTeR/niri/releases/tag/v25.02 and @ your distro to update the package. :ablobcatbongo: [[honestly wtf how did so much stuff happen, it's been barely over a month]]#niri #smithay #wayland #rust
(DIR) Post #ArqWpYTSwfyAAizp8i by YaLTeR@mastodon.online
2025-03-08T12:54:37Z
0 likes, 0 repeats
This is not on main yet, but I've heavily reworked how offscreening works in niri.Offscreening is when you render a group of elements to a separate texture, then draw that texture to the final render. In niri it's used for window opening and resize animations, and now also for full-tile opacity changes.Before, it was very simple: every frame create a new texture and render it from scratch. The new code caches textures and does full damage tracking both "inside" and "outside" the offscreen.
(DIR) Post #ArqWpZ6SbhA47fExv6 by YaLTeR@mastodon.online
2025-03-08T12:58:55Z
1 likes, 0 repeats
In practice this means much less texture re-creations and much less redrawing.The main reason to do this was to unlock using offscreens for more persistent visuals. E.g. it's fine to do some extra rendering for a 150 ms animation, but it's not fine to do it for something that can last seconds or minutes.In particular, I can finally make windows semitransparent while dragging them in the tiling layout! Which needs an offscreen since it's a stack of border + window + subsurfaces.#niri
(DIR) Post #AseDjUm0EyESwNOnz6 by YaLTeR@mastodon.online
2025-03-13T12:23:56Z
0 likes, 0 repeats
Still testing this one: a window rule to set the xdg-toplevel Tiled state.By default niri matches it to prefer-no-csd, because the Tiled state currently happens to be the best way to ask always-CSD windows to square their corners.With this tiled-state window rule you can override it, for example to get title bars (for easy mouse-only gestures) together with square corners (if you're going for a square style with borders, like mine here). You can also e.g. limit it to tiled windows.#niri
(DIR) Post #AseDjVynks42gMOXZY by YaLTeR@mastodon.online
2025-03-13T17:21:23Z
0 likes, 0 repeats
And another thing for today: finally made it so niri waits a bit for the lock screen to paint before locking the session. This fixes the "red flash" issue.Please test this since it's security sensitive. I already caught one mistake before pushing where killing a lock screen, then spawning a new one, would briefly flash the session contents.(Note that some lockers fade in from transparency, so you'll still briefly see red, that's just the niri locked session background.)#niri
(DIR) Post #AseDjWqgWXALNTbZYm by YaLTeR@mastodon.online
2025-03-14T06:06:48Z
0 likes, 0 repeats
Since adding tabbed columns, just about everyone is asking for a way to open a new window directly in the focused tabbed column. This is rather complicated, but yesterday I came up with a 1 line change that should cover some workflows (covers how I use tabs at least).I have logic that restores the view position when you open and close a window right away. Now I enabled it for consume-left, which means that you can open a new window, consume left (into a tab), and the view will go back.#niri
(DIR) Post #AseDjXjzCvOy8zTjl2 by YaLTeR@mastodon.online
2025-03-15T17:28:10Z
0 likes, 0 repeats
Today I implemented a new niri screencasting feature: the dynamic cast target.It shows up as a special "window" in the portal dialog. Once you select it, you can change what it casts with niri binds! Switch between windows, monitors, and in the future maybe workspaces and other stuff. Works with OBS, browsers, anything else.I also wrote a wiki page with all our screencasting-related features: https://github.com/YaLTeR/niri/wiki/ScreencastingThanks @elkowar for coming up with the dynamic cast idea!#niri
(DIR) Post #AseDjYREc7zqJ7iHAW by YaLTeR@mastodon.online
2025-03-18T06:14:30Z
0 likes, 0 repeats
Had to show slides a few times for uni lately, which motivated me to add this next feature.Windowed fullscreen, also known in other WMs as fake or detached fullscreen, makes the window think that it went fullscreen, while in reality keeping it as a normal window. Useful in combination with apps like Google Slides to hide the browser UI without taking up the whole screen, especially on ultrawide monitors.Wiki section: https://github.com/YaLTeR/niri/wiki/Screencasting#windowed-fakedetached-fullscreen#niri
(DIR) Post #AseDjZ3sISuAExn8Oe by YaLTeR@mastodon.online
2025-03-18T06:17:37Z
0 likes, 0 repeats
This one seems simple, but actually turned out quite tricky to implement.I wrote niri code under the assumption that the fullscreen state does not apply immediately: we send a configure to the window, then only at a later point it commits in response. Windowed fullscreen breaks this because in some cases it can apply instantly (going from real to windowed fullscreen needs no state change from the window).#niri
(DIR) Post #AseDjZcyByyfzoDA6C by YaLTeR@mastodon.online
2025-03-18T06:22:40Z
0 likes, 0 repeats
After trying a few approaches, I ended up doing it "properly" by associating the (entirely compositor-side) windowed fullscreen state to window configures and commits. This lets niri correctly track if a given fullscreen window commit was real fullscreen (so e.g. we need to draw a black backdrop), or if it was windowed fullscreen.This even works across a chain of toggling windowed fullscreen, then the window slowly acking and committing them, and I have a test to verify that.#niri
(DIR) Post #AseDjZywsGYh5yUiMC by YaLTeR@mastodon.online
2025-03-21T07:43:57Z
1 likes, 0 repeats
New niri users frequently come from other tiling WMs with static workspace systems. For them, dynamic workspaces is an unusual system, and it can be unclear how to use dynamic workspaces effectively. (Especially until we get an Overview type thing.)I figured I'd write a wiki page describing niri's workspaces in more detail: https://github.com/YaLTeR/niri/wiki/Workspaces I also included an example of how I personally use workspaces on niri.Hopefully this makes it easier to understand what's going on!#niri
(DIR) Post #AseDjad0TKbL6DEhnM by YaLTeR@mastodon.online
2025-03-23T06:45:18Z
0 likes, 0 repeats
slowly going through the piled up PRs (how's your weekend going?), today merged the pick-color IPC from nnyyxxxx. comes with Portal support of course#niri
(DIR) Post #AseDjamZtkG1ZtiLiK by YaLTeR@mastodon.online
2025-04-01T07:13:58Z
1 likes, 2 repeats
A secret niri v25.02 feature! Make your floating windows FLOAT by putting this in your config:window-rule { match is-floating=true baba-is-float true}Works in the nix flake too :blobcat: #niri #wayland
(DIR) Post #AseEl8LAiRPjtrC60O by visnudeva@mastodon.social
2025-03-16T19:21:06Z
1 likes, 0 repeats
@YaLTeR @elkowar so you are the creator of the best tiling window manager yet, I was a fan of newm but it died so I went on hyprland but I made the error of trying niri and I didn't return. Thank you for your great work. Why the name niri ?
(DIR) Post #AsoGJ2DwHXFOkADFWC by YaLTeR@mastodon.online
2025-04-05T09:38:30Z
1 likes, 0 repeats
started working on an Overview for niri. very wip, lots to do, got some basic rendering and dragging working though#niri
(DIR) Post #AsoGJ7GxVjdMOyfEQ4 by YaLTeR@mastodon.online
2025-04-06T08:37:27Z
1 likes, 0 repeats
today's progress: wheel scrolling up and down, right click to scroll left and right, click on workspace to focus, some keyboard fixesthis is all mouse-only on the video. only currently using a 3rd-party tool for the hot corner (waycorner), i'll integrate that later#niri
(DIR) Post #AtD6WQgZ5V7IJlnf1M by YaLTeR@mastodon.online
2025-04-11T14:28:49Z
0 likes, 0 repeats
i have this old ASUS Eee PC collecting dust, decided to try if niri will run on it. well, it actually runs! a few shaders failed compiling (ran into ALU instruction limits), but otherwise seems to work#niri
(DIR) Post #AtD6WRWJz4W6uI0zh2 by YaLTeR@mastodon.online
2025-04-12T10:57:27Z
0 likes, 0 repeats
today's overview progress: some rendering and input fixes, plus implemented built-in hot corner, and workspace switch on drag-and-drop hold. which means that now you can perform an entire drag-and-drop to a different workspace mouse-only!#niri
(DIR) Post #AtD6WS7tjMZgmpb0GO by YaLTeR@mastodon.online
2025-04-13T16:46:12Z
0 likes, 0 repeats
spent many hours today trying to make the combined exit overview + switch workspace animation monotonic. This is hard because zoom and vertical movement are separate axes, and you can e.g. "catch" one of them with a touchpad gesture, while the other must continue animating (so you can't easily convert this into rect interpolation).Ended up working out a correction formula for the workspace Y positions when both axes have matching animations. Appears to behave so far from my testing#niri
(DIR) Post #AtD6WSyMaIXfPY8u2a by YaLTeR@mastodon.online
2025-04-18T08:51:49Z
1 likes, 0 repeats
today I opened a draft PR for the Overview, and request everyone to test it and report issues: https://github.com/YaLTeR/niri/pull/1440also, today's new overview feature: drag-and-drop into a new workspace between/above/below!#niri
(DIR) Post #AtD6WWnsLEWtIBGaFU by YaLTeR@mastodon.online
2025-04-13T16:56:17Z
0 likes, 0 repeats
you know it's bad when you need to write a big comment with formulas and derivations
(DIR) Post #AtD6WXP66qIt9cgJGa by YaLTeR@mastodon.online
2025-04-11T14:33:20Z
0 likes, 0 repeats
also reproducing the "unable to screenshot on old intel driver" issue on this: https://github.com/YaLTeR/niri/issues/807
(DIR) Post #AtD6Wcd6gBTrMWH4IS by YaLTeR@mastodon.online
2025-04-11T14:46:53Z
0 likes, 0 repeats
i think i'll throw sway atomic on this and layer niri. so that it can collect dust in a more useful fashion
(DIR) Post #AtD6WjhGP7xtHRGzFQ by YaLTeR@mastodon.online
2025-04-11T16:07:27Z
0 likes, 0 repeats
apparently sway atomic is really barebones with barely anything installed, also whatever the default display manager is, fails to render any text. I'll try to rebase to silverblue ig?
(DIR) Post #AtOQ2od7dLn9iNuBn6 by YaLTeR@mastodon.online
2025-04-20T10:18:13Z
0 likes, 0 repeats
POV: GoPro mounted on the xwayland-satellite#niri
(DIR) Post #AtOQ2qAptUM0VEgcym by YaLTeR@mastodon.online
2025-04-23T09:08:04Z
1 likes, 0 repeats
Today: added touch support to the Overview. Somehow, the entire thing just worked first try.#niri
(DIR) Post #AtuzsgcWtGsTbZ0UNc by YaLTeR@mastodon.online
2025-04-25T09:21:01Z
0 likes, 0 repeats
After some more fixes, and a long rebasing session, I merged the Overview! Please give it more testing using your nearest niri-git package.https://github.com/YaLTeR/niri/wiki/Overview#niri
(DIR) Post #AtuzshfP04lmqlMIUq by YaLTeR@mastodon.online
2025-04-25T12:48:12Z
0 likes, 0 repeats
The Eee PC rocking the Overview#niri
(DIR) Post #AtuzsiU5xbJrNz4mVk by YaLTeR@mastodon.online
2025-05-06T14:59:03Z
0 likes, 0 repeats
Ppl naturally want to put something in the Overview backdrop, like a blurred version of the wallpaper (see how popular Blur My Shell is). Orthogonally, some ppl want the wallpaper to be static, rather than move with workspaces (it can be distracting).I'm not prepared to dive head-first into image rendering and blur shaders yet, so I made it possible to put a layer surface into the backdrop. This enables both of those cases, likely even more cool things!https://github.com/YaLTeR/niri/wiki/Overview#backdrop-customization#niri
(DIR) Post #AtuzsjTQHaNMSBll6O by YaLTeR@mastodon.online
2025-05-09T12:56:46Z
1 likes, 0 repeats
Today, screenshot UI updates! Implemented tablet and touchscreen input for area selection (at long last). And, added a small clickable capture button, so screenshots can now be confirmed tablet-, touch-, or mouse-only!#niri
(DIR) Post #Aume36fLo5FjYgNC1g by YaLTeR@mastodon.online
2025-05-17T13:37:47Z
0 likes, 0 repeats
After long 3 months of work, I'm glad to release niri v25.05 with the Overview, screenshot UI tablet and touch support, dynamic screencast target and windowed fullscreen, IPC pick-window and pick-color, window urgency, and lots of other things! :ablobcatbongo: :apartyblobcat: Release notes prepared for your reading pleasure as always: https://github.com/YaLTeR/niri/releases/tag/v25.05#niri #smithay #rust #wayland
(DIR) Post #Aume37vL87dXSYrTaS by YaLTeR@mastodon.online
2025-05-25T07:01:35Z
0 likes, 0 repeats
Tagged a niri v25.05.1 hotfix, fixing kitty quick access terminal, numlock, and some jank with hidden cursor.https://github.com/YaLTeR/niri/releases/tag/v25.05.1#niri
(DIR) Post #Aume38WusPh7L6RU9o by YaLTeR@mastodon.online
2025-06-04T10:13:41Z
1 likes, 0 repeats
Alright after some much needed rest, I set out to deal with the thing everyone has to bump into when setting up niri: some way to use Xwayland. I am still very much *not* planning to integrate Xwayland directly, but with this PR (and an accompanying xwayland-satellite PR), niri will create the X11 sockets and autostart xwl-s on demand, all out of the box with zero configuration. So, it'll work just like other compositors, but with xwl-s instead of direct Xwayland.https://github.com/YaLTeR/niri/pull/1728#niri
(DIR) Post #Av5k6RoZJr6vZAcjrc by YaLTeR@mastodon.online
2025-06-10T18:51:35Z
0 likes, 0 repeats
8k stars! 🎉#niri
(DIR) Post #Av5k6Sx75ZXX5xd4oy by YaLTeR@mastodon.online
2025-06-12T12:56:43Z
0 likes, 0 repeats
In niri v25.05, the screenshot UI learned to respond to some keyboard window movement bindings by moving the screenshot selection. Now it supports several more movement commands, including moving across monitors. It works similarly to a floating window: the selection origin is preserved relatively, and the size is adjusted by the monitor scale difference. Under the right conditions, it'll match a floating window exactly.Also, holding Space will now let you move the selection origin!#niri
(DIR) Post #Av5k6TsBfNC3wyKemW by YaLTeR@mastodon.online
2025-06-12T18:23:45Z
1 likes, 0 repeats
...and now moving also works with on a touchscreen with a second touch :) Got this idea from how in osu! you can drag with one finger and press with second/third to "click".#niri
(DIR) Post #Av5k6UQvaCyzgiaOvo by YaLTeR@mastodon.online
2025-06-13T15:21:28Z
1 likes, 2 repeats
apparently niri is on the GH trending page today: https://github.com/trending Amidst a sea of LLM repos 🙃#niri
(DIR) Post #AvMDj95asbUhz4kcEK by YaLTeR@mastodon.online
2025-06-14T14:10:32Z
0 likes, 0 repeats
Today I implemented most of the ext-workspace protocol [1] in niri. It lets desktop components (i.e. bars) show workspaces and do some basic operations on them.The two bars with ext-workspace that I know of are sfwbar and xfce4-panel. Unfortunately, I seem to have surfaced several problems in their implementations. I opened issues in sfwbar; would be great if someone took a look from Xfce. Also if there are other clients I missed?https://github.com/YaLTeR/niri/pull/1800[1]: https://wayland.app/protocols/ext-workspace-v1#niri
(DIR) Post #AvMDj9wlgu1qdzd572 by YaLTeR@mastodon.online
2025-06-17T16:29:14Z
0 likes, 0 repeats
Everyone who dislikes GitHub Wiki: I finally made a write-down of my requirements/wishes for a replacement. Please feel free to chime in with suggestions: https://github.com/YaLTeR/niri/discussions/1830#niri
(DIR) Post #AvMDjAicoyJH2Q1Ihs by YaLTeR@mastodon.online
2025-06-21T14:07:57Z
1 likes, 0 repeats
Update on ext-workspace:- sfwbar fixed all outstanding issues!- the waybar ext-workspace PR also fixed all issues!- quickshell impl is on the way#niri
(DIR) Post #AvTz3y9rPU57UKihjE by YaLTeR@mastodon.online
2025-06-25T06:48:29Z
2 likes, 1 repeats
Out of curiosity, I tried running Orca on niri, and apparently it sort-of works for some apps (I expected nothing to work at all; idk anything about screen readers). However, compared to GNOME Shell, there's quite a few missing or broken things. I documented what I found here: https://github.com/YaLTeR/niri/issues/1904Is there some "Integrating Orca to Wayland desktops" docs? Like, what the compositor needs to do, who handles the hotkeys and how, etc.(not actively working on this, just curious)#niri #a11y
(DIR) Post #AwYmCkMHZCSbBTA6y0 by YaLTeR@mastodon.online
2025-07-14T09:25:46Z
0 likes, 0 repeats
Should've done this a while ago, but I finally wrote contributing guidelines for niri:https://github.com/YaLTeR/niri/blob/main/CONTRIBUTING.mdWith many new users, the stream of issues, discussions and pull requests is quite overwhelming. 😅 You can help! And the contributing guidelines outline the various ways how.I would especially appreciate help reviewing PRs, though I understand it's the more complex task out of these.Big thanks to people already answering questions and helping others! :ablobcatheartsqueeze:#niri
(DIR) Post #AwYmCm29L1XoNbl3rc by YaLTeR@mastodon.online
2025-07-15T21:04:02Z
0 likes, 0 repeats
Today I implemented fetching keyboard layout options from org.freedesktop.locale1, used by things like distro installers to configure the layout:https://github.com/YaLTeR/niri/pull/2052I guess this is the closest thing to global cross-desktop keyboard layout configuration, so it should also help environments like LXQt integrating niri.Also recently merged: niri now sets a logind session locked hint, useful for e.g. idle tools that put the PC to sleep, but only once the lockscreen is fully up.#niri
(DIR) Post #AwYmCmzLmutpLDSL8i by YaLTeR@mastodon.online
2025-07-17T15:10:39Z
0 likes, 0 repeats
Gathering thoughts on reconciling communities between Matrix and Discord: https://github.com/YaLTeR/niri/discussions/2069This is a problem I expect we'll face reasonably soon, so if you have some ideas please write in the discussion! #niri
(DIR) Post #AwYmCnnKn4sjqEqG36 by YaLTeR@mastodon.online
2025-07-27T12:56:29Z
0 likes, 0 repeats
About finished implementing org.fd.a11y.KeyboardMonitor in niri, necessary for correct screen reader function:https://github.com/YaLTeR/niri/pull/2060I tested it with Orca more or less, seems to work, but I'm very new to screen reader workings, so it's possible I've missed something.This makes Orca announce keys everywhere in niri, and makes grabs work (both modifier with double-press passthrough and keystrokes). Making Orca actually say niri dialogs will be a separate effort.#niri #a11y
(DIR) Post #AwYmCoS6LVUXsfuoam by BrodieOnLinux@mstdn.social
2025-07-27T13:24:53Z
0 likes, 0 repeats
@YaLTeR I didn't realize this was a continuous thread from the start of the project, I respect the dedication
(DIR) Post #AwYmIJP2hQf3Jw6gfQ by YaLTeR@mastodon.online
2025-07-27T13:25:55Z
1 likes, 0 repeats
@BrodieOnLinux I think it's more fun this way
(DIR) Post #AwYmf2DOllYAfqUmdU by fiore@brain.worm.pink
2025-07-27T13:30:04.578247Z
0 likes, 0 repeats
@YaLTeR @BrodieOnLinux i love that it takes a good 20 seconds to open any post from this thread from my instance :P
(DIR) Post #AwYmfrkTAZJ6VBMPlQ by monospace@floss.social
2025-07-27T13:30:09Z
0 likes, 0 repeats
@BrodieOnLinux @YaLTeR And it's so great to see an alternative window manager thrive. Love Niri!
(DIR) Post #AwgiBGQehpx1WBk8iu by YaLTeR@mastodon.online
2025-07-31T09:12:18Z
1 likes, 0 repeats
We made it to 10k stars on GitHub!!!! :apartyblobcat: :apartyblobcat: :apartyblobcat: #niri
(DIR) Post #Awt53NcugszMMqCnjs by YaLTeR@mastodon.online
2025-08-04T15:24:42Z
0 likes, 0 repeats
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.https://github.com/YaLTeR/niri/pull/2175This 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)).#niri
(DIR) Post #Awt53OwRnkCyRiLupE by YaLTeR@mastodon.online
2025-08-05T18:33:26Z
1 likes, 1 repeats
Quite comprehensive desktop shell for niri released today: https://github.com/bbedward/DankMaterialShellBased on QuickShell; made by the same people who started the niri Discord server.Checking it out now, looks very cool! Though not without a few rough edges to iron out of course#niri #quickshell
(DIR) Post #Awt591djLlbdujHObY by BrodieOnLinux@mstdn.social
2025-08-06T08:31:24Z
0 likes, 0 repeats
@YaLTeR I'm not super vibing with the styling but it looks really impressive
(DIR) Post #Awt7K43OumdUUjg6wS by YaLTeR@mastodon.online
2025-08-06T08:55:46Z
0 likes, 0 repeats
@BrodieOnLinux yeah, hopefully these kinds of projects reduce the gap for ppl to try niri
(DIR) Post #Ax1ahUKhpMw6aryQ0e by YaLTeR@mastodon.online
2025-08-10T06:31:40Z
1 likes, 0 repeats
today niri turns 2!#niri
(DIR) Post #AxAFAOlh99PxAEcJrk by YaLTeR@mastodon.online
2025-08-14T13:21:32Z
1 likes, 0 repeats
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
(DIR) Post #AxE127pxahnRbtc38a by YaLTeR@mastodon.online
2025-08-16T09:02:11Z
1 likes, 0 repeats
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.https://yalter.github.io/niri/niri_ipc/struct.Window.html#structfield.layoutHere's a quick quickshell test I threw together that draws floating windows as rectangles.Thanks yrkv for getting the PR mostly complete!https://github.com/YaLTeR/niri/pull/1265#niri
(DIR) Post #AxGQGdGePruQJZ1zW4 by YaLTeR@mastodon.online
2025-08-17T14:44:17Z
1 likes, 1 repeats
With massive thanks to cutenice, we have a new wiki site!!! With good search! :ablobcatbongo: https://yalter.github.io/niri/Make sure not to miss the new Since: annotations :blobcat:The site uses Material for mkdocs, and we retained full compatibility with GitHub Wiki, meaning all existing links keep working.Also thanks everyone for several suggestions and test wikis in the GitHub discussion!#niri
(DIR) Post #AxhLE9PfBsFydkA6iG by YaLTeR@mastodon.online
2025-08-22T16:43:01Z
0 likes, 0 repeats
Rearranged and expanded quite a bit the design principles page on the wiki: https://yalter.github.io/niri/Development%3A-Design-Principles.htmlGive it a read if you're curious about my thinking process about various niri behaviors and such#niri
(DIR) Post #AxhLEAYuuxFkCjV0m8 by YaLTeR@mastodon.online
2025-08-23T08:24:46Z
0 likes, 0 repeats
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:https://github.com/YaLTeR/niri/pull/2273#niri #a11y
(DIR) Post #AxhLEBecrDPhajB5JQ by YaLTeR@mastodon.online
2025-08-30T14:11:38Z
1 likes, 1 repeats
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:Read the notes here: https://github.com/YaLTeR/niri/releases/tag/v25.08now i need at least a month off from any release notes preparation 😴#niri #smithay #wayland #rust
(DIR) Post #AxhLEGCnw587htCR8q by YaLTeR@mastodon.online
2025-08-30T14:12:35Z
0 likes, 1 repeats
Screen reader announcement demo bc apparently you can't attach video and image at once#niri
(DIR) Post #AxreG6aiUfyhB4ZpNQ by YaLTeR@mastodon.online
2025-09-04T10:44:32Z
0 likes, 0 repeats
Fullscreen refactor pt. 1: track pending vs. current fullscreen state for columns, avoid vertical jump when waiting for window to commit a new buffer.#niri
(DIR) Post #AxreG7XYxt387a6p6G by YaLTeR@mastodon.online
2025-09-04T10:46:55Z
0 likes, 1 repeats
Fullscreen refactor pt. 2: added un/fullscreen animations. This one involved quite a lot of moving parts actually, so looking for testing.https://github.com/YaLTeR/niri/pull/2333#niri
(DIR) Post #AxreLaNhA9aH196EHg by BrodieOnLinux@mstdn.social
2025-09-04T13:48:30Z
0 likes, 0 repeats
@YaLTeR I don't care for the first demo however that second I can see why the change was made
(DIR) Post #Ay8FcWIMPfpW6JtvSS by YaLTeR@mastodon.online
2025-09-07T19:33:00Z
0 likes, 0 repeats
Fullscreen refactor pt. 3 turned out to be a refactor of a good chunk of core Smithay xdg-shell/layer-shell/session-lock logic, making it more correct. The fullscreen PR in niri now includes that Smithay refactor, and needs testing even more than before :blobmiou: https://github.com/YaLTeR/niri/pull/2333#issuecomment-3263990200Specifically, the refactor makes Smithay correctly track the last acked configure for each commit, also enforces the "must ack before committing first buffer" protocol rule.#niri
(DIR) Post #Ay8FcXMISWZZOokaES by YaLTeR@mastodon.online
2025-09-12T13:36:15Z
1 likes, 0 repeats
With the fullscreen refactors in place, I got started on the thing that I wanted to do all along: maximize.Niri didn't support normal Wayland maximize because it's very similar (yet slightly different) to our full-width columns—and can't be bound to our full-width state either. However, after plenty of requests, and thinking about it, I reconsidered. Henceforth, the maximize buttons and double-clicking on the titlebars will do the expected thing.Details in PR: https://github.com/YaLTeR/niri/pull/2376#niri
(DIR) Post #Aybl5the8zV2uDXFKa by YaLTeR@mastodon.online
2025-09-17T19:31:25Z
0 likes, 0 repeats
My Smithay refactors were merged: the big one mentioned above, plus a fix for popup stacking order (e.g. open popup, then open tooltip also from the toplevel itself), plus a fix for root popup grabs from Qt layer-shell surfaces. All of this along with fullscreen refactors and animations is now merged to niri main. (maximize is still wip)#niri
(DIR) Post #Aybl5uSnJhDJGRatou by YaLTeR@mastodon.online
2025-09-26T19:10:54Z
1 likes, 0 repeats
There's been a long-standing request to add config includes to niri. They're useful for config organization, but also for custom desktop shells to be able to change colors without having to edit the main user's config.Today I finished the first step towards this: a many-days-long refactor that makes the main config part, layout, mergeable, i.e., able to be combined from multiple parts. And building on this, per-output/workspace overrides.https://github.com/YaLTeR/niri/pull/2449Testing wanted here!#niri
(DIR) Post #Aybl5v2x9G8Z4aVmBE by YaLTeR@mastodon.online
2025-09-26T19:16:47Z
1 likes, 0 repeats
Our config system is declarative, rather than command-like, which means that we parse the config into a tree of data types instead of reading lines and applying them one-by-one. This design requires a lot of work to properly support includes, but in turn we get atomic and selective reloading (if output part of the config didn't change, we don't override your transient output adjustments), better error messages and no problems with things like "spawn-at-startup" that should only work once.#niri
(DIR) Post #AzlQd95TxBpreMxvWK by YaLTeR@mastodon.online
2025-09-30T08:21:25Z
0 likes, 0 repeats
After several more days of work, I fully finished config includes. All config sections merge together, live-reloading watches all included files (even if they fail to parse), error messages work across files, documentation is written.https://github.com/YaLTeR/niri/pull/2482Once again, this needs testing! There must be NO breakage to existing configs, so if something breaks, I want to know about it to fix it.#niri
(DIR) Post #AzlQdAdCDKOiRDkMi0 by YaLTeR@mastodon.online
2025-10-02T07:38:05Z
0 likes, 0 repeats
I merged config includes, along with per-output and per-workspace layout config overrides. Play around with them at your nearest niri-git package.- https://yalter.github.io/niri/Configuration%3A-Include.html- https://yalter.github.io/niri/Configuration%3A-Outputs.html#layout-config-overrides- https://yalter.github.io/niri/Configuration%3A-Named-Workspaces.html#layout-config-overridesAlso merged ignore-drm-device which should let you passthrough a GPU to VMs: https://yalter.github.io/niri/Configuration%3A-Debug-Options.html#ignore-drm-device#niri
(DIR) Post #AzlQdBa2gXT9NjHMQq by YaLTeR@mastodon.online
2025-10-15T06:34:52Z
0 likes, 0 repeats
After a detour to config includes and, again, several days/weeks of work implementing all edge cases and expected behaviors, true window maximize is ready and merged to main. Tricky cases like: windows requesting fullscreen and maximize after opening; windows failing to match the full maximized size; transparent windows with the niri border behind them.https://yalter.github.io/niri/Fullscreen-and-Maximize.htmlGive it a try! Ngl I mostly switched to maximize just because I'm too lazy to reach the keyboard for Mod+F.#niri
(DIR) Post #AzlQdCWXB4G0J8e4bQ by YaLTeR@mastodon.online
2025-10-16T14:59:52Z
0 likes, 0 repeats
One cool thing I noticed about true maximize is that apps like GIMP or Inkscape or Blender, that really want all available space, maximize themselves at startup, so you don't have to window-rule them manually in your config#niri
(DIR) Post #AzlQdDMI4deoterPH6 by YaLTeR@mastodon.online
2025-10-23T06:57:23Z
0 likes, 0 repeats
microsoft niri#niri
(DIR) Post #AzlQdEMgKfZ41A3EWW by YaLTeR@mastodon.online
2025-10-31T09:15:48Z
0 likes, 0 repeats
Small change on niri-git for people using the foot terminal with CSD, or other apps that constrain their sizes to a grid: niri will now match the default column width to a preset width when a window opens. So opening foot sized "proportion 0.5" and then pressing Mod+R will switch you to the next preset width, even if foot actually opened slightly smaller to match its terminal grid. Before the change, the first Mod+R would pick the same "proportion 0.5" in this case and "do nothing".#niri
(DIR) Post #AzlQdEvQFVLzkuIyfo by YaLTeR@mastodon.online
2025-10-31T09:27:09Z
1 likes, 0 repeats
Also, experimenting with this interaction tweak on a branch: what if dragging tiled windows horizontally scrolled the view instead of dragging them "out"? This makes it possible to scroll the view mouse-only without going through the Overview (the zooming gets quite tiring when it's frequent), and makes it possible to scroll the view touch-only. To drag the window out of the layout, you can still drag it downward.#niri
(DIR) Post #AzlQfIvsJxlslNV99M by fiore@brain.worm.pink
2025-10-31T09:31:07.749975Z
0 likes, 0 repeats
@YaLTeR would this alson affect dragging via mod+click for example ?
(DIR) Post #AzlR9yLSuimXtF5vSi by YaLTeR@mastodon.online
2025-10-31T09:34:45Z
0 likes, 0 repeats
@fiore i'm leaning towards yet
(DIR) Post #AzlR9zTehkvZOvvyro by fiore@brain.worm.pink
2025-10-31T09:36:40.201119Z
0 likes, 0 repeats
@YaLTeR hm ! this is definitely an interesting feature , idrk how it would affect me tbh !!i feel like its one of those things where subtle differences in the implementation might lead to wildly different feelings and results , like how “permissive” the “down” direction is for example
(DIR) Post #B0TeMUv6G83xPu2NTE by YaLTeR@mastodon.online
2025-11-10T20:04:53Z
0 likes, 0 repeats
Added a small "Quick Start" to the niri docs that gets you going with niri + DMS in three commands:https://yalter.github.io/niri/Getting-Started.html#quick-startTested the Fedora ones on a fresh VM, worked out nicely, getting me into a session with a very functional desktop shell.#niri
(DIR) Post #B0TeMW2w4TvOuUi9K4 by YaLTeR@mastodon.online
2025-11-13T08:22:35Z
0 likes, 0 repeats
Currently in the middle of finishing up the Alt-Tab PR for niri: https://github.com/YaLTeR/niri/pull/1704Got most things working as I'd like, though still plenty of fixes and clean-ups left. Fully live window previews with block-out-from support and fading title labels.There's some interesting design differences compared to other desktops: on niri I expect it's common to have multiple terminals open, so Alt-Tab must go by windows (not by apps) and must show previews big enough to pick the right one.#niri
(DIR) Post #B0TeMX5SCbX88atft2 by YaLTeR@mastodon.online
2025-11-15T15:04:58Z
0 likes, 0 repeats
We've hit 15k stars on the niri repo!! :ablobcatheartsqueeze: :ablobcatheartsqueeze: #niri
(DIR) Post #B0TeMXvD6Avwj770Yi by YaLTeR@mastodon.online
2025-11-16T20:02:52Z
0 likes, 0 repeats
Just merged Alt-Tab to main, shortly arriving at your nearest niri-git. Comes with plenty of ways to tweak it if you want [1], and a focus timestamp in the IPC [2] that lets shell devs make their own recent windows switchers.[1]: https://yalter.github.io/niri/Configuration%3A-Recent-Windows.html[2]: https://yalter.github.io/niri/niri_ipc/struct.Window.html#structfield.focus_timestamp#niri
(DIR) Post #B0TeMYhmBbmX9jpnG4 by YaLTeR@mastodon.online
2025-11-21T12:43:51Z
1 likes, 1 repeats
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).#niri
(DIR) Post #B0XD5SqCoazBurF0j2 by YaLTeR@mastodon.online
2025-11-22T08:58:05Z
0 likes, 0 repeats
Took some fighting but I think I've managed to teach the new Alt-Tab to speak to the screen reader#niri
(DIR) Post #B0XD5TmhJ7m2qGbitc by YaLTeR@mastodon.online
2025-11-23T07:10:55Z
1 likes, 0 repeats
I finished and merged the horizontal drag interaction tweak from a previous post. It's very handy but can also be annoying when you want to move windows across monitors, so on mouse I restricted it to headerbar dragging (so, not Mod+LMB and not in the overview).On touch however, it works for both headerbar dragging, and for Mod+Touch, so you can now easily scroll the view around.I also added the thing where you can touch with another finger to switch between floating and tiling.#niri
(DIR) Post #B1R1UHfATwftysmSWm by YaLTeR@mastodon.online
2025-11-26T10:36:08Z
0 likes, 0 repeats
DankMaterialShell folks set up builds for Debian, Ubuntu and OpenSUSE, so now it's super easy to try niri & DMS on those systems.I added Ubuntu commands to the niri quick start guide: https://yalter.github.io/niri/Getting-Started.htmlDebian and OpenSUSE here: https://build.opensuse.org/project/show/home:AvengeMedia:danklinux#niri
(DIR) Post #B1R1UJ2bMJ0uFqkggy by YaLTeR@mastodon.online
2025-11-29T10:22:15Z
0 likes, 0 repeats
Today I'm releasing niri v25.11 with long-awaited config includes, Alt-Tab, true maximize, custom modes, and a bunch of other improvements! :ablobcatbongo: :ablobcatbongo: Enjoy the release notes :)https://github.com/YaLTeR/niri/releases/tag/v25.11#niri #smithay #wayland #rust
(DIR) Post #B1R1UJh0w3L8HBexgO by YaLTeR@mastodon.online
2025-11-29T13:34:56Z
0 likes, 0 repeats
Congrats sternenseemann on the nixpkgs niri any% WR at 3 h 20 minhttps://github.com/NixOS/nixpkgs/pull/466213#niri
(DIR) Post #B1R1UKPgFz4KViYdIu by YaLTeR@mastodon.online
2025-12-07T18:36:07Z
0 likes, 0 repeats
funny how while working on alt-tab i discovered that mouse scrolling on top of the DMS bar switches workspaces, which completely replaced any need i had for alt-tab, so i ended up never using itthis DMS bar scrolling feature also removed one of my main usecases for the overviewand then the new horizontal window drag gesture removed my other main usecase for the overview, so now i'm opening the overview quite rarely too(both have their uses; just curious to watch my own habits shift)#niri
(DIR) Post #B1R1ULHv0KSDDvvwqO by YaLTeR@mastodon.online
2025-12-09T21:06:11Z
0 likes, 0 repeats
I've had one of those sessions today where I worked with a ton of random windows on a long workspace, while preparing slides for a uni scientific presentation. All kinds of various PDFs, file managers, InkScape, GIMP and so on. Horizontal mouse headerbar drag to scroll the view was a lifesaver. Definitely a good choice adding this. Along with scrolling the view on DnD near the screen edge. Going through the overview, or always through the keyboard, would be very annoying.#niri
(DIR) Post #B1R1UM0aKGBPSSpcSu by YaLTeR@mastodon.online
2025-12-18T15:12:48Z
0 likes, 0 repeats
yuxqiu just improved the default GPU detection logic in Smithay, so niri-git now works out of the box on Asahi and Pinephone devices, without having to manually configure render-drm-device!#niri
(DIR) Post #B1R1UMglnPvXZIZJDc by YaLTeR@mastodon.online
2025-12-20T08:05:12Z
1 likes, 0 repeats
i added the pointer warping thing from blender to when you drag the view around in niri with the mousehf with this new way to pass time during boring meetings(on a more serious note this helps when you need to scroll further than the edge of your monitor allows)also unrelated: merged optional config includes earlier today#niri
(DIR) Post #B1X6BzLrl0KjAFMVwu by YaLTeR@mastodon.online
2025-12-20T13:48:58Z
0 likes, 0 repeats
on niri-git, the nautilus rename popup now works properly with IMEs running(and generally popups with text fields should work now)#niri
(DIR) Post #B1X6C00dJQwXCgR4Ua by YaLTeR@mastodon.online
2025-12-23T06:58:53Z
1 likes, 0 repeats
Experimenting with a restructure of the niri rendering code to uncurse it somewhat by getting rid of all complex impl Iterator chains and lifetimes, which also lets me remove some intermediate small Vecs. In essence, going from pull to push iteration.I'm surprised that the result is consistently 2-3x faster than before. Wonder if it's the Vecs, or if inverting (massive) codegen'd iterators into a normal call stack passing a closure arg, providing the main benefit#niri
(DIR) Post #B1jSmO1C3QcKynyNCC by YaLTeR@mastodon.online
2025-12-25T07:42:05Z
0 likes, 0 repeats
Finished the push-based rendering refactor, made a write-up here for the curious: https://github.com/YaLTeR/niri/pull/3113It even ended up with a negative delta (+762 -780) which is always a W.Btw I ran the comparison on my Eee PC and there the difference is even more extreme, like 8x faster rendering list construction (which is once again only a part of the total rendering time, and notably doesn't include actual rendering, but still nice).#niri
(DIR) Post #B1jSmPRojvVZPfR9Ki by YaLTeR@mastodon.online
2025-12-25T11:53:11Z
0 likes, 0 repeats
biblically accurate window management#niri
(DIR) Post #B1jSmPvwvtbwv7XDIe by YaLTeR@mastodon.online
2025-12-28T11:22:51Z
0 likes, 0 repeats
i'm reviving the PR integrating Tracy GPU profiling into Smithay. Here are two test captures from niri: one for normal + screencast rendering, one for iGPU + dGPU monitor rendering#niri
(DIR) Post #B1jSmQXWgBfWnf7Ds0 by YaLTeR@mastodon.online
2025-12-29T06:27:06Z
1 likes, 1 repeats
Looking for ideas on how to go about translating niri (the binary, and the wiki). If you have experience doing this with other FOSS projects, please share:https://github.com/YaLTeR/niri/discussions/3135#niri
(DIR) Post #B30a3lO4aWHBea9bg8 by YaLTeR@mastodon.online
2026-01-04T20:35:16Z
0 likes, 0 repeats
Is there any good way of moving a process into a systemd StartTransientScope together with its children?In niri we put spawned processes into scopes, so oomd and other stuff can work properly. Usually you do it by putting yourself into a scope, then exec-ing the target program. But that's a 7 ms toll on startup time, so in niri we spawn the program right away, and then put it into a scope. However, if the program forks fast enough, that child doesn't go into the scope..#niri #linux #systemd
(DIR) Post #B30a3mZ6D0grJ4JvVI by YaLTeR@mastodon.online
2026-01-05T05:27:59Z
0 likes, 0 repeats
Turns out GNOME Shell has the same problem: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6565I also wrote it down in a more detailed form on the niri issues for future reference: https://github.com/YaLTeR/niri/issues/3201
(DIR) Post #B30a3nB1vz21Ci4Dcu by YaLTeR@mastodon.online
2026-01-07T05:47:52Z
0 likes, 0 repeats
niri can now include the mouse pointer on window screenshots, a feature that had several more edge cases than I thought before starting to work on it (and it's likely not the ones you think, those ones were easy)#niri
(DIR) Post #B30a3o66VmgY3ilnaS by YaLTeR@mastodon.online
2026-01-11T17:59:40Z
0 likes, 0 repeats
Merged another long time overdue niri PR: mouse cursor via metadata in PipeWire screencasts (lets you toggle Show Cursor on/off in OBS), and full mouse cursor support in window casts.The cursor is visible only when the window is receiving mouse events—if you're moving the mouse on top of something else covering the target window, the cursor won't be (unintentionally) painted.Thanks @abmantis for driving this, including debugging a memory bug in PW!#niri
(DIR) Post #B30a3ot1ZtoiVRerq4 by YaLTeR@mastodon.online
2026-01-14T11:33:15Z
0 likes, 0 repeats
Working on a screencast IPC for niri. The idea is to give info to desktop bars to be able to add a screencast indicator whenever something is recording the screen.Got it hooked up for both PipeWire (obviously) and wlr-screencopy. For the latter there's no good way to tell if something is a screencast so I went with some heuristics.Here's the icon working on the DMS bar, as well as a popup with the full available info I made for debugging. :blobcat: #niri
(DIR) Post #B30a3phMYk5D1ZD4Ii by YaLTeR@mastodon.online
2026-01-14T15:14:08Z
0 likes, 0 repeats
Oh right, for PipeWire I can send the node ID, which DMS can then use to fetch the consumer application name!#niri
(DIR) Post #B30a3qDccnt4dcIpaC by YaLTeR@mastodon.online
2026-01-15T06:03:02Z
0 likes, 0 repeats
The screencast IPC is now merged: https://yalter.github.io/niri/niri_ipc/struct.Cast.html#niri
(DIR) Post #B30a3qylnVbKzqMU4W by YaLTeR@mastodon.online
2026-01-15T12:00:16Z
0 likes, 0 repeats
Also added niri msg action stop-cast to force-stop a PipeWire screencast#niri
(DIR) Post #B30a3rlgrcjVRZFYK8 by YaLTeR@mastodon.online
2026-01-30T08:46:30Z
0 likes, 0 repeats
working on my new visual style#niri
(DIR) Post #B30a3sb5mVqk0zIbRY by YaLTeR@mastodon.online
2026-01-31T11:28:41Z
0 likes, 0 repeats
So yeah, I'm working on blur for niri. I'm doing "xray blur" first where the idea is that you only include background surfaces, so you pretty much never have to redo the blur—next to zero perf impact unless you have a video wallpaper or smth.Turns out that it's quite tricky to do well, especially with our Overview. I'm like on my third refactor attempt now but I think I've got a good approach.During this video there's no reblurring whatsoever, all just drawing cached static textures.#niri
(DIR) Post #B30a3tMavtqaOJWXU8 by YaLTeR@mastodon.online
2026-02-04T08:14:16Z
0 likes, 0 repeats
Added non-xray blur, based on @drakulix's Smithay/COSMIC implementation.Keep in mind this blur work is still extremely WIP and with many issues (some visible on the video). It's also still not entirely clear to me how to best structure the code around it in niri. We'll see#niri
(DIR) Post #B30a3uJ5QQdRJitFei by YaLTeR@mastodon.online
2026-02-05T09:14:08Z
1 likes, 0 repeats
Alright, getting somewhere! I think I've figured out a good code structure for the xray blur. It now correctly works even inside offscreens (opening animation, and when you drag a window targeting the tiling layout), and it should also work properly with the upcoming screen magnifier (that we have in pull requests).Still not a single blur re-render in this entire video!#niri
(DIR) Post #B30a3yIAbmHLg2UZma by YaLTeR@mastodon.online
2026-01-15T08:25:48Z
0 likes, 0 repeats
It's now in niri-git + dms-git, and it just helped me realize I had a bunch of extra screen capture sources in my laptop's OBS lol
(DIR) Post #B30a41W6cQCzg82FQ8 by YaLTeR@mastodon.online
2026-02-05T10:01:25Z
0 likes, 0 repeats
you know it's serious when you have to pull out a notebook to figure out the coordinate transforms#niri