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.
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.
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.
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";
}
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'.
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.
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.
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)
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.
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.
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.
"Normal" tiling WMs / compositors just don't work for me, but the tiling model does. Before niri, I used PaperWM and GNOME -- but a GNOME extension can only do so much. I wish the folks doing COSMIC would add scrollable tiling, but unless/until they do I'll probably stick with niri.
I wouldn't be surprised if the COSMIC folks add it after the 1.0 release. There's been a lot of feature requests for it. In the mean time, a System76 employee created this unofficial extension to let you use other compositors within COSMIC, including Niri.
I also switched from PaperWM to niri, and I was reluctant to do it, because I really liked not having to configure several different little apps to get a working desktop environment. GNOME comes out of the box with an app launcher, a basic configuration editor, a screen locker, widgets for controlling audio and network, etc. But ultimately, PaperWM was too quirky. For example, sometimes PaperWM and an app would disagree about what size the app's window should be, and the window would resize itself repeatedly. The vertical sizing never worked very well either.
I'm in a similar situation; I think QuickShell [1] could be a compelling option, particularly premade configs for it like DankMaterialShell [2] (which is intended for Niri).
Niri is currently being "hugged to death", if you want to contribute: Donate to Ivan or review others PRs before making your own, the project has no commercial backing and he's "overloaded" by the projects recent success.
I've been using it for years now and it's obvious that Smithay and Niri are high-quality projects, I haven't had any issues other than missing features (more of which has become available over time).
How much does random people reviewing other people's PRs help in practice?
As a maintainer I'd still want to review PRs myself before merging, no matter how many random people did it before me.
As a contributor, I'd hate for a random with shallow understanding of the problem/project to come in and tell me I had to change stuff or say my PR's no good, in the chance that the maintainer is easily influenced by strong internet opinions.
Drive-by contributions of all kinds suck for the most part, don't contribute if you're not going to do it properly. At some point there's got to be more than one person able to review PRs (if the project scope mandates it).
Linus Torvalds doesn't review all changes he merges, how do you become a comaintainer if not assisting with maintenance?
If you can't review, don't make a PR (or something).
I second this, if you are daily niri user, show your appreciation, I already did! Here's my personal setup, hope it inspires someone to try it https://github.com/knoopx/nix
I don't think its for everyone, the paper metaphor either works for you or it doesn't.
That said, the other big benefit for me is it breaks a lot less often than hyprland and its ecosystem seems to (and I don't just mean bugs here, I also mean things like config file format changes). And this isn't a slam on hyprland - I was only ever mildly annoyed by its breakage.
"written on rust" is one pro, the other is the native scrolling thing, I appreciate workspaces with a bit of leeway. If you're already on hyprland it'll be an easy switch
I'm basically fullscreen with everything all the time on macos, but not in the super-duper-fullscreen mode so cmd-tab/cmd-` works predictably. I want this on macos. I know I can't have it on macos. I also can't switch to Linux since macos is mandated by my employer.
Nothing really to take out of it except that I feel like I'm not alone feeling stuck, knowing there are better workflows and not being able to do anything about it.
If there is one thing about macOS that really sucks, it is the window management. I have been using it for three months now and still don't understand how to use it.
It is not that I am inexperienced (Windows 95/98/2k/XP/Vista/7/8/10/11, Linux with all kinds of Desktops over the years (KDE 2/3/4/5/6, Gnome 2/3, Sway, Unity, XFCE, Enlightenment, blackbox, ...)), or that I didn't try (searched, watched several YouTube tutorials). I also tried different options, such as disabling the entire "Displays have separate spaces" feature (it fixes some cases, but others worsen).
My verdict is simple: They would be better off just adopting the dumb Microsoft Windows 95 approach to window management.
And it isn't that I don't like the system overall. I have never had a laptop with such superb performance, and at the same time, it stays cool as ice and silent. I love the animated video backgrounds on the lock screen with the slowdown on login, and having Zsh as the default is also fun. But the window management...
This is my exact experience! I really tried for 6 months and I just couldn't avoid fumbling around. For example, the experience of going in/out of fullscreen is jarring.
What's funny is that when someone first learns about Alt+Tab it's like the best cheat-code for any desktop navigation, but after switching to Niri, Alt+Tab seems like a silly way to layout your windows.
I've been working on porting komorebi to macOS[1] over the past month and the scrolling layout[2] works pretty well
It (the scrolling layout) is not exactly the same as Niri because the implementation is based on my personal preferences, but it does what it's supposed to on both platforms
> I know I can't have it on macos. I also can't switch to Linux since macos is mandated by my employer.
I’ve had two employers with dumb rules like this and I just worked on a Linux VM running fullscreen on all monitors. It was technically macOS, so IT didn’t have any issues, and it still ran all the security stuff that my employer wanted. At one job, my manager even provisioned a VMWare license for this.
Hammerspoon is quite easy to use, so attempting to cobble together your own thing (that does exactly what you want) might also be feasible. The documentation is decent and the iteration time is short.
It took me about 30 minutes to replicate some Windows/AutoHotKey crap that I wrote myself and have been using for years, and it wasn't painful.
Seconding this, I've used alternatives like Amethyst, and I can't disable S.I.P for yabai, but Aerospace fills in that missing aspect from Linux when I am in want of it.
I love the full-fullscreen mode for things like VSCode and FreeCAD on my 13" MBP. Never have a real issue with alt-tab though I must say I do end up paying attention to it more when I am switching between three windows and not in a cyle.
I have tried to get this in KDE Plasma 6 (with a global menu bar) and you just can't quite get there, so you have to settle for maximised but not full-screen apps, which is annoying.
I understand the difference and the architectural history that is that "full-screen" on X/Wayland is essentially a kiosk/don't-interrupt-my-game mode, whereas on the Mac it is chromeless windows on a virtual desktop that you can't get stuck in if you forget the restore keystroke.
I use Yabai on Mac for a WM - it works great with my big screen, but I haven't figured out a good workflow for when I need to use just the laptop, then it becomes a bunch of spaces with one or two windows in each.
Try flashspace. It's a perfect solution when running apps full screen.
You just bind your workspaces to keys and they switch instantly. Without any animations.
I'm pretty much the same fwiw
I currently use stage manager and double click the top bar of the window to maximize (that's different than the green button)
I hate that I have to hold option everytime I maximise a window. All I want is to change the default to stretch windows and not use the fullscreen mode at all because of the other weirdness it brings.
Just switch to Linux ... In Gnome just hit Windows+Right or Windows+Left it does exactly what you want. Install some Gnome plugins if you want 2x2 or 3x2 or other custom tiling.
I genuinely don't get why so many devs use MacOS when Linux is already set up for devs, and the stuff you run in the cloud will also run locally with 1/100 the SSH keyboard latency.
One thing that was holding me back from trying Niri is its configuration was limited to 1 file with no way to override or include additional configs which is quite important IMO for having 1 main config that you slightly change on different devices if you want to make your dotfiles public. For example you can have gitignored "local" files on each device to handle overrides.
Yes, this feature had been in the works for quite a bit since it required non-trivial changes to do it "the right way". Very excited to see these changes merged finally!
Somebody sell me on these newfangled tiling WMs. I have been using basically the same xmonad configuration for 15+ years, pretty much updating it only on breaking or deprecated changes. What do all these new Wayland compositors have to offer except "tiling, but for wayland?"
Does Wayland actually work now? I've tried it every few years for over a decade now and every time I ran into showstopper bugs (usually on nvidia cards).
Nvidia + Arch + Gnome3 + Wayland user here. I've tried Wayland on/off for the last couple of years, and made the switch I think late last year sometimes once I stopped seeing very obvious bugs/issues. Just about everything works fine nowadays in my experience.
Mostly made the switch because Wayland seems to run a lot smoother and efficient, especially when it came to Firefox for some reason.
Be careful. There are still showstoppers in wayland implementations, if you do anything that isn't common for a Linux user. Example: I am still unable to change the orientation of my drawing tablet.
There are many like this. It mostly works, but it isn't as flawless as just using X11 (unless we are talking about displays and stuff).
Oh weird, I never had a problem like that with my drawing tablet, but then again I dumped Nvidia in 2011 when I switched to archlinux fulltime and had to fix my install twice because of the drivers not being compatible with the latest kernel.
What I still miss is stuff like browser docks in OBS and such things that just work in X but are being dragged on for multiple years to be supported on Wayland now (CEF thing though)
Every time I try it, I am really impressed with the smoothness! But every time, two issues come up, which most likely due to NVIDIA, which are complete showstopper.
1. After inactivity period, monitors turns off. When I resume, one monitor won't come back up. I have to deactivate it on control panel, and cancel to get it back. Doing it many times a day, is extremely annoying. This does not happen on two monitors.
2. Monitors won't turn off ... yeah, after inactivity period the monitor's blanks, but, briefly turns off, and then turns back on. And then never turns off. This mostly happens after playing games.
I think both of the issues are due to NVIDIA.
Otherwise, Wayland has become really solid.
Using i3 now, it's not much, it's boring, and that's a good thing.
I think "tried it on _what_?" is the question -- which distribution, etc.? I've been using Wayland on Fedora for years and don't have any complaints. My primary laptop/desktop has an Intel graphics chipset, but I've tested it on laptops w/NVIDIA and not had problems.
It's been a few years since I last looked at it, but I've tried daily running it probably 4 or 5 times over the last 15 years. Usually on Arch, but also some Debian/Ubuntu-based distros. It's fuzzy now but I've tried probably every NVIDIA GPU generation since the GTX 500 series.
I can't remember all the bugs, but I've definitely at least encountered all flavors of flickering bugs, stale updates, GPU crashes, failed copy and paste, failed screenshares, failed videoconferences...
From comments on this thread, it sounds like things have drastically improved and its probably time to take another look.
In the same boat with you. Not quite the same configuration (some version change issues, lost it once in an 'rm' accident that followed a symlink to / [I learned that day...] and had to start from scratch, rewrote for fun once), but my sole desktop from '09 to '23 when I switched to Niri. My reasoning here: https://news.ycombinator.com/item?id=45462034
This was on my Bonobo WS (PopOS) w/ 2x NVidia GTX 1080s, multiple screens (2 1080p, 1 4k at 2x scaling), etc. No issues other than app support.
Highly recommend trying it. Very low barrier to entry.
KDE, Gnome and others obviously do provide stacking windows, but you do get the impression that writing a stacking window manager/compositor is just extremely hard to do with Wayland. Someone is maintaining a list of compositors[1] and there do seem to be a number of stacking ones, they just don't really get much attention.
I just setup Asus Rog G14 with nvidia 3060, I was skeptical against Wayland but basically got it working straight away with only setting drm.modeset (thanks chatgpt?).
So two external monitors working, except if they are daisy chained I am logged out when (dis)connecting them. So I use one hdmi and one dp over usb-c and it works.
So, not 100% but works better than X for me. Still too recent to have seen all the edge cases though.
This is a scrolling WM (not tiling). I've been using it as my daily driver for over a year now, and it's awesome. I never liked tiling WMs because I do a lot of web work, and I often want a large code editor and a large browser window and a few terminals open. I don't like having stuff scrunched into a little rectangle, but I do like having all of that related stuff grouped in a single workspace. This works perfectly with Niri. I can keep my editor in the center, a peek of my browser to the right and a peek of my terminal to the left, and easily flip between them, resize, stack, etc.
I know it doesn't sound all that interesting, but once I used it for a while, I just couldn't go back.
I switched from i3 to Niri a couple weeks ago, and I've been super happy with it.
Niri feels like it lines up more naturally with the way I tend to use windows and workspaces. I'm working on one project per workspace, opening an occasional ephermeral terminal window or web browser to the right when I need to reference something or run a quick command. My other windows in the workspace aren't altered by these new ones, no reflow happens, and then I can close it when done.
My only problem with Niri is that now I really want an Ultrawide monitor.
I have a 49” monitor and tried Niri for a while. I had some issues regarding Wayland, I believe because of Nvidia and stopped using it. I could probably solve them, but I have been using X since years and I don’t feel switching right now.
Anyway, for that short amount of time I liked most of it on my ultrawide monitor. Except when you open just one application, it stays on the left-most part naturally and it honestly sucks to look at. I have no idea if I could modify the settings to launch apps with an offset and eventually occupy the complete screen estate. I‘m planning to build a new AMD machine and will try Wayland compositors again for a longer period of time. Niri is my first candidate.
I'd previously been giving Hyprland a try, but after lots of customization work, there were still a bunch of things I wasn't happy with and ended back on GNOME as a "just let me get work done" thing (I use multiple workspaces, have always have dozens or hundreds of browser windows open, depend on a bunch tray extensions). That being said, GNOME just updated versions and broke all my extensions again so I've decided to recommit to work on fixing anything that isn't working for my workflow and ditching GNOME forever (I was previously much happier on Openbox, but well, Wayland).
With this latest go I gave River, QTile, and Niri a try. After a bit of swapping back and forth, I've settled on Niri and am slowly adding functionality I'm missing.
- I like multiple dynamic workspaces (grouped by function) and don't see much point beyond a split or two so Niri worked pretty well, and I was able to largely config all the keyboard shortcuts to something that made sense to me
- I'm using waybar and swaync for my other DE bits
I've also been using long running Claude Code/Codex in a workspace to build a number of custom scripts:
- niri-workspaces - dynamically generate a workspace display on my waybar showing windows, activity
- niri-workspace-names - integrate w/ fuzzel to let me rename workpaces
- niri-alttab - getting app cycling working in a way that makes sense to me, this is a larger project probably if I want live thumbnails and the like
- niri-terminal-below - I often want to have a new vertical terminal split and it's a bit hacky but works (have to punch out a new terminal, then bring it below, and move back if on the right side)
I haven't gone through all the docs, done much looking around, but one nice thing with these new coding agents is that they can just go and do a passable job to tweak as I want.
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.
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:
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'.
But in this "endless horizontal tilling" scheme, the above principle would no longer hold, right?
Paperwm on gnome has this.
I didn’t try it myself though. I found it while scrolling https://github.com/Vortriz/awesome-niri
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.
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)
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.
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.
Of course I also use X11 so this thing would not work for me anyway.
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.
"Normal" tiling WMs / compositors just don't work for me, but the tiling model does. Before niri, I used PaperWM and GNOME -- but a GNOME extension can only do so much. I wish the folks doing COSMIC would add scrollable tiling, but unless/until they do I'll probably stick with niri.
https://github.com/Drakulix/cosmic-ext-extra-sessions
[1] https://quickshell.org/
[2] https://github.com/AvengeMedia/DankMaterialShell
I've been using it for years now and it's obvious that Smithay and Niri are high-quality projects, I haven't had any issues other than missing features (more of which has become available over time).
As a maintainer I'd still want to review PRs myself before merging, no matter how many random people did it before me.
As a contributor, I'd hate for a random with shallow understanding of the problem/project to come in and tell me I had to change stuff or say my PR's no good, in the chance that the maintainer is easily influenced by strong internet opinions.
Linus Torvalds doesn't review all changes he merges, how do you become a comaintainer if not assisting with maintenance?
If you can't review, don't make a PR (or something).
That said, the other big benefit for me is it breaks a lot less often than hyprland and its ecosystem seems to (and I don't just mean bugs here, I also mean things like config file format changes). And this isn't a slam on hyprland - I was only ever mildly annoyed by its breakage.
Nothing really to take out of it except that I feel like I'm not alone feeling stuck, knowing there are better workflows and not being able to do anything about it.
It is not that I am inexperienced (Windows 95/98/2k/XP/Vista/7/8/10/11, Linux with all kinds of Desktops over the years (KDE 2/3/4/5/6, Gnome 2/3, Sway, Unity, XFCE, Enlightenment, blackbox, ...)), or that I didn't try (searched, watched several YouTube tutorials). I also tried different options, such as disabling the entire "Displays have separate spaces" feature (it fixes some cases, but others worsen).
My verdict is simple: They would be better off just adopting the dumb Microsoft Windows 95 approach to window management.
And it isn't that I don't like the system overall. I have never had a laptop with such superb performance, and at the same time, it stays cool as ice and silent. I love the animated video backgrounds on the lock screen with the slowdown on login, and having Zsh as the default is also fun. But the window management...
What's funny is that when someone first learns about Alt+Tab it's like the best cheat-code for any desktop navigation, but after switching to Niri, Alt+Tab seems like a silly way to layout your windows.
It (the scrolling layout) is not exactly the same as Niri because the implementation is based on my personal preferences, but it does what it's supposed to on both platforms
[1]: https://youtu.be/u3eJcsa_MJk?si=jSbDsAdLWQu0k1lZ
[2]: https://youtu.be/b1yECfF7Qyg?si=VXMbQo0RqtdzuDjG
I’ve had two employers with dumb rules like this and I just worked on a Linux VM running fullscreen on all monitors. It was technically macOS, so IT didn’t have any issues, and it still ran all the security stuff that my employer wanted. At one job, my manager even provisioned a VMWare license for this.
[0] https://www.hammerspoon.org/ [1] https://github.com/mogenson/PaperWM.spoon
It took me about 30 minutes to replicate some Windows/AutoHotKey crap that I wrote myself and have been using for years, and it wasn't painful.
[0]: https://github.com/nikitabobko/AeroSpace
I have tried to get this in KDE Plasma 6 (with a global menu bar) and you just can't quite get there, so you have to settle for maximised but not full-screen apps, which is annoying.
I understand the difference and the architectural history that is that "full-screen" on X/Wayland is essentially a kiosk/don't-interrupt-my-game mode, whereas on the Mac it is chromeless windows on a virtual desktop that you can't get stuck in if you forget the restore keystroke.
But it frustrates me I can't get that.
I genuinely don't get why so many devs use MacOS when Linux is already set up for devs, and the stuff you run in the cloud will also run locally with 1/100 the SSH keyboard latency.
For me cmd+tab / cmd+` works brilianty - switching to last used app/window-of-the-app
Just the other day the author merged 2 PRs to handle both use cases https://github.com/YaLTeR/niri/pull/2482.
It's not in a release yet but hopefully soon.
Does Wayland actually work now? I've tried it every few years for over a decade now and every time I ran into showstopper bugs (usually on nvidia cards).
Mostly made the switch because Wayland seems to run a lot smoother and efficient, especially when it came to Firefox for some reason.
There are many like this. It mostly works, but it isn't as flawless as just using X11 (unless we are talking about displays and stuff).
Nvidia works since driver 570.
(Edit: grammar and Nvidia note)
What I still miss is stuff like browser docks in OBS and such things that just work in X but are being dragged on for multiple years to be supported on Wayland now (CEF thing though)
Every time I try it, I am really impressed with the smoothness! But every time, two issues come up, which most likely due to NVIDIA, which are complete showstopper.
1. After inactivity period, monitors turns off. When I resume, one monitor won't come back up. I have to deactivate it on control panel, and cancel to get it back. Doing it many times a day, is extremely annoying. This does not happen on two monitors.
2. Monitors won't turn off ... yeah, after inactivity period the monitor's blanks, but, briefly turns off, and then turns back on. And then never turns off. This mostly happens after playing games.
I think both of the issues are due to NVIDIA.
Otherwise, Wayland has become really solid.
Using i3 now, it's not much, it's boring, and that's a good thing.
I can't remember all the bugs, but I've definitely at least encountered all flavors of flickering bugs, stale updates, GPU crashes, failed copy and paste, failed screenshares, failed videoconferences...
From comments on this thread, it sounds like things have drastically improved and its probably time to take another look.
This was on my Bonobo WS (PopOS) w/ 2x NVidia GTX 1080s, multiple screens (2 1080p, 1 4k at 2x scaling), etc. No issues other than app support.
Highly recommend trying it. Very low barrier to entry.
1) https://www.gilesorr.com/wm/table.html
So two external monitors working, except if they are daisy chained I am logged out when (dis)connecting them. So I use one hdmi and one dp over usb-c and it works.
So, not 100% but works better than X for me. Still too recent to have seen all the edge cases though.
I know it doesn't sound all that interesting, but once I used it for a while, I just couldn't go back.
RTX 3090, Pop OS 24.04 (beta), 4K 43" Monitor,
Nvidia cards worked out the box with no problems
Niri feels like it lines up more naturally with the way I tend to use windows and workspaces. I'm working on one project per workspace, opening an occasional ephermeral terminal window or web browser to the right when I need to reference something or run a quick command. My other windows in the workspace aren't altered by these new ones, no reflow happens, and then I can close it when done.
My only problem with Niri is that now I really want an Ultrawide monitor.
Anyway, for that short amount of time I liked most of it on my ultrawide monitor. Except when you open just one application, it stays on the left-most part naturally and it honestly sucks to look at. I have no idea if I could modify the settings to launch apps with an offset and eventually occupy the complete screen estate. I‘m planning to build a new AMD machine and will try Wayland compositors again for a longer period of time. Niri is my first candidate.
With this latest go I gave River, QTile, and Niri a try. After a bit of swapping back and forth, I've settled on Niri and am slowly adding functionality I'm missing.
- I like multiple dynamic workspaces (grouped by function) and don't see much point beyond a split or two so Niri worked pretty well, and I was able to largely config all the keyboard shortcuts to something that made sense to me
- I'm using waybar and swaync for my other DE bits
I've also been using long running Claude Code/Codex in a workspace to build a number of custom scripts:
- niri-workspaces - dynamically generate a workspace display on my waybar showing windows, activity
- niri-workspace-names - integrate w/ fuzzel to let me rename workpaces
- niri-alttab - getting app cycling working in a way that makes sense to me, this is a larger project probably if I want live thumbnails and the like
- niri-terminal-below - I often want to have a new vertical terminal split and it's a bit hacky but works (have to punch out a new terminal, then bring it below, and move back if on the right side)
I haven't gone through all the docs, done much looking around, but one nice thing with these new coding agents is that they can just go and do a passable job to tweak as I want.