Niri convinced me to give up xmonad. I ran xmonad exclusively for 14 years.

Being able to have an unlimited number of windows on a desktop (without continually switching the tiling structure) makes them collections of topics rather than having multiple desktops bounded by what fits comfortably. What used to be a switch from the "editor and terminals" desktop to the "browser" desktop is now horizontal movement on the current desktop to the related browser window (general browsing is on a different desktop).

Really low barrier to entry, works great out of the box. There were some wayland teething issues (application support, e.g., no Zoom), but nothing that couldn't be overcome (occasionally by falling back to X). Most of those have been resolved with time.

Edits: Hardware: 2017 System76 Bonobo WS, 2x GTX 1080, multiple screens (4k @ 2x scaling + 2 1080p). PopOS.

I'm running a 1-2 year old build of niri (because it isn't broken), so I've not experienced some of the fancier animations & etc. others dislike.

I consider cloning and building from source to be low barrier to entry if it doesn't involve major setup effort (it doesn't/didn't), so I may be biased. Caveat emptor.

Niri recently improved it's integration with xwayland-satellite, so it's easier to run programs that don't support wayland now: https://github.com/YaLTeR/niri/wiki/Xwayland

I'm still running an older version (ain't broke, won't fix), but I keep getting recommended the newer versions for features. I'll check them out eventually.

can you paste a link?

I'm away from the computer at the moment, but I believe I'm on 0.1.3 [0].

Noting the release notes, it does have many animations already enabled (but I have some or all of them disabled through config).

I'm not recommending anyone run this in favor of newer versions, but it's working for me.

[0] https://github.com/YaLTeR/niri/releases/tag/v0.1.3

What does xwayland-satellite do that normal xwayland doesn't ?

This is addressed on the linked page.

Quote:

We're using xwayland-satellite rather than Xwayland directly because X11 is very cursed. xwayland-satellite takes on the bulk of the work dealing with the X11 peculiarities from us, giving niri normal Wayland windows to manage.

xwayland-satellite works well with most applications: Steam, games, Discord, even more exotic things like Ardour with wine Windows VST plugins. However, X11 apps that want to position windows or bars at specific screen coordinates won't behave correctly and will need a nested compositor to run. See sections below for how to do that.

Kind of interesting about the X11 position issue, since that is exactly the issue that I have with Hyprland

For me, the appeal of i3/sway's model is that by having a desktop per topic (eg, one for browser, one for code, one for slack, etc) I can instantly jump to the topic I need with a single key press. The desktops I assign never change, so it's always Super+1 for my browser and Super+4 for Slack. It's all muscle memory, and I could do it in my sleep. When I jump to that desktop, everything is open and tiled. This was a revelation to me coming from MacOS, where I was constantly hunting for windows with Cmd+Tab or squinting at thumbnails in Mission Control. So I'm surprised to hear that you prefer Niri's scroll model, which to me sounds like hunting for windows all over again.

I don't think of the things you listed as "topics". Browser, code, slack, etc.. seem more like tasks or activities to me.

I used to use i3 on a 49" super ultrawide monitor (32:9) and when I did each desktop was truly a topic, with a deep arrangement of windows on it and tabs to switch different areas over to different tasks.

My primary interest in tiling window management is being able to see all of the things that I need to see at once, at once. For me, it's all about context-- placing related windows next to one another. It seems like for others it's about being able to switch between a limited set of fullscreen windows quickly.

I like that Niri gives me a flexible way to divide my workspaces by topic without the windows stealing screen-space from each other. It doesn't feel much like hunting for windows, it feels like... a materialized view of alt+tab. Maybe I have a browser to the right of my editor and a terminal to the left. I can quickly shuffle back and forth between being able to edit while also seeing one or the other.

I even have this binding to cycle the columns to the right of the active window:

    Mod+Tab hotkey-overlay-title="Cycle windows to the right" { 
      spawn "fish" "-c" "niri msg action focus-column-right; niri msg action move-column-to-last; niri msg action focus-window-previous"; 
    }

Niri has named workspaces, each of which has a scrolling model. So you can achieve something very very close to what you want.

Not OP, but I typically only have 1–2 windows per workspace. I use tabs in both browser and terminal (eg via tmux). So it seems like niri's scrolling capabilities wouldn't bring much to my use case.

Yes same here but with i3, I ran it for over 10 years but niri was just an instant 'aha' moment for me.

I will say, recent builds have a 'mini map' sort of zoom-out feature that I quite like - my one critique of niri was that I would sometimes get 'lost'.

