A Wayland desktop shell built with Quickshell.
| Tier | Dependencies | Notes |
|---|---|---|
| Core shell | Quickshell, Niri, JetBrainsMono Nerd Font, bash/coreutils/findutils, DBus, GLib, grim, ImageMagick, NetworkManager, PulseAudio tools, swaybg, systemd, util-linux, iproute2, GNU sed, wf-recorder, wl-clipboard, xdg-utils | Shipped by the base nova flake package. |
| Calculator | libqalculate |
Included in packages.withCalculator and the dev app. Without it, calculator search results show an install hint. |
| AI usage pill | python3 |
Included in packages.withAiUsage and packages.full. Required only for src/scripts/ai-usage.py; the pill collapses if aiUsageMetrics.enabled is false or the collector cannot run. |
| Voice typing | voxtype on PATH |
Optional external tool; Nova reports availability in the voice typing UI. |
User config lives at ~/.config/nova/config.json and is created automatically on first run from the defaults in src/config.json.
Nova scales UI metrics from logical output height against a 1440p baseline, clamped between 1.0x and 1.15x so 1080p and 1440p outputs keep the same base size while larger outputs get only a modest correction. ui.scale is a global multiplier, and outputScales is an optional per-monitor multiplier keyed by the output name already used by notifications.screen:
{
"ui": {
"scale": 1,
"outputScales": {
"DP-2": 1.15
}
}
}Launcher web search opens a configured URL template with the encoded query. The default is Startpage:
{
"launcher": {
"webSearchUrlTemplate": "https://www.startpage.com/sp/search?query={query}"
}
}Use {query} or %s as the encoded search-term placeholder.
Run nova notes from a compositor keybinding, for example Super+N, to toggle the right-edge quick notepad. Draft tabs are autosaved immediately under ~/Documents/Notes/.drafts and named notes are saved as plain text files in ~/Documents/Notes by default.
Override the storage directory in ~/.config/nova/config.json:
{
"paths": {
"notes": "$HOME/Documents/Notes"
}
}The editor is plain text, so pasting rich content into it strips formatting before you copy it back out.
The bar includes a pill that shows live usage for Claude Code, Codex, and OpenRouter. Each tool reads credentials from its own tool's standard location — no manual key setup required as long as you're already logged in to each tool.
| Tool | Credential source | How it gets there |
|---|---|---|
| Claude Code | ~/.claude/.credentials.json |
Created automatically when you authenticate with claude CLI (claude login) |
| Codex | ~/.codex/auth.json |
Created automatically when you log in with the codex CLI (codex auth login) |
| OpenRouter | ~/.local/share/opencode/auth.json |
Created by opencode when you connect your OpenRouter account |
Set enabled to false in ~/.config/nova/config.json:
{
"aiUsageMetrics": {
"enabled": false
}
}Then reload Nova. The pill will collapse and background polling will stop.