Niri & (Dank Material | noctalia | ... ) - General thread, questions, tips & tricks

Up so far, there is only sparse information available in terms of Niri and the Dank Material Shell.
I’m currently migrating to it, essentially only due to a video from @joekamprad which he posted here :

And I really have to admit - getting started with Niri and DMS hasn’t been that challenging. I’ve tried to get started with the NWGShell using SWAY before, but that was a pretty rough experience from my side with too many hurdles in the initial configuration.

For those not knowing : Niri does follows an different paradigm, with an emphasis on scrolling tiles.

I just wanted to kickstart a dedicated thread here, in which questions could be asked and also setups / plugins and general tips for Niri itself, as well as the available shells based upon it such as the DMS or other candidates such as noctalia.

Niri is my preferred compositor. I’ve been using it for a month already and haven’t had an issue with it.

I had experience with both most-known desktop shells and self-assembled desktop (waybar+rofi+dunst+swaylock).
It turned out while Waybar’n’Stuff make the experience kinda old-fashioned, traditional WM way and DMS transforms Niri into (almost) full desktop environment, Noctalia is a sweet middle-ground.
I’ve been using Noctalia v5 for already some time. Ditching Quickshell has been surprisingly good, shell is much lighter on resources, it is fairly stable and doesn’t change much of a workflow.

+1 Noctalia, but on MangoWM here. NWG was too gnomeish for me :smiley:

Hi!

I am using Noctalia V5 and I think it’s superb!

It’s still in beta stage but can be daily driven without problems.

Regards,

Isaac

Nice to see some replies, therefore there must be some interest :wink:

Anyway, I’m on DMS 1.5 and I’ve spend some effort to recreate my design of a 3 column layout that consists of 2 static floating columns on the left (2 rows) and the right (3 rows), with a part in the middle that is almost 1800 px wide. As I’m using an ultra wide monitor in 3440x1440px resolution, that’s quite convenient and the scrolling behavior of the windows in the middle column (e.g. browser, mail client or other applications) work like a charm.

The only issue is currently that some of the default keybinds are based upon english ISO keyboard layouts and certain key combinations are simply not feasible. That could be addressed by myself via software or by switching to an ISO keyboard.

Nevertheless, simply by calling dms ipc call keybinds toggle niri the current declared key combinations (within the ~/.config/niri/dms/binds.kdl) would be displayed immediately in an overlay. And that’s quite handy at the moment. But a total of 135 keybinds might be overwhelming for some.

I’m running Gnome and Niri on the same laptop as of 1 month ago. So working on my keybindings and learning the configuration file.

I started with Noctalia V4 and transition to V5 which works great with Niri, and one weird bug with Hypraland.

At the moment the little bit of grief are the way monitors are handled (e.g. I log out of Niri with computer docked and it suspends. It behaves as if it does not realize the external monitor has power).

If I define my monitors in Niri, some games in Steams buttons do not line up (e.g. World of Tanks Blitz). So I commented out my monitors and let it auto detect.

Bugs I am monitoring:

Tip:-
Niri + DMS

When you press Win+Shift+N opens a notepad on the right side of the screen. You custom config to expand it with your keyboard shortcut. Handy & Functional :slight_smile: Notepad window stays top on other windows. You can use it also as a standalone notes app

Search DNS Notes in Spotlight bar. You can get it :victory_hand:

Found from this yt vid

Regards,
Alchemist Crafted.

Just a small tip, instead of the regular keybind to show the hotkeys, which is just a selection of commonly used keybinds, at least in the case of DMS you could change or add a new keybind that would execute dms ipc call keybinds toggle niri which shows a comprehensive list of all keybinds in a new dialog window that would include a search function as well. And this list is based upon the actual keybinds that are specified on the system on the configuration level.

To map it to a key, simply add this line after the last entry inf front of the closing } of your binds.kdl that should reside within the path ~/.config/niri/dms

Mod+Shift+Q { spawn "dms" "ipc" "call" "keybinds" "toggle" "niri"; }

It’s also feasible to map shell scripts to a key, e.g. I’m using a systemd time to shutdown my machine daily at a specific time and with

Mod+XF86Launch5 repeat=false allow-inhibiting=false { spawn "sh" "-c" "shutdown-time"; }

A graphical dialog for the shell command would be created on the fly via zenity.
If you wonder about the XF86Launch5 that is just a function key.

If you’re not comfortable with editing the configuration files manually, the DMS settings do provide easy keyboard shortcut configuration options.

I am typically using ghostty terminal but I wanted to play around with wezterm. Seems like wezterm is not easy to integrate into niri.

I have a 2 column niri setup. So far I was not able to open a wezterm window so that it automatically fills a full column width, like any other app that I open. If I do not specify initial_cols in ~/.wezterm.lua the opening width is always initial_cols = 80, which is not a full column width. I could specify the initial_cols manually, but then the value is wrong on my second monitor. I need to have an automatism.

It seems wezterm had issues with niri in the past. Therefore there is a specific window rule in ~/.config/niri/config.kdl

