Decided to try writing a Wayland compositor for fun.
-
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!
you know it's serious when you have to pull out a notebook to figure out the coordinate transforms
-
you know it's serious when you have to pull out a notebook to figure out the coordinate transforms
Today, got xray working on the closing window animations. The reason this needs special treatment is that when a window closes, niri renders a snapshot of its last visible contents to use for the animation. This happens outside the normal rendering path so I needed to thread through the xray background rendering logic as well as the correct window coordinates (since the xray background needs to know where the window is to draw the correct thing).
-
Today, got xray working on the closing window animations. The reason this needs special treatment is that when a window closes, niri renders a snapshot of its last visible contents to use for the animation. This happens outside the normal rendering path so I needed to thread through the xray background rendering logic as well as the correct window coordinates (since the xray background needs to know where the window is to draw the correct thing).
Today: implemented (a limited but useful subset of) both ext-background-effect and org-kde-kwin-blur protocols. Clients use these to request blur on their surfaces without having to configure anything in the compositor. These protocols also allow clients to blur only parts of their surfaces, for example here excluding client-side decoration bars and shadows.
Here are three terminals all with their org-kde-kwin-blur setting enabled.
-
Today: implemented (a limited but useful subset of) both ext-background-effect and org-kde-kwin-blur protocols. Clients use these to request blur on their surfaces without having to configure anything in the compositor. These protocols also allow clients to blur only parts of their surfaces, for example here excluding client-side decoration bars and shadows.
Here are three terminals all with their org-kde-kwin-blur setting enabled.
@YaLTeR Looks nice
