在Niri中使用Dolphin文件管理器
我一直采用KDE与Niri共存的模式,为了不安装多余的软件,因此需要复用许多的KDE生态组件。Dolphin作为KDE的文件管理器,非常好用。
Dolphin在其他桌面环境的支持不是很好,需要手动进行许多配置。经过多次踩坑,发现必须问题还挺多,需要全部完成 xdg-open、D-Bus、xdg-desktop-portal 以及 kbuildsycoca6 的配置,才能确保Dolphin能够正常使用。
需要注意的是:测试时的电脑拥有KDE Plasma的完整环境,在此基础之上加装了niri,其他环境不保证能够成功。
确认环境与依赖
安装软件和依赖
在开始配置前,先确保系统满足基础条件,核心所需软件清单:
-
Niri:轻量窗口管理器,配置的核心环境
-
Dolphin:KDE旗下文件管理器,最终要统一的默认管理器
-
xdg-desktop-portal-kde:KDE版桌面门户后端,用于统一文件选择对话框风格(主流版本包括:xdg-desktop-portal-gtk,适配GTK/GNOME环境,提供GTK风格的对话框;xdg-desktop-portal-wlr,专为wlroots系列窗口管理器(如Sway、Niri)设计)
-
kbuildsycoca6:KDE缓存重建工具,确保KDE组件与Niri兼容
若电脑已安装完整KDE环境,上述软件(除Niri外)通常已默认自带,无需额外安装;若未安装完整KDE环境,可通过系统包管理器安装
sudo pacman -S dolphin xdg-desktop-portal-kde kbuildsycoca6
配置 niri 启动入口
安装完成后,需为 niri 配置启动入口,以便在登录界面选择 niri 桌面。Wayland 桌面通常通过 .desktop 文件定义启动入口,具体步骤如下:
首先创建启动配置文件,执行以下命令:
sudo nano /usr/share/wayland-sessions/niri.desktop
输入以下内容并保存:
[Desktop Entry]
Name=Niri + KDE
Comment=Wayland session with niri compositor and KDE Plasma
Exec=env KDE_SESSION_VERSION=6 KDE_FULL_SESSION=true niri
Type=Application
这样就可以在 SDDM 登录页面看到 Niri 的选项。
解决Dolphin在Niri上的问题
在Niri中适配Dolphin后,确保无论通过何种方式打开文件夹或文件选择器,都默认使用Dolphin,在niri上Dolphin会出现许多问题,目前所发现的几个问题:
-
右击文件时,无法正常显示“打开方式”选项,无法选择其他软件打开文件;
-
打开未知类型文件时,无法弹出软件选择窗口,无法自主选择打开工具;
-
即便弹出软件选择窗口,窗口内也无软件列表可供选择,仅能手动输入软件名打开;
-
谷歌浏览器等第三方应用调用“打开文件所在位置”功能时,无法正常触发Dolphin启动。
这些问题本质是Dolphin对非KDE桌面环境的适配不足,需针对性配置才能解决。
现在文件右击菜单无法使用打开方式:

设置MIME类型默认应用
这是控制xdg-open行为的核心方法,本质和Windows设置默认打开应用类似。xdg-open是Linux下用于打开文件、链接或文件夹的工具,会调用对应类型的默认应用。
通过xdg-mime命令,将文件夹(inode/directory)和file://协议链接(x-scheme-handler/file)关联到Dolphin(.desktop文件为org.kde.dolphin.desktop)。
# 设置默认文件夹管理器
xdg-mime default org.kde.dolphin.desktop inode/directory
# 验证配置是否生效,返回org.kde.dolphin.desktop则成功
xdg-mime query default inode/directory
设置file://链接默认打开方式会覆盖部分应用调用逻辑,例如谷歌浏览器打开文件所在位置,无法正常调用Dolphin,使用下方设置之后就恢复了正常。
但却出现了新的问题,所有的文件打开的时候都会通过Dolphin,包括desktop文件,因此并不建议使用这个方法。
xdg-mime default org.kde.dolphin.desktop x-scheme-handler/file
若不小心执行了上述命令或者出现了类似的问题,可通过以下指令重置MIME关联配置:
# 删除用户级MIME关联配置文件,重置默认关联
rm -f ~/.config/mimeapps.list
rm -f ~/.local/share/applications/mimeapps.list
rm -f ~/.local/share/applications/defaults.list
还有一种方法是使用D-bus:谷歌浏览器打开文件或文件夹时,会默认通过D-Bus调用文件管理器接口。
在控制台运行下方指令之后,可以实时监控会话中与org.freedesktop.FileManager1接口相关的D-Bus调用,比如触发浏览器“打开文件所在位置”操作时,终端会输出对应的调用信息,以此验证浏览器是否通过D-Bus与文件管理器通信。
dbus-monitor --session "type='method_call',interface='org.freedesktop.FileManager1'"
不过懒得折腾了,我发现了更好的办法,只需要修改niri的配置文件,而且还不会影响到其他用户、软件和桌面环境。
Dolphin在运行状态下,谷歌浏览器打开文件所在位置,正在启动的Dolphin会跳转到对应的文件夹,所以只需要保持Dolphin的运行就可以了,详细配置可以看下方的niri的配置。
弹窗问题
在Niri中使用Dolphin时,可能会遇到“打开文件无法弹出软件选择窗口”的情况。经测试,在终端手动运行 xdg-desktop-portal-kde 之后,这个问题就解决了。
因此必须确保 xdg-desktop-portal-kde 持续运行,后续会在Niri配置中设置其开机自启,避免每次手动启动。
运行 xdg-desktop-portal-kde 之后,双击文件可以调用打开方式的窗口,但是并没有任何软件:

