Files
fedora-niri-dms/README.md
T
2026-11-04 21:12:37 -07:00

4.5 KiB

fedora-niri-dms

An installer script that turns a minimal, terminal-only Fedora install into a complete niri + DankMaterialShell desktop, with the DMS login screen.

Quick start

  1. Install Fedora from the Everything netinstall ISO and choose Fedora Custom Operating System under Software Selection. Create a user with administrative privileges.
  2. Boot to the text login, sign in, and run:
curl -fsSL https://gitea.schantli.ca/jschantli/fedora-niri-dms/raw/branch/main/fedora-niri-dms-setup.sh -o setup.sh
bash setup.sh

Run it as your normal user, not root. It uses sudo when it needs to.

  1. Answer the optional questions at the start. The rest runs unattended.
  2. Reboot, pick the niri session at the login screen, and sign in.

Press Super+Shift+/ after logging in to see every keybind.

What it installs

Area Packages / changes
dnf Parallel downloads, dnf5-plugins, full system update
Repos RPM Fusion (free + non-free), Cisco OpenH264, avengemedia/dms COPR
Graphics Mesa + Vulkan, plus VA-API drivers for AMD, Intel or NVIDIA (auto-detected)
Codecs Full ffmpeg and the multimedia group
Audio PipeWire, WirePlumber, SOF firmware
Hardware Bluetooth, tuned-ppd power profiles, fwupd firmware updates
Desktop niri, DankMaterialShell, xwayland-satellite
niri config Waybar disabled (DMS is the bar), Super+T opens Ptyxis, Super+D opens the DMS launcher, Super+Alt+L locks with DMS
Removed Waybar, mako, fuzzel, swaybg, swayidle, swaylock, Alacritty (DMS replaces them)
Login screen DMS greeter (greetd), graphical boot target
Essentials Ptyxis, Nautilus, Firefox, desktop portals, GNOME Keyring, Noto fonts, Flatpak + Flathub, fastfetch
Shell zsh (set as default) with autosuggestions and syntax highlighting, Starship prompt, eza, bat, fzf, zoxide, JetBrains Mono Nerd Font

Shell shortcuts

Type Does
→ (right arrow) Accepts the grey autosuggestion
Tab Menu-style completion
Up / Down Searches history for what you've typed so far
Ctrl+R / Ctrl+T Fuzzy-search history / files (fzf)
z <name> Jumps to your most-used matching folder
ls, ll, la, tree Colourful listings with icons and git status (eza)
cat Syntax-highlighted output (bat)

Your own zsh additions go in ~/.zshrc.local. The script owns ~/.zshrc and overwrites it on re-runs; any ~/.zshrc that was already there is backed up to ~/.zshrc.bak first.

Optional (asked at the start)

  • Steam and gamescope
  • NetworkManager OpenVPN support (for PIA or other .ovpn configs)
  • Fingerprint reader setup (Framework laptops)
  • EasyEffects (for Framework's speaker profile)

Requirements

  • Fedora 43 or newer, installed as Fedora Custom Operating System
  • An internet connection
  • A GPU with working acceleration

Testing in a VM

niri needs 3D acceleration, or you'll get a black screen after reboot. Turn it on before rebooting:

  • Proxmox: Display → VirGL GPU (host needs apt install libgl1 libegl1)
  • virt-manager / GNOME Boxes: Virtio video with 3D acceleration, Spice with OpenGL
  • VirtualBox: VMSVGA with Enable 3D Acceleration
  • VMware: Accelerate 3D graphics

Troubleshooting

Problem Fix
Black screen after reboot Ctrl+Alt+F2, log in, then run niri-session or dms greeter status
DMS bar doesn't appear Run dms run to see the error; check systemctl --user status dms
No sound systemctl --user status pipewire wireplumber, then wpctl status
Screen sharing shows nothing Check xdg-desktop-portal-gnome is installed, then log out and back in
Keyring asks for a password every login sudo authselect enable-feature with-pam-gnome-keyring and reboot

Notes

  • The script is safe to re-run; each step checks before changing anything.
  • Steam menu fix: xwayland-satellite 0.8.2 and older make X11 popup menus (like Steam's) flicker and vanish. If Fedora's package is affected, the script builds the fixed upstream commit (add2795) into /usr/local/bin. A boot-time check (xwls-git-check.service) deletes that build, and then itself, once Fedora ships a newer version.
  • Your original niri config is saved as ~/.config/niri/config.kdl.orig before it's edited.
  • No HDR yet: niri doesn't support it. HDR gaming needs a separate gamescope session.
  • DMS comes from the stable avengemedia/dms COPR, not the faster-moving dms-git.

License

MIT