I drew that once in a github issue and next thing I knew it was there! https://github.com/YaLTeR/niri/discussions/352#discussioncom...

One of the advantages of tilling wm are that every window that is run, is visible too. Nothing invisible exists.

But in this "endless horizontal tilling" scheme, the above principle would no longer hold, right?

That typically isn't true in practice right? It's fairly common to have multiple "desktops" when using a tiling WM.

Yes, still on each workspace, everything is visible on i3. I wonder how scroll to the right differs from i3's tabbed panes.

I might give Niri a shot at some point, but yes, this is my thought too: this is more or less the same as having multiple tabbed panes, which enables the grouping GP refers to.

I was running i3 and sway foe years and tabbed tiles never really clicked for me the same way scrolling did. The first time I used a scrolling WM (I tried on of the plugins for sway or hyprland IIRC) it was an immediate revelation. However the sway/hyprland version were always a bit quirky, while niri "just works".

For those on older niri versions I have to say the "zoom out" overview feature is definitely worth the upgrade. As another poster said it really fixes the one issue on scrolling/ tiling wms, which is getting lost.

Newly started applications receive focus, so they're visible by default. They are inserted right of the current view, so recovering the previous active pane is consistent ("left pane" keybinding, or the appropriate gesture).

Things on other desktops are invisible in every WM.

