social.tchncs.de is one of the many independent Mastodon servers you can use to participate in the fediverse.
A friendly server from Germany – which tends to attract techy people, but welcomes everybody. This is one of the oldest Mastodon instances.

Administered by:

Server stats:

3.9K
active users

#niri

12 posts8 participants2 posts today

All right, #niri looks really nice as a tiling window manager, but out-of-the-box, not even vivaldi is running. And I'm not that much into compiling dependencies, figuring out configs, etc... anymore, like I was, when I was younger.

I'm waiting for a @fedora spin - I hope one will come some time in the future.

Continued thread

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: github.com/YaLTeR/niri/wiki/Wo I also included an example of how I personally use workspaces on niri.

Hopefully this makes it easier to understand what's going on!

A scrollable-tiling Wayland compositor. Contribute to YaLTeR/niri development by creating an account on GitHub.
GitHubWorkspacesA scrollable-tiling Wayland compositor. Contribute to YaLTeR/niri development by creating an account on GitHub.
Continued thread

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.

Continued thread

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).

Continued thread

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: github.com/YaLTeR/niri/wiki/Sc

You'd be pleased to know after ~48 hours of customising Niri, I have spent another ~24 hours without touching any of it.

I love when software isn't a never-ending rabbit hole.

Continued thread

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: github.com/YaLTeR/niri/wiki/Sc

Thanks @elkowar for coming up with the dynamic cast idea!

This is how my desktop currently looks in Niri.

I just need two extra features from Hyprland for it to be perfect:

1. no_gaps_when_only
2. swapactiveworkspaces

Both have issues:
1. github.com/YaLTeR/niri/discuss
2. github.com/YaLTeR/niri/discuss

Hopefully they get done. At the moment its own features make it already better than Hyprland, it doesn't crash where HL did constantly. But I definitely need the swapworkspacething to save my neck from pain.

Took me a surprisingly long time to figure how to transfer these two from Hyprland (right) to Niri (left)

One selects a section of the screen and stores it in the clipboard, the other allows you to open it and mark it in red as the exact image you're seeing.

I know Niri has a native screenshotter but I want to do a bit more than it allows, especially for the stuff on the Mod+F7

More good points for Niri

1. Powering on and off the monitors don't break my desktop....unlike in Hyprland.
2. Suspending the PC doesn't fuck the desktop.....unlike in Hyprland.

Continued thread

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.

giving #niri tiling wm a try. so far i have not had to tweak anything to get it to work so far. sensible defaults (so far) ftw

i like one of the first things you are exposed to is the shortcut to bring up a common keybindings help screen

Continued thread

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.)

Continued thread

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.