Skip to content

SERVICES

snowarch edited this page Aug 2, 2026 · 2 revisions

Services Catalog

70+ QML singletons that handle everything that isn't pure UI. Each service is registered in services/qmldir (or services/deferred/qmldir) and available as a singleton import everywhere.

Only some services expose an IPC handler. The real IPC targets are listed where they exist; if a service has no IPC target: note, it has no IpcHandler and is not callable from the inir CLI. To regenerate the authoritative list: grep -rl IpcHandler services/ | xargs grep -oP 'target:\s*"\K[^"]+'.

Compositor

Service What it does
NiriService Niri IPC via Unix socket. Tracks workspaces, windows, outputs, keyboard layouts. Event-driven with reactive properties. IPC target: keyboard (layout switching).
CompositorService Detects compositor (Niri/Hyprland/GNOME), provides sorted toplevel windows and compositor-agnostic APIs.
HyprlandData Hyprland window, workspace, monitor, and layer data via hyprctl.
HyprlandKeybinds Parses Hyprland config for keybind cheatsheet.
HyprlandXkb Keyboard layout tracking for Hyprland.

Audio and Media

Service What it does
Audio PipeWire integration. Default sink/source, volume, mute, per-app mixer. EasyEffects virtual sink detection. IPC target: audio.
MprisController MPRIS player management. Filters real players, deduplicates YT Music instances, tracks active player with grace period for track transitions. IPC target: mpris.
YtMusic YouTube Music player. Search, queue, playback via mpv + yt-dlp. IPC target: ytmusic.
SongRec Music recognition via SongRec (Shazam-like audio fingerprinting).

System

Service What it does
Network NetworkManager integration. WiFi networks, connection status, signal strength.
BluetoothStatus Bluetooth adapter and device status via BlueZ D-Bus.
Battery UPower integration. Percentage, charging state, charge limit control, low/critical thresholds.
Brightness Monitor brightness via brightnessctl (laptop) and ddcutil (external monitors). Per-screen control. IPC target: brightness.
PowerProfilePersistence Restores the user's power profile on startup.
GameMode Fullscreen detection with auto/manual activation. Suppresses animations, notifications, blur when gaming. IPC target: gamemode.
Idle Idle management via swayidle. Screen-off, lock, and suspend timeouts. Set idle.onBattery.enable to apply a separate, shorter set of timeouts while a laptop runs unplugged.
ResourceUsage CPU, RAM, GPU, temperature, disk polling. History arrays for graphs. Auto-stop timer (15s) when no consumers active.
ScreenTime Optional focused-app usage tracking. Local JSON storage, daily totals, hourly buckets, 3/14 day range aggregation. Disabled unless sidebar.screenTime.enable is true.
SystemInfo Distro name, username, desktop environment detection.
ShellLayoutController Validates and persists bar, dock, taskbar and sidebar placement across panel families. IPC target: shellLayout.
Privacy Mic and screen sharing detection via PipeWire link analysis.

Theming and Appearance

Service What it does
ThemeService Theme orchestration. Applies presets, triggers wallpaper-based regeneration, manages auto vs manual mode.
MaterialThemeLoader Watches colors.json (generated by the color pipeline) and loads Material 3 colors into Appearance tokens.
ThemePresets 46 built-in theme presets (Catppuccin, Gruvbox, Nord, Angel, etc.) with full M3 color definitions.
Wallpapers Wallpaper management. Multi-monitor support, video wallpapers, backdrop system, auto-cycling.
WallpaperListener Multi-monitor wallpaper config resolver.
IconThemeService Icon theme management. Syncs to GTK, KDE, Qt5ct, Qt6ct. Smart Electron app icon resolution.
FontSyncService Syncs shell fonts to GTK/KDE desktop settings.
AwwwBackend awww animated wallpaper daemon integration.
GowallService gowall wallpaper color extraction and palette generation.

Data and Storage

