nova runs on macOS, Windows, and Linux. No Chromium, no Electron — a lightweight native binary built with Tauri and Rust.
macOS
nova_*_universal.dmg from the releases page. Universal binary — runs on both Apple Silicon and Intel./Applications.xattr -cr /Applications/nova.app
~/Library/Application Support/nova/.Windows
nova_*_x64-setup.exe from the releases page. Requires Windows 10 or later (64-bit).%LOCALAPPDATA%\nova by default.%APPDATA%\nova\.Linux
nova_*_amd64.AppImage from the releases page.chmod +x nova_*.AppImage then launch it directly — no installation needed.~/.config/nova/. A .deb package is also available for Debian/Ubuntu.nova opens to an empty canvas. Nothing is configured automatically — you start from wherever you are.
Opening a file
Press ⌘O or click Open File. Language is detected from the extension and the correct parser loads automatically.
Opening a folder
Press ⌘⇧O to set a workspace root. This populates the File Explorer (⌘B) and sets the terminal's initial working directory.
New file
Press ⌘N for a blank untitled tab. Name it when you save with ⌘S.
nova is a single window: title bar at the top, optional side panels, tab bar, editor area, and a status bar at the bottom.
Title bar
Icon buttons for File Explorer, Git, Terminal, and Settings. When a .md file is active, the Markdown preview toggle appears. The Help button is always on the right.
Tab bar
Each open file gets a tab with a language color dot. A dot on the tab means unsaved changes. Navigate with ⌘⌥← / ⌘⌥→.
Editor
Line gutter with relative or absolute numbers, indent guides, bracket matching, and active-line highlighting. Gutter width adapts to file size.
Status bar
Left to right: vim mode, language, theme, line ending, encoding, cursor position, indent width. Change them via Settings or the Command Palette.
Each tab holds one file with independent editor state, undo history, cursor, and vim mode toggle.
Core actions
| Action | Shortcut |
|---|---|
| New blank tab | ⌘N |
| Open file | ⌘O |
| Open folder | ⌘⇧O |
| Save | ⌘S |
| Close tab | ⌘W |
| Next / prev tab | ⌘⌥→ / ⌘⌥← |
Language detection
Detected from the file extension on open. New unsaved tabs default to plain text. Override via Command Palette (⌘⇧P).
Full modal editing, implemented per-tab. One tab can be in vim mode while another isn't.
Enable
Toggle with ⌘⇧V, from Settings, or via the Command Palette. The status bar shows the current mode.
Modes
NORMALINSERTVISUAL
NORMAL shows a block cursor. INSERT returns to a blinking line. VISUAL highlights the selected region.
Motions
Operators
dd line, dw word, diw inner wordyy whole lineInsert mode entry
Search
:w and :wq are supported as ex commands — save and save+close-tab.In-file search, workspace fuzzy finder, and command palette — three distinct tools for finding what you need.
In-file search
Press ⌘F. Type to highlight all matches. Enter / ⇧Enter jump between them. Escape closes.
Fuzzy file finder
Press ⌘P. Fuzzy-matches filenames and paths across the open workspace. Enter opens, Escape dismisses.
Command palette
Press ⌘⇧P. Every editor action searchable by name. Arrow keys to navigate, Enter to run.
12 languages with syntax highlighting, folding, bracket matching, and autocompletion. Parsers load on demand — only the active file's language is in memory.
Supported
Override language
Open the Command Palette (⌘⇧P) and type the language name to switch the active tab's language manually.
Shows the workspace directory you opened with ⌘⇧O. Toggle with ⌘B.
Navigation
Click a folder to expand or collapse it. Click a file to open it in a new tab — or focus its existing tab if already open. The active file has an accent bar on its left edge.
Reload
The tree doesn't watch the filesystem for external changes. Press ⌘⇧O again to reload the directory.
A full PTY-backed xterm.js terminal. Toggle with ⌘J.
Session persistence
The terminal is always mounted — hiding the panel does not kill the shell. Processes, history, and current directory survive panel toggles.
New session
Press ⌘T to spawn a new terminal session alongside the existing one.
Working directory
New sessions start in the workspace root if a folder is open, otherwise in ~.
Font size
⌘+ / ⌘– adjust terminal font size when the terminal has focus, and editor font size when the editor has focus.
Source control sidebar for staging, diffing, and committing. Toggle with ⌘G.
What it shows
- Staged — files ready to commit
- Unstaged — modified files not yet staged
- Untracked — new files git doesn't know about
Committing
Stage files, write a commit message in the input at the top of the panel, press Enter or click Commit.
$PATH. The panel activates for any folder with a .git directory.When a .md file is active, a preview toggle appears in the title bar. Click it to split the view into editor and live-rendered preview.
Rendered elements
| Syntax | Rendered as |
|---|---|
| # Heading | h1–h6 with border |
| **bold** | Yellow-tinted bold |
| *italic* | Purple italic |
| `code` | Inline code span |
| ```block``` | Fenced code block |
| > quote | Accent-bordered blockquote |
| | table | | Striped table |
|  | Rounded image |
Preview state is remembered per-tab. The toggle only appears when a .md file is active.
nova has a built-in Spotify player panel. Control playback, browse your library, and see what's playing without switching apps.
Toggle
Press ⌘⇧M or use the Command Palette to open and close the Spotify panel.
What it does
- Shows the currently playing track, artist, and album art
- Play / pause, next, previous controls
- Browse your playlists and library
- Volume control
Requirements
Spotify must be running on your machine. The panel communicates with the Spotify client via its local API.
Ten dark themes, all applied live via CodeMirror compartments — no view reload, no cursor jump, no undo history loss.
Changing theme
Open Settings (⌘,) and pick from the dropdown. Or search by name in the Command Palette.
All themes
| Theme | Character |
|---|---|
| Atom Dark | Default. Mid-grey base, blue accent, One Dark palette. |
| Dracula | Dark purple with pink and green highlights. |
| Nord | Arctic blue-grey, low contrast, great for long sessions. |
| Tokyo Night | Deep blue-black with vibrant purple and cyan. |
| Monokai | High contrast, warm background, electric green and pink. |
| Gruvbox Dark | Earthy tones, amber yellows, terracotta reds. |
| Catppuccin Mocha | Soft pastels on a dark mauve base. |
| GitHub Dark | Near-black, matching GitHub's dark mode. |
| Rosé Pine | Muted warm rose tones. |
| Palenight | Deep indigo with soft purple and gold tokens. |
Font size, line numbers, word wrap, indentation, and bracket behavior — all adjustable without touching a config file.
Font size
⌘+ / ⌘– when the editor has focus. Range 8–32 px.
Line numbers
Relative by default — the current line shows its absolute number, surrounding lines show their distance. Ideal for vim motions like 5j. Toggle in Settings.
Word wrap
Toggle with ⌘⇧W or in Settings.
Indentation
2 or 4 spaces, configurable in Settings. Indent guides are drawn per level.
Full dark mode
Deepens sidebar and UI chrome beyond what the current theme defines. Useful with light-ish themes.
Render a custom image behind editor surfaces — opacity, blur, and tint are all independently controlled.
Setting a background
All settings persist automatically to ~/Library/Application Support/nova/settings.json.
All options
Complete shortcut reference.