软件列表显示问题
部分情况可能会遇到“打开文件虽能弹出选择窗口,但窗口内无软件列表,仅能通过输入框手动输入软件名打开”的情况。目测原因是缺少KDE菜单缓存支撑——窗口无法加载可选软件列表。执行kbuildsycoca6重建缓存,后续在Niri配置中也会将其设为开机自启,确保软件列表能正常显示。
可以先在终端运行 kbuildsycoca6,如果输出以下内容,原因是在这两个目录中没有找到对应的application.menu文件。
"applications.menu" not found in QList("/home/***/.config/menus", "/etc/xdg/menus")
然后去 /home/***/.config/menus 和 /etc/xdg/menus 这两个目录查看 application.menu 结尾的文件。
找到对应文件后,修改niri配置中的环境变量 XDG_MENU_PREFIX添加前缀。
比如在 /etc/xdg/menus 中找到的是 plasma-application.menu,那么 XDG_MENU_PREFIX 就设置为 plasma-。
修改Niri配置
编辑Niri配置文件,添加环境变量及必要的启动命令,目的是确保KDE组件(如Dolphin)能与Niri正常兼容,同时让相关配置在Niri启动时自动生效。
vim ~/.config/niri/config.kdl
在配置中添加以下内容并保存退出
# 在开头部分加上环境变量
environment {
# 指定当前桌面环境为niri
XDG_CURRENT_DESKTOP "niri"
# 指定会话桌面为kde
XDG_SESSION_DESKTOP "kde"
# 设定KDE菜单前缀 (我有完整的 kde 环境,可以直接使用 plasma 的 menu)
XDG_MENU_PREFIX "plasma-"
}
# 启动KDE版桌面门户后端,统一文件选择对话框风格
spawn-at-startup "xdg-desktop-portal-kde"
# 重建KDE系统缓存
spawn-at-startup "kbuildsycoca6"
# 启动 dolphin 文件浏览器(守护进程模式)
spawn-sh-at-startup "dolphin --daemon"
XDG_CURRENT_DESKTOP "niri" 会影响菜单的样式,这是没有这个环境变量的,样式和 KDE 的一样:


这是加上 XDG_CURRENT_DESKTOP "niri" 的,样式和 KDE 的启动菜单一样:

配置验证
所有配置步骤完成后,注销当前用户并重新登录(部分环境变量需重启会话才能生效)。重新登录Niri后,可通过以下场景验证配置是否全部生效:
-
验证xdg-open行为:打开终端执行
xdg-open ~/Downloads,应自动启动Dolphin并打开下载文件夹; -
验证xdg-desktop-portal配置:打开Electron应用(如VS Code)或Flatpak应用,执行“打开文件”操作,弹出的文件选择对话框应是KDE风格(与Dolphin主题统一),而非GTK风格或默认简易风格;
-
验证环境变量与缓存:打开Dolphin,分别双击文本、图片及未知类型文件(未知文件弹出选择软件窗口),或右击文件选择“打开为”并选择对应软件,若均能正常调用对应的软件或打开窗口显示,且窗口内可以看到菜单或者软件列表,则说明环境变量配置及kbuildsycoca6缓存重建生效。
如果上述3个验证场景均正常,说明配置成功;若是某一场景失效,需重新检查对应步骤的配置文件路径或命令是否正确。
重要注意事项: 启用xdg-desktop-portal-kde后,可能出现录屏异常(如OBS黑屏、无法选录制源)。核心原因是该KDE门户后端与基于wlroots的Niri在录屏协议上存在适配问题,且其Wayland环境下的录屏功能依赖PipeWire服务配置。