The only difference with niri is the possibility for things to be left or right of the current window. Overview helps with that, but I know what I expect to be on a specific desktop (it's related to the topic) and seldom need it.

Like imagine editor is on ws2, you open a terminal to /tmp/ to check something quick, it scrolls to the right, then jump to ws3 for your file manager and other stuff and go back to your editor.

Now you want to access that terminal on /tmp/ again. Where was it?

In i3, I just spam-switch workspaces in this case, but at least I can find them. With scrollable wms, every ws can potentially hold that target app.

It's right of your editor, where it started.

If you have (having had "Editor" focused, and just opened "TermT"):

  Editor | (TermT) | Term | Browser
  (FM) | Term | Browser | etc.
(where pipe delimits a pane and parens are the active pane), if you go "next desktop" from "TermT" (the terminal at /tmp), that moves you down the stack of desktops. Moving up the stack of desktops returns with focus on "TermT". You'd then go "left pane" from "TermT" to get back to the editor.

The answer (for me) is to think of desktops as topics. The terminal on /tmp is with the things that prompted its creation. If I needed to check some log output, for example, it's with the project that made that log output.

Edit: Note that there's nothing keeping you from stacking those terms if you like, i.e., the appropriate keybinding goes from the previous to

  Editor | (TermT), Term | Browser
  (FM) | Term | Browser | etc.
where the terms stack vertically in the ribbon of the desktop.

I think they aren't referring to "where does it go?" and more being forgetful.

If you have something that would be reasonable to open on any workspace because it's ephemeral (they used a tmp terminal as an example), and you open it, navigate away from it, and then switch workspaces a few time, and then get pulled into a meeting or go to lunch, and come back, switch workspaces a few more times...

"Where did I leave that terminal, I dont remember where I was when I opened it."

In i3wm/sway etc, you can cycle all your workspaces and eventually one of them will have it visible. On Niri, as you cycle through all your workspaces you may never see it because you don't see all the windows in a workspace, unless you scroll through the workspace panes as you cycle workspaces.

It's not a problem necessarily, but it is something to consider. It sounds like this doesn't affect your workflow, but it might affect others.

It has overview. You can see all windows and workspaces in a scaled out view of your preference.

Fair enough. "Overview" [0] presumably solves this, though.

[0] https://github.com/YaLTeR/niri/wiki/Overview

That's true, you do end up with some windows hidden or partially visible. Niri is still tiling, though, so with proper management you can avoid making too much use of the infinite strip (though that would defeat the purpose of niri).

This seems like a good place to note the "center window" keybinding for windows that don't fit well in the screen (e.g., 2/3 wide pane next to 2/3 wide pane, or 1/3 pane on the right end of the stack next to a full-screen pane).

Vastly preferable to having to look at the edge of the screen.

Tiling window managers have tabs, so not all windows are visible.

You can see window titles on the tabs on the tab bar, but you can’t even see the title of windows which are in a split container of a background tab.

Tabs, and workspaces.

No, because every tiling WM has multiple workspaces.

But yes, that wouldn't be true, though focus moves to fresh windows so it's not an issue.

The only thing I feel like is missing from niri is a scratch layer. There are some apps that just don’t need to be tiled and it’s nice to have access to them immediately no matter “where” you are. Perfect example is matrix client. If the wife texts me I want to become able to pop that sucker up immediately and reply, not find the “matrix client workspace”. Plus it’s tiny and doesn’t need to be tiled. Same with media players.

Paperwm on gnome has this.

Would this scratch your itch? https://github.com/probeldev/niri-float-sticky

I didn’t try it myself though. I found it while scrolling https://github.com/Vortriz/awesome-niri

Dang that’s a nice list

Yeah, I have been wanting this. The way it works on Sway is "okay", but it would be nice to have a floating workspace that can be shown or hidden on top of whatever your active workspace is. The workaround most people are using seems to be a named workspace for scratch.

In my case I've found niri's workflow quite nice for these scratch windows, since every new window opens to the immediate left of the currently focused window, and doesn't affect the size or tiling of any other windows, they're just shifted to the right.

That only works for windows that you would be opening and closing, not persistent ones like chat apps or music players?

Many of those apps minimise when closed and reopen when calling, so often it is not really an issue (although it's sometimes annoying that you have to specifically tell the apps to exit when you do want to close).

I put those on the top or bottom desktop, but you could create a named workspace (scratch) and set up a keybinding to navigate to it.

Named workspaces bound to specific key combos does that.

I've been using i3 for 7 years now, and my immediate response to the scrolling thing was "why?" and after reading your comment, I'm still trying to understand. As one would expect for any tiling wm, the screenshots only show how pretty it can be, and don't really illustrate how it helps with productivity.

Would you mind going into more detail on what actually happens when you move horizontally? What happens when you have a fullscreen editor, then slide over to a half-screen browser? Do you only see half the editor, or does the editor get squished?

One thing I desperately want is a tiling wm that is also a browser. Like if surf ran a practical engine and was more deeply integrated into dmenu.

I was using i3/sway for years previously as well (and some awesome, qtile before that). The big difference is window size.

Generally I believe most people like to order their workspacesroughly by topic, e.g. all work related Windows on one, browser or on another, some also do all terminals on one... Now with sway/i3 I often found myself in the situation where I was e.g. on the "browser" desktop and you read something you quickly want to try in, e.g. ipython, or you are working on a latex document and want to briefly open a PDF. In i3 that would reduce the size of your original window, so you end up switching to a workspace (or you manually switch to tabbed tiling) for me the mental overhead was significantly higher and I was ending up creating more and more workspaces just to hold temporary terminals.

This is actually related to why I switched to i3 in the first place, I just felt vertical tiling is the only tiling that makes sense in 95% of the cases and that just worked best in i3. But that comes at the cost that you are limited to only 3-4 tiles per workspace (depending on screensize) now in niri I have infinite theoretically. Which means I spend less mental overhead when I want to open another window (which is really thebgoal of tiling wms in my opinion, reduce thinking spend on window management)

Thank you for the explanation! Between your explanation and a Youtube video I found of someone using it, I think have a grip on the "why" now. Interestingly, it seems like I might use i3 a little differently than you did. A single working context for me can span many desktops, and I just work in a way that keeps my number of concurrent working contexts low. I only ever have 1-2 programs on any given desktop, and even 2 is unusual. I keep every window in tabbed mode. When I need a scratch "thing" (nautilus, terminal, localc, whatever) it opens as a new tab. If I need it side-by-side with that desktop's primary window, I pop it out using mod4+shift+left/right. This accomplishes a similar thing to that Niri is getting you, just with different ergonomics. It probably helps that I have good habits around closing unused tabs / programs.

Yes it seems like you're using i3 quite differently. I agree that if you good discipline about opening and closing windows in the right workspace/tile i3 can give you a more structured layout. I just found for myself even if I tried I could not keep the discipline up (I doesn't help that I often work on several things at the same time).

I think that's the beauty of tiling WMs (and I consider scrolling WMs a subset), you can really adjust them to suit your work flow even if work flows might be very different. In contrast stacking WMs seem to be more a lowest common denominator type thing. They work with every workflow, but suboptimal.

I think my i3 "style" came from using a 12-inch thinkpad for many years. The small screen size and low resolution force you to work in certain ways. And if I had left 100 Firefox tabs open on that machine's second-gen mobile i5, I think it would have melted straight through the desk.

Re. pane size, it's normal tiling behavior. Panes can be take the full screen or some percentage (I like 1/2, 2/3, and 1/3). If the widths add to 1, both panes fill the screen.

If the widths don't add to 1, there are two possible behaviors (configurable). Either the newly focused pane adheres to the size of the screen (e.g., scroll right from the full screen editor and the half-screen browser is on the right border with half the editor visible), or the newly focused pane centers on the screen. I prefer the first behavior, but I make significant use of the "center pane" keybinding.

The Video Demo section in the README gives a pretty good demonstration of this behavior in the first 10-15 seconds.

Edit: To add to this thought and address some comments elsewhere about losing windows, I use "struts", which show P pixels of the panes to the left and right (when they exist) of the current view as a visual aid/reminder of where I am in the ribbon. These reduce the size of the tiled section of the screen and the calculation of pane size accordingly.

The WM has no job being the browser, but yes we should be able to run firefox without tabs like it's surf (and stop doing part of the WM's job). But you cannot practically do that.

