iNiR
A complete desktop shell for Niri, built on Quickshell
Install • Keybinds • IPC Reference • Discord • Contributing
English · Español · Русский · 中文 · 日本語 · Português · Français · Deutsch · 한국어 · हिन्दी · العربية · Italiano
🤔 New here? Click if you have no idea what any of this is
What is this?
iNiR is your entire desktop. The bar at the top, the dock, notifications, settings, wallpapers, all of it. Not a theme, not dotfiles you paste. A full shell that runs on Linux.
What do I need to run it?
A compositor. That's the thing that handles your windows and puts pixels on screen. iNiR is made for Niri (a tiling Wayland compositor). There's some old Hyprland code from when this was a fork of end-4's dots, but Niri is what I actually use and test.
The shell runs on Quickshell, a framework for building shells in QML (Qt's UI language). You don't need to know any of that to use it though, everything is configurable through the GUI or a JSON file.
How it all connects
your apps
↓
iNiR (shell: bar, sidebars, dock, notifications, settings...)
↓
Quickshell (runs QML shells)
↓
Niri (compositor: windows, rendering)
↓
Wayland → GPU
Is it stable?
It's a personal project that got out of hand. I use it daily, lots of people in the Discord do too. But stuff breaks sometimes, code is messy in places, I'm learning as I go.
If something doesn't work, inir doctor fixes most things. Discord is active if that doesn't help. Just don't expect polished software, this is one person's rice that others happen to like.
Why does it exist?
I wanted my desktop to look and work a certain way and nothing else did exactly that. Started as end-4's Hyprland dots, became a full rewrite for Niri with way more features.
Words you'll see around
- Shell: the UI layer (bar, panels, overlays)
- Compositor: manages windows, draws to screen (Niri, Hyprland, Sway...)
- Wayland: Linux display protocol (the new one, replaces X11)
- QML: Qt's declarative UI language, what iNiR is written in
- Material You: Google's color system that makes palettes from images (that's the auto-theming)
- ii / waffle / iRiS: the three panel families. ii = Material Design vibes, waffle = Windows 11 vibes, iRiS = an Island that becomes whatever you open.
Super+Shift+Wcycles through them
Screenshots
Material ii: floating bar, sidebars, Material Design aesthetic
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Waffle: bottom taskbar, action center, Windows 11 vibes
![]() |
![]() |
Warning
Not for low-spec machines.
You can strip it down a lot though. Turn off effects, drop panels, flatten the design. Settings or config.json, whichever you prefer.
Features
Three panel families, switchable on the fly with Super+Shift+W:
- Material ii: floating bar, sidebars, dock, and 9 global styles (Material, Cards, Aurora, iNiR, Angel, Regalia, ZZZ, Cookie Shapes, Editorial)
- Waffle: Windows 11-inspired taskbar, start menu, action center, notification center
- iRiS: the flagship. An Island on any screen edge that grows into pages, cards and panels, pieces you can carry, a Dock on any edge, glass, whole-redesign Themes, light, ink and dark, and Customize right on the shell
Automatic theming. Pick a wallpaper and everything adapts:
- Shell colors via Material You, propagated to GTK3/4, Qt, terminals, Firefox, Discord, SDDM
- 10 theming targets covering terminals, editors, browsers, Spicetify, Steam, Cava and more
- Theme presets: Regalia / Regalia Ivory, Gruvbox, Catppuccin, Rosé Pine, and custom
Built for Niri. Hyprland code survives from the fork but is not tested.
Kira, the mascot, lives on your desktop if you want her there. Off by default, art pack is a separate download.
Full feature list
iRiS
- The Island: one shape on a screen edge that answers "what's happening" and becomes the page, card or panel you opened, then folds back into itself. Top, bottom, left or right (
inir iris edge <side>, or drag it there). On a side it stands up with a stacked clock and bubbles above and below - Menu bar: a thin strip with your workspaces, window and pieces, the Island hanging from it as a notch (
inir iris layout menubar) - Full width bar mode with start, center and end zones for the Island, workspaces, the focused window, the time or any piece (
inir iris zone start|center|end kinds+joined+with+plus) - Pieces: weather, sound, mic, tray, notifications, tools, media, VPN, a visualizer, anime (Airing and Continue) and your own apps as bubbles you can park on the Island, on the screen contour or loose on the desktop
- Pieces join what they touch: park one on the Dock's or the Island's edge and it becomes part of that body instead of floating on top
- Dock on any edge (
inir iris dockEdge <side|auto>); auto sits opposite the Island, and sending one to the other's edge makes them trade places - Glass that frosts the wallpaper under every surface, and keeps text readable even on bright or busy wallpapers. Compositor Blur exists too, but it is still under construction, so don't judge it yet
- Themes: 20 curated redesigns (Liquid Glass, Frost, Obsidian, Terminal, Neo Tokyo, Twilight, Lume, Sakura, Unit-01 and more) plus your own as shareable JSON files (
inir iris theme) - Light, Ink and Dark, each with its own tone and frost, and colour themes (Catppuccin, Nord, Rosé Pine, Tokyo Night…) that your apps wear too (
inir iris palette) - Shape: capsule, round, squircle or square for the Island and the Dock
- Customize on the shell: tap the Island, the Dock or a bubble and its options grow out of it, with Themes, Look, Pieces and undo under the Island (
inir iris edit). Studio keeps every area in one panel beside the screen if you prefer - Control Center you arrange: every shared quick toggle, the player and each slider as cells you drag, resize from a corner and add from a library beside it, with six starting layouts; right-click a control to unfold it (
inir iris control edit) - Lock screen you rehearse: the real lock opens editable with nothing to unlock; drag the clock, player and sign-in field around, and set what plays behind them, video included (
inir iris lock edit)
Theming and appearance
- 9 global styles: Material (solid), Cards, Aurora (glass blur), iNiR (TUI-inspired), Angel (neo-brutalism), Regalia (black engineered chassis, warm ivory ink, restrained champagne hardware), ZZZ (poster plates), Cookie Shapes (animated shape morphing), Editorial (paper-and-ink typography)
- Dynamic wallpaper colors via Material You, propagated system-wide
- 10 terminal and TUI tools auto-themed: foot, kitty, alacritty, ghostty, wezterm, starship, fuzzel, btop, lazygit, yazi
- App theming: GTK3/4, Qt (via plasma-integration and darkly), Firefox, Discord/Vesktop (System24), Zed, Spicetify, Steam, SDDM
- Theme presets: Gruvbox, Catppuccin, Rosé Pine, and more, or create your own
- Video wallpapers: mp4/webm/gif with optional blur, or frozen first frame for performance
- Desktop widgets: one design for all of them (iRiS, Material, iNstrument or Readout), stacks that turn like iOS ones, and ink that follows the wallpaper under them
Bar
- 6 bar styles: classic, islands, scenic, frame, Material 3 capsules, and pill
- Pill bar: a morphing centre island that opens on hover into workspaces, launcher, mixer, media, calendar and a screen recorder
- Modular layout with a drag editor in Settings, so any module can go anywhere
- Vertical bar for the people who want the screen edge back
Sidebars and widgets (Material ii)
Left sidebar (app drawer):
- AI Chat: live model catalogs across Ollama, LM Studio, OpenRouter, Gemini, Groq, Mistral, Cerebras, Anthropic, OpenAI and OpenCode
- YT Music: cookie-less InnerTube player with search, queue, radio and synced lyrics
- Wallhaven browser: search and apply wallpapers directly
- Anime tracker: AniList integration with schedule view
- Translator: via Gemini or translate-shell
- Draggable widgets: crypto, media player, quick notes, status rings, weekly calendar
Right sidebar:
- Calendar with event integration
- Notification center
- Quick toggles: WiFi, Bluetooth, night light, DND, power profiles, WARP VPN, EasyEffects
- Volume mixer with per-app control
- Bluetooth and WiFi device management
- Pomodoro timer, todo list, calculator, notepad
- System monitor: CPU, RAM, temperature
Tools
- Workspace overview: adapted for Niri's scrolling model, with app search and calculator
- Dashboard hub: configurable three-column overlay with agenda, notifications, todo, notes, media and weather
- Workspace edge strip: hover rail with live workspace previews and drag-to-reorder
- Window switcher: an animated Alt-Tab across all workspaces, opt-in since Niri ships its own now
- Clipboard manager: history with search and image preview
- Region tools: screenshots, screen recording, OCR, reverse image search
- Cheatsheet: keybind viewer pulled from your Niri config
- Media controls: full MPRIS player with multiple layout presets
- On-screen display: volume, brightness, and media OSD
- Song recognition: Shazam-style identification via SongRec
- Voice input: local whisper.cpp when installed, or a connected Groq, Gemini or OpenAI backend
System
- GUI settings: configure everything without touching files
- GameMode: auto-disables effects for fullscreen apps
- Auto-updates:
inir updatewith rollback, migrations, and user change preservation - Lock screen and session screen (logout/reboot/shutdown/suspend)
- Polkit agent, on-screen keyboard, autostart manager backed by niri's own startup file
- Kira: pixel-art cat girl who wanders the screen edges, reacts to what you do, and has a chaos mode. Opt-in, separate ~32 MiB art pack under
./setup› Extras - 18 locales with auto-detection, including Indonesian (
id_ID) and Kalaallisut (kl_GL) - Night light: scheduled or manual
- Weather: Open-Meteo, supports GPS, manual coordinates, or city name
- Battery management: configurable thresholds, auto-suspend on critical
- Custom event sounds with a master volume and per-event audio files
- Shell update checker: notifies when new versions are available
Quick Start
git clone https://github.com/snowarch/inir.git cd inir ./setup install # interactive, asks before each step ./setup install -y # automatic, no questions asked
The installer handles dependencies, system config and theming. After install, run inir run to start the shell, or log out and back in.
Void Linux
iNiR supports Void Linux glibc + runit + XBPS through the same setup entry
point instead of a separate installer. From the checkout created above, run
./setup install normally.
For a first Void install, the interactive path is recommended. Setup shows the
detected system and install plan, installs the XBPS dependency profiles, builds
the few providers that are not packaged by Void, configures the non-systemd
session path, and only then offers disruptive system changes such as migrating
from dhcpcd/standalone wpa_supplicant to NetworkManager or enabling SDDM.
./setup install -y deliberately does not make those two ownership changes for
you.
See iNiR on Void Linux, Void capabilities and the installation guide for the exact support scope.
inir run # launch the shell inir settings # open settings GUI inir logs # check runtime logs inir doctor # auto-diagnose and fix inir update # pull + migrate + restart
Other ways in, if ./setup install isn't what you want:
./setup # TUI menu, pick what you want sudo make install # system-wide instead of your home ./setup rollback # undo the last update
Distros: Arch remains the upstream primary target. Void Linux glibc/runit is also supported through XBPS. Fedora and Debian/Ubuntu retain their automated dependency paths with distro-repository-first fallbacks; other distributions use the generic guidance in the package list. iNiR needs Qt 6.9 or newer: Ubuntu 25.10, Fedora 43 and Debian testing or later.
Keybinds
| Key | Action |
|---|---|
| Super + Space | Overview: search apps, navigate workspaces |
| Super + V | Clipboard history |
| Super + Shift + S | Screenshot a region |
| Super + Shift + X | OCR a region |
| Super + , | Settings |
| Super + Shift + W | Switch panel family |
| Super + / | Cheatsheet, in case you forget the rest |
Full list: Keybinds
Wallpapers
15 wallpapers ship bundled. For more, check iNiR-Walls, a curated collection that works well with the Material You pipeline.
Documentation
Everything user-facing lives in the Wiki.
| Page | What's in it |
|---|---|
| Install | Getting it running |
| Setup | Updates, migrations, rollback |
| Keybinds | Every shortcut |
| IPC | Targets you can bind or script |
| Packages | Every dependency and why it's there |
| Limitations | What's known broken, and workarounds |
| Void Linux | XBPS, runit/Turnstile, providers, validation and gotchas |
| Architecture | How the code is put together |
Troubleshooting
inir logs # check recent runtime logs inir restart # restart the active runtime inir repair # doctor + restart + filtered log check ./setup doctor # auto-diagnose and fix common problems ./setup rollback # undo the last update
Check Limitations before opening an issue. If you'd rather just ask someone, Discord is faster.
Contributing
See CONTRIBUTING.md for development setup, code patterns, and pull request guidelines.
Credits
- end-4: illogical-impulse, the Hyprland dots iNiR forked from
- pctrade/end4-pC: a fork that occasionally has a genuinely good idea
- Gakuseei: Ricelin, where the pill bar and the washi and flame look come from
- Quickshell: the framework this runs on
- Niri: the compositor it's built for
GPL-3.0, same as end-4's dots. Copyright (C) 2025-2026 snowarch.












