Skip to content

Services Catalogue

Your family

About 100 QML singletons hold the state and system work that UI should not own. services/qmldir registers the eager ones and services/deferred/qmldir the ones loaded after the first frame (see Runtime and Boot). Modules use them by name.

Before you change a service, find its consumers and prefer additive changes:

grep -r "ServiceName\." modules/ services/

Only a service with an IpcHandler answers inir <target> <function>. Some handlers live outside services/: customWidgets is in shell.qml. To list every target:

grep -rl IpcHandler --include=*.qml . | xargs grep -oP 'target:\s*"\K[^"]+'

A new target carries a /// comment right above its IpcHandler (what it is for; a ```kdl block in it becomes its example) and one above each function. The IPC page, inir help and tab completion are built from those comments:

/// Volume and mute control.
IpcHandler {
target: "audio"
/// Toggle speaker mute
function mute(): void { root.toggleMute() }
}
Service Purpose IPC
NiriService Niri socket: outputs, workspaces, windows, layouts keyboard
NiriKeybinds Niri keybinds, parsed by inir-accel niri-keybinds
CompositorService Picks Niri or Hyprland from the socket environment
HyprlandData, HyprlandKeybinds, HyprlandXkb Legacy Hyprland paths, not maintained
ShellLayoutController Where the active family keeps its bar, dock and sidebars, and the room they take; each family answers through its layout part
ShellEditSession Edit mode for moving shell pieces to the edges shellLayout
MinimizedWindows Minimised windows, moved to a separate workspace minimize
TaskbarApps, WindowPreviewService Dock and taskbar apps; window previews
Service Purpose IPC
DesktopItems, DesktopArrange, DesktopEditStage, DesktopEditHistory, DesktopPresets, DesktopWidgetLayout Desktop edit mode
DesktopWidgetStacks Widgets stacked in one spot, rotating or paging widgetStacks
CustomWidgets User widgets: scan, create, remove customWidgets (in shell.qml)
WidgetPowerManager Pauses widget rendering in game mode, fullscreen, present, edit widgetpower
LivePins Live snips of one window. Niri only, through qs-rs livePins
Service Purpose IPC
Audio PipeWire devices, volume, mute, per-app mixer audio
MprisController MPRIS players, grace period between tracks mpris
YtMusic YouTube Music through mpv and yt-dlp ytmusic
InnerTube, MpvIpc, CavaService (deferred) Browsing via inir-accel innertube; mpv JSON socket; shared cava
Network NetworkManager through nmcli network
Vpn OpenVPN, WireGuard, IPsec and Tailscale vpn
BluetoothStatus Adapter and devices through Quickshell.Bluetooth bluetooth
DeviceEvents Devices plugged in, connected or lost, one event at a time connections
Privacy Microphone and screen sharing, from PipeWire links privacy
Service Purpose IPC
Idle swayidle timeouts. idle.onBattery.enable adds shorter ones
Battery UPower: charge, state, charge limit battery
Brightness brightnessctl for laptops, ddcutil for external monitors brightness
PowerProfilePersistence Restores the power profile at startup, when a power profiles daemon is running
GameMode Fullscreen detection, automatic or manual gamemode
GamePerformanceService Focused game detection, optional MangoHud CSV
ResourceUsage CPU, RAM, GPU, temperature, disk. Stops after resources.autoStopDelay
ScreenTime Focused-app usage, only with screenTime.enable
MemoryPressureService Watches the JS heap (Qt V4 memfd leak), offers a restart memory
Service Purpose IPC
ThemeService Applies presets, regenerates from the wallpaper globalStyle, colorMode
MaterialThemeLoader Loads colors.json into Material 3 tokens, syncs SDDM loginScreen
Lume Keeps content readable over whatever is behind it
WallpaperLuma Brightness and unevenness of the wallpaper under a rect
Wallpapers, WallpaperListener Selection, per-monitor and backdrop resolution
AwwwBackend awww animated wallpaper daemon
IconThemeService, FontSyncService Icon and font sync to GTK, KDE and Qt
NiriAnimationPresets Presets matched to config.d/60-animations.kdl niriAnimations
GowallService (deferred) Palette extraction with gowall

ThemePresets is not a service. It lives in modules/common/ThemePresets.qml: 49 presets and Auto.

Service Purpose IPC
Notifications Storage, popups, grouping, do not disturb notifications
LiveActivities Notifications with progress, shown as activities
Cliphist (deferred) Clipboard history cliphistService
Shelf (deferred) Recent clips, screenshots and dropped files
Events, CalendarSync Local events in JSON; ICS feeds through curl
Weather Open-Meteo, from GPS, coordinates or a city
WorldClock Timezones for the world clock widgets
Todo, Notepad Todo list with JSON and markdown sync; plain notes
KeyringStorage (deferred) API keys in GNOME Keyring, through secret-tool
DateTime, SystemInfo Date and uptime; distro and desktop detection
Service Purpose IPC
Autostart The managed section of config.d/50-startup.kdl autostart
TrayService System tray, with workarounds for Vesktop and Steam
ConflictKiller Stops conflicting tray and notification daemons at startup
Hyprsunset Night light through wlsunset (Niri) or hyprsunset
EasyEffects (deferred) Audio effects toggle, native or Flatpak
PolkitService PolicyKit agent
SessionWarnings (deferred) Warns about running package managers before logout
FirstRunExperience First-run check; applies a bundled wallpaper, runs inir welcome
MascotMood Mood for the mascot mascotMood
Service Purpose IPC
AppLauncher, AppSearch Default apps; desktop entry search
AppCatalog Curated catalogue with multi-distro installs appCatalog
Hub Community hub, installs through inir hub (inir-cli) hub
LauncherSearch (deferred) Overview search with prefix routing
GlobalActions Registry of keyboard-driven actions globalActions
PackageSearch (deferred) Package search: pacman with AUR, or XBPS packageSearch
Ai Gemini, OpenAI, Mistral, OpenRouter, Ollama; tools and streaming ai
VoiceSearch Recording and Gemini transcription voiceSearch
AnimeService, NewsService (deferred) AniList; Google News RSS
Booru, Wallhaven Image board and wallpaper search
Emojis, LatexRenderer, Ydotool (deferred) Emoji data; LaTeX through MicroTeX; virtual input
Service Purpose IPC
TimerService Countdown, Pomodoro and stopwatch timer
Undo The way back for the last removal, offered on a notice undo
Updates Package updates: checkupdates on Arch, xbps-install -nu on Void
ShellUpdates iNiR updates from git: commits behind the remote shellUpdate
Translation Strings from the 18 catalogues in translations/, plus each installed plugin’s own
DevNavigation Development navigation: loads lazy surfaces and Settings pages by name dev
  • Add-only changes to public APIs. A rename breaks every consumer.
  • New services go in services/qmldir, or in services/deferred/qmldir if they can wait.
  • Eager services run at startup, so keep their timers, polling and file I/O cheap.