window-rule {
    // This regular expression is intentionally made as specific as possible,
    // since this is the default config, and we want no false positives.
    // You can get away with just app-id="wezterm" if you want.
    match app-id=r#"^org\.wezfurlong\.wezterm$"#
    default-column-width { }
}

I found a suggestion to change the default-column-width to

default-column-width { proportion 0.5; }

But with that, the wezterm window is not showing up at all.

Any idea how to open a wezterm window maximized to column width?

There are a few bug reports on Github, referring to Wezterm not launching at all or randomly failing to launch on Wayland.
AFAIC the only way to make it work is to force XWayland in Wezterm’s config.


Just then, I would try checking app-id of Wezterm: niri msg windows to ensure it matches the value in Niri’s config.

That did the trick. Thank you.

With config.enable_wayland=false in the wezterm config and
default-column-width { proportion 0.5; } in the niri config, the wezterm window opens automatically in column width.

But this is really weird from wezterm point of view. I guess I will keep ghostty for the long term.

I couldn’t reproduce the issue. With an freshly installed wezterm out of the extra repository, without any configurations made at all, wezterm opens a new window in half the column width. Which actually doesn’t reflect the defaults within my single column design. My setup consists of permanently floating windows to the left and right of my screens middle section, I just tile / scroll the middle part of the workspace, which is almost 1900 in width. My default-column-width { proportion 1.0; }seems not to work properly in case of wezterm.

But as you were able to tackle this by disabling wayland within wezterms config file, I guess there is no need to tinker around with it.

I only can report that there aren’t any issues in relation to kitty. Everything works as it did under KDE Plasma, no need to reconfigure anything.

The only feature which I miss is the option to exclude specific windows from the window pager / Alt + Tab overview. That was feasible with the window rules of KDE Plasma. Where you also could exclude specific windows to show up in the overview. Or within the panels currently running apps. So I may need to file a feature request. But all in all, I’m pretty happy up so far. My specific use case of mixed static and scrolling window tiles has only been introduce with the 1.5 release of DMS, if I’m not mistaken. But it solid and is working better than it did on KDE Plasma.

But this is reproducing my initial issue. Your wezterm opens with width = only 1/2 column width. But it should open in column width as any other app window. wezterm under wayland always opens with initial_cols = 80 if you do not specify otherwise.

And when I set default-column-width { proportion 0.5; } in the niri conf, the wezterm window wont open at all.

I can’t tell which presets you’ve got enabled within the preset-column-widths of niri. But it should ship by default with 1/3, 1/2 and 2/3. I’ve changed mine to 1/2, 3/4 and 1. And with a default-column-width set to a proportion of 0.5 a wezterm window does show up, but only in the size that is identical to the initial_cols = 80 of characters per line of the terminal.

I gave dank linux a first try after having watched the video. It always looks so well designed when people are presenting their desktops. same for niri+dank. polished. simply goog looking.

so I gave it a try on a fresh endeavour/gnome.

that’s where inconsistency starts. the filemanager (nautilus) still looks libadwaita (gnomish) and just understands light/dark, but no touch of the accent color I choose in niri/dank. ghostty does not switch light/dark whenever i choose light/dark from top panel quick setting. same for firefox regarding color shades.

I end up in my standard apps looking like a “stranger in town”.

does it need more individual themeing? or better not start with gnome as desktop with all it’s default apps? better choose another basis (or none) with well picked standard apps for files, browsing, terminal, editing…

Do you have a good reading recommendation for that?

Otherwise it’s the most promising concept for me up to now, if one is willing to to switch over to a quick (floating?) tiling manager.

DankLinux has Matugen templates (Settings → Themes and Colors → Matugen Templates), which can apply your main theme to main other programs; not sure about GNOME, though - don’t use it. You can always install another file manager. I use Dolphin with Hyprland, then theme with QT 6 Settings.

I’m a little confused about your post. Which DE/WC did you try it in?
Gnome and libadwaita are notoriously anti-theming/ricing.

Installed fresh Endeavour with Gnome (as this is my current daily setup) to play around. May be a bad choice as libadwaita seems to be quite “resitant” to theming approaches.

So I might need to start from scratch to have a consistant look. Question is to install Endeavour without DE and just use the Dank installer with niri. then choose a more flexible filemanager (thunar - to stay with GTK; Dolphin? get Qt dependencies??). Choose kitty over ghostty?

Or start with another distro that already has a well chosen set of visually integrated apps?

Sorry for questions. I might check internet, but would rely more on your opinions and experiences :slight_smile:

Would really depend on how much time you want to invest and level of skill. While I am ok with understanding code or fragments of it I cannot write much and almost always have some sort of guide open so I can search and learn as I go and will google away to find more info and answrs as I need them.
This process is fun for me but for others it could be very frustrating.

TLDR - depends

Dms Theme Sync is included in the DMS plugin registry and would allow applying the different matugen themes for GTK, KDE & Qt Frontends and keep them in sync. It offers several approaches how the matugen theme would be enforced and I was able to achieve consistent themes relatively fast that way.