I have looked around online and noticed a lot of users that moved to Niri come from KDE, or were using Dolphin on their previous WM/DE and want to use it on Niri. The problem is that unlike Nautilus, the Dolphin experience on Niri is not out of the box, it has a lot of issues. 90% of the time you open Dolphin the first time it doesn't work properly and it looks horrible. So I try to write this to stealgather all the fixes that I have found and turn it into a guide for newcomers to make Dolphin functions as close as it was on KDE.
This guide focuses on Vanilla Niri. I personally don't use any plugin or theming shell so I don't know exactly how they work.
At the time I'm writing this I'm thinking of upload it into a gist or something at some point, to make it easier to update things and to access/download. Edit: gist
You should read the Niri wiki before this.
Is to simply make Dolphin, KDE file picker and KDE theming kinda work in Niri. The setup covers:
- Thumbnails supports
- Environment configuration
- Dolphin losing default applications
- KDE file picker as the default
- Force KDE file picker on Firefox instead of the GTK one
- Optional packages
- Theming on Dolphin & KDE file picker
Bonus:
- File pickers appears too big/fullscreen
These are the packages that SHOULD be installed:
+ dolphin
+ systemsettings
+ xdg-desktop-portal-kde
+ ffmpegthumbnailer
+ ffmpegthumbsNote:
-
systemsettingsis the preferable way to change icons, themes and fonts on KDE that you can still use on Niri. It also let you customize other things that is not possible on alternatives likeqt6ct. -
xdg-desktop-portal-kdecomes with a bunch of depencencies but they are needed to replace the QT/GTK file picker with the KDE one. -
ffmpegthumbnailerandffmpegthumbsprovide thumbnails for images and videos on Dolphin/KDE file picker.
If you still want to use screen sharing/recording then DO NOT remove
xdg-desktop-portal-gnomeandxdg-desktop-portal-gtk. Unless you did something really wrong there is no problem using them along sidexdg-desktop-portal-kde.
~/.config/environment.d/
├── 01-xdg-base.conf
├── 10-kde-on-niri.conf
├── 80-gtk-no-btn.conf
└── 99-electron.confOnly 01-xdg-base.conf and 10-kde-on-niri.conf are really needed. The others are optional. I just want to show an example how I structure the files for easier to overview or change certain variables you want.
-
01-xdg-base.confXDG_CONFIG_HOME=/home/<USER>/.config XDG_DATA_HOME=/home/<USER>/.local/share XDG_CACHE_HOME=/home/<USER>/.cache XDG_STATE_HOME=/home/<USER>/.local/state # REQUIRED: exposed native and Flatpak apps the same way KDE did XDG_DATA_DIRS=/home/<USER>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share -
10-kde-on-niri.confQT_QPA_PLATFORM=wayland # REQUIRED: make sure portal uses KDE Qt platform theme QT_QPA_PLATFORMTHEME=kde QT_QPA_PLATFORMTHEME_QT6=kde # REQUIRED: helps fixing Dolphin default applications issue XDG_MENU_PREFIX=plasma- QT_AUTO_SCREEN_SCALE_FACTOR=1 QT_ENABLE_HIGHDPI_SCALING=1 QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor -
80-gtk-no-btn.confGTK_DECORATION_LAYOUT= -
99-electron.confELECTRON_OZONE_PLATFORM_HINT=auto
Remember to run:
$ systemctl --user daemon-reexecand then logout/login to apply.
When you open for example Firefox or a flatpak application, it will activate the portal, in this case xdg-desktop-portal-kde. I believe it only inherits environment variables from systemd --user right after login.
Because niri-session starts after that, puting those variables in Niri config.kdl will not work as the portal cannot see it. So KDE apps spawned from these applications will still appear unthemed.
I think the direct cause comes from installing/removing packages and flatpak. If you:
-
Have exposed native & Flatpak paths and set
XDG_MENU_PREFIX=plasma-like in the above. -
Running once:
$ kbuildsycoca6 --noincremental
-
Auto start
kded6spawn-at-startup "kded6"
The problem will likely not happen again.
Edit ~/.config/xdg-desktop-portal/niri-portals.conf, make sure the default is gnome.
[preferred]
default=gnome;
org.freedesktop.impl.portal.FileChooser=kde;
You need to make KDE file picker the default one first.
Then on Firefox, go to about:config and set
widget.use-xdg-desktop-portal.file-picker = 1These are not necessarily required or anything but they (could) provide a better experience for a Niri + Dolphin + KDE portal setup:
-
kde-gtk-configto sync KDE settings to GTK apps. I'm not sure it will work 100% of the time, so you probably need the next one. -
nwg-lookis a GUI option to change icons, themes and fonts on GTK apps. -
breezeis a universal theme so it's a good way to check if everything works. These are the ones to install:breezebreeze-gtkbreeze-icons(flatpak)org.gtk.Gtk3theme.Breeze
-
arkto open and manage archives, is integrated into Dolphin context menu. -
filelightto view disk usage, is integrated into Dolphin context menu. -
(AUR)qimgvis an order of magnitude faster than any distro targeted image viewer that is not borderline featureless. You can choose whatever version you want. Personally I recommend the qt6 version as I useqimgv-qt6-kde-git. -
(AUR)gdk-pixbuf2-noglycinas a workaround to GNOME upstream breaking changes on loading images involvingglycin. You can read about it here and here. -
(AUR)librsvg-noglycinsame reason as the above. Use this to replacelibrsvgif you have one on your system. -
(AUR)libadwaita-without-adwaita- As the pkgname already said.
- It also replaces
libadwaitaas dependency so you can freely removelibportalandnautilusif you want, while still keeping Portal GNOME intact.
Although the guide is primary for Dolphin & KDE file picker. You probably want other applications to look the same.
For example if you are using the default Breeze theme:
-
KDE apps
$ lookandfeeltool -a org.kde.breezedark.desktop
-
For GTK apps
$ gsettings set org.gnome.desktop.interface gtk-theme 'Breeze-Dark' $ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
Or just use ksettings and nwg-look.
-
For GTK, you can only hide the buttons on the title bar:
$ gsettings set org.gnome.desktop.wm.preferences button-layout "''"
-
For QT/KDE, if you set
prefer-no-csdin niri it will hide title bar entirely.
There are quite of them that support both KDE/QT and GTK, like the Arc themes, Breeze, Matcha, Catppuccin etc. I don't have the best one to recommend.
-
The theme should be available on Flathub for Flatpak GTK apps to use it. If the theme are not there settings
GTK_THEMEin Flatpak's environment variables might work for a theme that support KDE/GTK3. -
You may want to override these files to match custom fonts and settings on your system. Or easier use
com.github.tchx84.Flatseal.flatpak override --user --filesystem=xdg-config/gtk-3.0:ro flatpak override --user --filesystem=xdg-config/gtk-4.0:ro flatpak override --user --filesystem=~/.local/share/fonts:ro flatpak override --user --filesystem=~/.config/kdeglobals:ro
Now this's a tough one, here are the options I can think of:
-
Live with the default hardcoded by the developers and deal with it.
-
Stop using it and find the alternatives that your theme supports.
Personally I think this is the best option as I never like the gigantic title bars and elements. Plus the whole application looks completely out of place on everywhere else except Vanilla GNOME. In general I don't support this walled garden approach.
-
Replacing
libadwaitawithlibadwaita-without-adwaita. As long as your theme supports GTK4, this will pickup the setting inorg.gnome.desktop.interface.gtk-themeto load the GTK's palette into LibAdwaita. For example the Arc theme will work on LibAdwaita this way. There are still a few apps not looking correctly and this won't work on Flatpak LibAdwaita apps. -
Use some programs to theme it like gradience or rewaita.
Not "truly theming", but at least you can tune the color palette to match your GTK/QT theme. I'm not sure about
rewaitabut I still keep some Breeze and Gruvboxgtk.cssfiles generated fromgradience. Even though the project already archived long ago it still works, probably will keep working until the next breaking changes of LibAdwaita.There are some "theming engines" for QT+GTK+LibAdwaita out there. I could be wrong but most if not all of them are scripts that generated a material you palette from e.g pywal, then hacking the css file of Adw-GTK, while applying the same palette to Breeze. In a sense they are not much different than
gradience.There is a material you theming project but focus more on KDE kde-material-you-colors. I haven't had the time to look into this and test if it can work on Dolphin on Niri.
This could be fixed by a window rule, something like this:
window-rule {
# match title="^(Open|Choose|Save)(.*)$"
match app-id="(xdg-desktop-portal)(.*)"
match app-id="filepicker"
match app-id="org.freedesktop.impl.portal.desktop.kde"
default-column-width { proportion 0.5; }
default-window-height { proportion 0.8; }
open-floating true
open-fullscreen false
}There are some that are able to change the window's title immediately after spawning, so the window rules can't be applied. The biggest offender is Firefox.
It really depends on the application. For example with Firefox you can try this and see if it helps:
window-rule {
match app-id="firefox" title="- (.*) Mozilla Firefox"
default-column-width { proportion 0.5; }
default-window-height { proportion 0.6; }
open-fullscreen false
}
KDE file picker on zen-browser, niri
2026-01-14.22-01-58.mp4