NixOS + Wayland users: what’s your current stack?

Hyprland / sway / Plasma?
kitty / alacritty / foot?
waybar / eww / ags?

I am new to ricing and nix both.
so can someone suggest me some good tools and setups to rice my setup for a cool and customized experience.

previously i was running niri + waybar + ghostty, but i have recently replaced waybar(and other components) with noctalia-shell - loving it :+1:

4 Likes

I’m currently using sway+alacritty+eww. You’ll get a pretty similar experience with most wlroots compositors, I use sway because the upstream is quite good at working with the wlroots ecosystem and advancing the standard (unsurprising, given they started it…).

Alacritty is my preference among TEs, I forget why. They’re all quite similar, but alacritty is attractively just-workey. I think there were benchmarks showing it dominates on input reactivity, and I was annoyed at kitty feeling kinda slow at the time?

I use eww, but its maintenance is shoddy and the widgets have too many limitations. It’s alright for simple use cases. I’d try ags, but instead I’ve started writing my own bar because I figure why have someone else write widgets for me, I’m a good enough programmer to handle a bit of graphics programming with good library support; it’s not like that’s far from using something like eww/ags with heavy script support.

As for other wlroots compositors, niri is also really cool, but I don’t like infinite scroll that much and they don’t integrate well with uwsm. Having non-systemd system management is just too annoying. I don’t touch Hyprland with a 5ft pole.

2 Likes

I use niri + alacritty + waybar.

Other notable apps include fuzzel (launcher), astroid (email), iwmenu (network), bzmenu (Bluetooth), and pwmenu (audio).

What do you mean by this? Niri includes the niri-session which launches it via systemd? Or does uwsm add on more features with systemd it does not jive with?

I am sure other terminals can do this: my one “just workey" experience with alacritty is being able to set the window class as a single argument when launching it. For example, when I compose an email with my email client, it spawns alacritty+neovim with a specific class which niri then configures to float in the center of the screen.

2 Likes

Yes, uwsm has features like launching your applications in systemd scopes that inherit from your WM session correctly, and placing them correctly in app.slice/background.slice/session.slice. This is nice, because technically that’s how the systemd user session is intended to be used - it’s just rarely done for historic reasons. To my knowledge not even GNOME/KDE manage this correctly.

It even integrates with fuzzel :slight_smile:

I’m sure these things are possible with niri, but uwsm makes this all really trivial.

2 Likes

Hyprland+waybar+Alacritty

Hyprland, because I haven’t found a better wayland compositor yet (would love to use qtile, but their wayland support is still iffy).

My waybar config is very bare-bones, but does 80% of what I need it to do.

Alacritty, because it just works™, sometimes Kitty, because it allows for more hacky scripting.

I also want to shout out Kando, which is very nice to use with a mouse.

Vicinae is a nice launcher with many (useful) features.

I am not using uwsm.

1 Like

ooh! scuse me, :sweat_smile: um, so when i did this thingie many months ago…

  programs.uwsm.enable = true;
  programs.uwsm.waylandCompositors.niri = {
    binPath = "/run/current-system/sw/bin/niri";
    comment = "Niri (UWSM)";
    extraArgs = [ "--session" ];
    prettyName = "Niri";
  };

…is a proper one, yeah? is this right? :nerd_face:

edit: this also works, but idk whats different?

  programs.uwsm.enable = true;
  programs.uwsm.waylandCompositors.niri = {
    binPath = "/run/current-system/sw/bin/niri-session";
    comment = "Niri (UWSM)";
    prettyName = "Niri";
  };

(choose only one or change comment!)

i was like “oh. it isnt even uwsm bruh”, which is something i heard is the “better wayland experience” or whatever, aaaand something that folks at hyprland already have with the option (programs.hyprland.withUWSM), which makes me wonder… uhm, why dont all wayland envos have this then..? or literally come preinstalled as a uwsm session, why not..?

anyhow, in niri’s case, it needed a bit of tinkering though (--session shenanigans)

edit: oh, btw. apparently there is also a niri-session binary, but i have no idea what is the difference between niri --session and that one… it looks like it manages environment variables better, but… its not uwsm???

