Niri Plus / Desktop guide

Files, default applications and removable media

Chrome and Dolphin make ordinary downloads, uploads and file operations feel natural alongside terminal work. These are the personal default-application roles; choose replacements where your workflow differs.

Content Application
Web links, HTML and PDF Chrome
Directories Dolphin
Images Gwenview
Audio and video mpv
Archives Ark
Plain text and code Neovim in Kitty

Merge default associations

The MIME example contains the selected [Default Applications] entries. In the main walkthrough, SOURCE names the verified example tree. Install the corresponding applications first. Chrome is chosen separately; its google-chrome.desktop identifier must exist on your machine. On Arch, the other applications and integration tools include:

sudo pacman -S --needed dolphin gwenview mpv ark kitty neovim xdg-utils udisks2

The Neovim desktop entry opens kitty -e nvim with the selected files. Inspect any existing entry before installing it. From the walkthrough, install only when that target is absent:

NIRI_NVIM_ENTRY="$HOME/.local/share/applications/nvim-terminal.desktop"
if [ -e "$NIRI_NVIM_ENTRY" ] || [ -L "$NIRI_NVIM_ENTRY" ]; then
  printf '%s\n' "Inspect existing entry: $NIRI_NVIM_ENTRY"
else
  install -Dm644 "$SOURCE/examples/files/nvim-terminal.desktop" "$NIRI_NVIM_ENTRY"
fi

After Chrome and the file applications are installed, apply the staged defaults with xdg-mime. This updates only the listed default MIME keys in the normal user database and retains unrelated associations. If you prefer other applications, edit the staged example or omit those rows before running it:

python3 - "$SOURCE/examples/files/mimeapps.list" <<'PY'
import configparser
import subprocess
import sys

defaults = configparser.ConfigParser(interpolation=None)
defaults.optionxform = str
if not defaults.read(sys.argv[1], encoding="utf-8"):
    raise SystemExit("could not read staged MIME example")
for mime_type, desktop_list in defaults["Default Applications"].items():
    desktop_id = desktop_list.split(";", 1)[0]
    if not desktop_id:
        raise SystemExit(f"no desktop ID for {mime_type}")
    subprocess.run(["xdg-mime", "default", desktop_id, mime_type], check=True)
PY

The script uses the example's first desktop ID for each type. It does not set browser download behavior or alter other MIME groups. Check the effective defaults without opening private content:

xdg-mime query default x-scheme-handler/https
xdg-mime query default application/pdf
xdg-mime query default inode/directory
xdg-mime query default image/png
xdg-mime query default text/plain

Desktop launchers, MIME associations and the browser's download preferences are separate settings. An application missing its desktop entry cannot serve as an effective default.

Browser and portal checks

The selected portal profile is GTK for file/access/settings/notification interfaces, WLR for whole-monitor screen sharing, and KWallet for secrets. Dolphin remains the file manager; choosing it does not require the KDE picker. Use the portal setup steps before checking browser dialogs. The portable portal example preserves your existing secret backend; the personal KWallet choice is recorded in the reference.

Download disposable PDF, image, video and archive samples, open them from Dolphin, and check Open with. Select a sample file through a browser upload dialog. If you use sharing, check a nonprivate monitor in a test call and verify that stopping sharing releases it. Individual-window sharing is outside this selected baseline.

Removable media

UDisks2 and polkit provide the native mounting/authorization path behind Dolphin. Install filesystem support for the media you actually use. UDisks2 may be D-Bus activated, so an idle/inactive service alone does not establish a fault. The UDisks project documents its storage service. Use a disposable owned drive to check mounting, a sample read/write and safe unmounting; existing disk formatting is not part of setup. The targeted development-copy check used a new 64 MiB ext4 volume labeled with serial NIRI_GUIDE_SCRATCH: the native polkit prompt allowed the ordinary user to mount it, a user-owned writable subdirectory passed a byte check, and the volume unmounted cleanly. This guest result does not qualify physical media or authorize formatting an existing drive.

Restore the captured MIME keys and desktop entry to undo your changes. Keep unrelated associations, storage contents and existing authorization settings.

Setup overview →Read on GitHub ↗