Decided to try writing a Wayland compositor for fun.
-
replied to Ivan Molodetskikh on last edited by
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/Screencasting
Thanks @elkowar for coming up with the dynamic cast idea!
-
replied to Ivan Molodetskikh on last edited by
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
-
replied to Ivan Molodetskikh on last edited by
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).
-
replied to Ivan Molodetskikh on last edited by
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.
-
replied to Ivan Molodetskikh on last edited by
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!
-
replied to Ivan Molodetskikh last edited by
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
-
replied to Ivan Molodetskikh last edited by
-
replied to Ivan Molodetskikh last edited by
started working on an Overview for niri. very wip, lots to do, got some basic rendering and dragging working though
-
replied to Ivan Molodetskikh last edited by
today's progress: wheel scrolling up and down, right click to scroll left and right, click on workspace to focus, some keyboard fixes
this is all mouse-only on the video. only currently using a 3rd-party tool for the hot corner (waycorner), i'll integrate that later
-
replied to Ivan Molodetskikh last edited by
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
-
replied to Ivan Molodetskikh last edited by
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!