were it not for extraArgs it would just kick me out or die after a few seconds, which is, uh, a bit sad for a wayland envo that is so anti-xorg… poor show, yknow what i mean..?

by the way, unrelated but… not sure if its my application launcher (kickoff which i prefer over tofi) or… but some (GUI) apps literally just refuse to launch (as in, it SEES them, but nothing happens when starting), so i have to run them via a terminal… any ideas..? not a biggie, just curious… maybe its the $PATH or sumlikedat

1 Like

Possibly! I’ve never looked at niri closely enough to know whether this does everything you need. It’s possible variables aren’t propagated correctly and such.

But yep, if I ended up trying niri that’s the route I’d take as well.

2 Likes

yeah, i have this on autolaunch in niri’s config.kdl

spawn-sh-at-startup "dbus-update-activation-environment --all --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_ID"

edit: apparently this already exists in niri-session!

…i am also using

  services.dbus.implementation = "broker"; # default="dbus"

…which i also heard that it is the “better dbus daemon” (performance and whatnot), which i believe is going to be the default pretty soon anyway..?

1 Like

That should be done with uwsm finalize instead

2 Likes

That shouldn’t be necessary as far as I under stand: systemctl import-environment without specifying desired variables is deprecated · Issue #254 · YaLTeR/niri · GitHub

1 Like

ive been building and running my new setup past 6 weeks now and it is getting good
hyprland, waybar, emacs doom running all as buffers. main workflow and everything is happening under emacs doom and then backup apps gui versions if needed. cli/tui/emacs is main way to use this is amazing setup afteer i got it running also using btrfs with sub volumes and lots of hardening

got this starter template from Joshua Blais setup and lots of work to get it running on my hardware all credits to Joshua for making this….

1 Like

sway + kitty + waybar + tofi here.

1 Like

oh, right… i actually saw that one previously, but i was quickly scrolling through though…

so, firstly, uwsm finalize says this:

Marking variables for later cleanup from systemd user manager on stop:
  DISPLAY
  WAYLAND_DISPLAY
Exporting variables to systemd user manager:
  DISPLAY (already set)
  WAYLAND_DISPLAY (already set)
Unit for wayland-wm@niri.service is already active, restricting notification access.
No status data could be sent: $NOTIFY_SOCKET was not set

so… all good, then? i mean, as far as the variables are concerned… xwayland-satellite works, everyhthing is alright it seems, uh, with or WITHOUT this, actually. so, do i put this on autolaunch, then or meh..?

…oh WOW. im not sure how or WHEN, but it also finally fixed my headache with the “session already active” thing when i logout and login back. previously i had to reboot EVERY TIME that happens, but now… wow. incredible.

anyway, secondly, i should have probably mentioned that im also using the "dbus-broker" implementation, that i corrected/edited above, yeah… not sure if it makes a difference though!

1 Like

Yeah, without uwsm finalize various things won’t be picked up. Check the uwsm readme for details, there’s a lot of nuance to this. There are probably still issues with your configuration, it’s quite hard to get right without reading that readme top-to-bottom.

3 Likes

KDE + Krohnkite

Always on monocle mode because I use NixOS on a laptop.

I only have 1 bar on top for the Icons-and-Text Task Manager on the left, and misc widgets on the right.

Nice setup :slight_smile: Do you use bamboo or unikey?

1 Like

Not yet still waiting for more to support them after that has arrived I will start to use

Thanks it has so much happening under the hood and now performance, hardening and optimising is done and made it more easier to build on other hardwares too, but still not easy install that I will someday try to get working, but not now. It has intel, and setup done and base hardening and optimising done and then just host overwrites and Nvidia stuff with lanzaboote so you have all set basically or should be, but haven’t had time to even test that features yet…

1 Like

Plasma 6 in the default configuration without any xorg-server on the system

1 Like

Currently using niri with niri-flake and DankMaterialShell, with Vicinae as my launcherI also plan to try Noctalia after its next major update.

1 Like

I’m currently using cosmic + alacritty. I’m really happy with cosmic!

1 Like