> yes we should be able to run firefox without tabs like it's surf

Can't you? You used to be able to show the tab bar only when there was more than one tab; I guess that has disappeared?

You can do this: Put this code into your userChrome.css file:

#tabbrowser-tabs .tabbrowser-tab:only-of-type, #tabbrowser-tabs .tabbrowser-tab:only-of-type + #tabbrowser-arrowscrollbox-periphery { display: none !important; }

#tabbrowser-tabs, #tabbrowser-arrowscrollbox { min-height: 0 !important; }

Zen browser (which is derived from Firefox) does a really good job of making this the default (at the expense of mainly supporting vertical tab lists, which I've come to love).

just open new windows instead of tabs. Or am I missing something?

NixOS will get you there (or anywhere, to any version, of any thing, and/or back again) just by pinning any conceivable package (and it has more than any other Linux distro) to a particular nixpkgs hash.

I thought of this because it sounds like one of the reasons you're not upgrading it is fearing the risk of it fucking everything up and it being a pain to roll back (your "it ain't broke, so why fix it?" is a hallmark of that mentality). Well...

I will never use another Linux distro for this specific reason. NixOS is the complete freedom to dip in, dip out, roll back on problems, try new things out, etc. The freedom to experiment, try it, back out if there's any issue... but with seatbelts, thanks to the declarative nature of everything (as well as being able to pick previous "instances" on boot).

Afraid of Nix (the language)? LLM's make that trivial these days. For example, I just did something like this today: "Instead of using the one in nixpkgs, whose build has issues on my hardware, set up a derivation that uses its git repo and compiles that instead." A minute later, boom. Declarative working glory, forever.

What LLM(s) do you use or recommend for nix?

I've been running Xmonad for about 16 years and, having read the description and watched the video think I will keep on doing so. It looks to me like the cognitive load of the horizontally scrolling strip is higher than that of the paged approach used by e.g. Xmonad just like it is a lot harder to locate a specific section in a vertically scrolling unpaged ream of text than in a paged book. Especially on pages with many windows - 10 terminals on page 1 is more or less standard, 2 large ones stacked in the middle flanked by 4 smaller ones on each side - I keep track of which terminal goes where based on (among others) location. This works because all 10 of them are visible at the same time, it would not work if the display only shows one or two of them at a time. Am I missing something or is this WM/compositor more suitable to smaller displays which can not show all that many windows at the same time?

Of course I also use X11 so this thing would not work for me anyway.

> Am I missing something or is this WM/compositor more suitable to smaller displays which can not show all that many windows at the same time?

IMO smaller screens are where it shines, but you can also vertically stack within a column in Niri for similar density compared to tiling if you want.

> I keep track of which terminal goes where based on (among others) location.

I think this is a pretty nice benefit of Niri actually, having a second dimension to work with makes it much easier for me to keep track of windows because I can reduce the total number of workspaces and instead rely in part of relative location to other windows without being forced to fit all of them completely on screen. When I don't need my full screen real estate I often set up splits so that a little bit of the offscreen window is still visible and it makes it effortless to remember whats there.

Well it does look beautiful but I don't think I can go back to anything that's un-paged neither, after 17 years of dwm. Also, just watched a bit of an XMonad demo which reminded me how much I love the simplicity of dwm's tiling workflow based on having a master window per page (dwm's tag) because it completely removed the burden of window management for me with barely any configuration, I wonder how I'd do without it ... Probably going to try XMonad just to feel the difference, maybe I'll like it.

What do you mean by un-paged? I just looked at dwm and I don't see that it has anything that other tiling wms don't have. Xmonad, i3, sway... all have workspaces/tags.

Niri also has named workspaces, but when I switched to niri, I realised I only want named workspaces for very few things everything else is just temporary.

Zoom works, it's just janky.