Decided to try writing a Wayland compositor for fun.
-
Turns out GNOME Shell has the same problem: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6565
I also wrote it down in a more detailed form on the niri issues for future reference: https://github.com/YaLTeR/niri/issues/3201
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 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)
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!
-
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!
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.
-
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.
Oh right, for PipeWire I can send the node ID, which DMS can then use to fetch the consumer application name!
-
Oh right, for PipeWire I can send the node ID, which DMS can then use to fetch the consumer application name!
The screencast IPC is now merged: https://yalter.github.io/niri/niri_ipc/struct.Cast.html
-
The screencast IPC is now merged: https://yalter.github.io/niri/niri_ipc/struct.Cast.html
Also added niri msg action stop-cast to force-stop a PipeWire screencast
-
Also added niri msg action stop-cast to force-stop a PipeWire screencast
working on my new visual style
-
working on my new visual style
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.
-
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.
-
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!
-
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!