Service What it does
Notifications Notification management with persistent storage, popup control, grouping, DND mode, GameMode integration. IPC target: notifications.
Cliphist Clipboard history with fuzzy search. Uses cliphist backend. IPC target: cliphistService.
Events Local calendar events with categories, priorities, reminders, recurrence. JSON storage.
CalendarSync External calendar sync via ICS/iCal URLs. Fetches with curl, parses in JS. Supports Google Calendar, Outlook, Nextcloud, any CalDAV.
Weather Open-Meteo weather data with GPS, manual coordinates, or city name location.
Todo Todo list with JSON + markdown sync.
Notepad Persistent plaintext notepad.
KeyringStorage Secure API key storage via GNOME Keyring (secret-tool).
DateTime Date/time formatting, uptime tracking.

Desktop Integration

Service What it does
Autostart Autostart manager. Reads/writes the managed section of ~/.config/niri/config.d/50-startup.kdl. Niri's own spawn-at-startup directives are the source of truth, not a Config JSON list. IPC target: autostart.
TrayService System tray with workarounds for problematic apps (Vesktop, Steam, etc.).
PolkitService PolicyKit authentication agent for privileged operations.
Hyprsunset Night light via wlsunset (Niri) or hyprsunset (Hyprland). Scheduled or manual.
EasyEffects EasyEffects audio effects toggle. Supports native and flatpak.
RecorderStatus Screen recording status detection (wf-recorder).
MascotMood Session-long personality mood for the mascot, with time-of-day seeding and jittered changes. IPC target: mascotMood.
SessionWarnings Detects running package managers before logout.
ConflictKiller Kills conflicting system trays and notification daemons on startup.
FirstRunExperience First-run wizard trigger.

Application Management

Service What it does
AppLauncher Default app slot manager (terminal, browser, file manager, etc.).
AppSearch Desktop entry fuzzy search with icon substitution mappings.
AppCatalog Curated software catalog with multi-distro install support. IPC target: appCatalog.
LauncherSearch Overview search with prefix routing (apps, actions, calculator, packages).
TaskbarApps Dock/taskbar app list (merged pinned + open windows).
MinimizedWindows Niri window minimization via hidden workspace. IPC target: minimize.
WindowPreviewService Window preview caching for task view.
GlobalActions Modular action registry for keyboard-driven workflows. User-extensible. IPC target: globalActions.

Content

Service What it does
Ai LLM chat. Gemini, OpenAI, Mistral, OpenRouter, Ollama. Tool use, streaming, conversation history. IPC target: ai.
AnimeService AniList GraphQL API. Anime schedule, seasonal listing.
Wallhaven Wallhaven.cc wallpaper search with rate limiting.
Booru Multi-booru image board API (yande.re, konachan, danbooru, etc.).
VoiceSearch Voice recording + Gemini transcription + web search. IPC target: voiceSearch.
Emojis Emoji picker data.
PackageSearch Async package manager search (pacman + AUR). IPC target: packageSearch.

Utilities

Service What it does
TimerService Pomodoro timer with persistent state.
Updates System update checker (Arch only, uses checkupdates).
ShellUpdates iNiR update checker. Git-based, tracks commits behind remote. IPC target: shellUpdate.
Ydotool Virtual keyboard input for on-screen keyboard.
LatexRenderer LaTeX math rendering via MicroTeX.
Translation i18n string lookup. Auto language detection, 15 languages.
DevNavigation Deterministic development navigation for loading lazy surfaces and internal settings views. IPC target: dev.
CustomWidgets User-installed custom widget management (scan/create/list/remove from the widgets dir). IPC target: customWidgets.
MemoryPressureService Monitors JSGCHeap accumulation (Qt V4 memfd leak); notifies and offers a shell restart. IPC target: memory.
WidgetPowerManager Pauses desktop-widget rendering on game mode / fullscreen / present windows / edit mode. IPC target: widgetpower.

For contributors

Services are stability boundaries. Changes to a service API affect every module that consumes it.

Before modifying a service:

  1. Check consumer count: grep -r "ServiceName\." modules/ services/
  2. Prefer add-only changes to public APIs
  3. Register new services in services/qmldir
  4. Add IPC targets to IPC Reference if applicable

Clone this wiki locally