Installation

nova runs on macOS, Windows, and Linux. No Chromium, no Electron — a lightweight native binary built with Tauri and Rust.

macOS

1
Download the DMG
Download nova_*_universal.dmg from the releases page. Universal binary — runs on both Apple Silicon and Intel.
2
Drag to Applications
Open the DMG and drag nova.app into /Applications.
3
Bypass Gatekeeper
macOS will block the app on first launch because it isn't notarized. Run this once in Terminal, then open nova normally:
xattr -cr /Applications/nova.app
Note: Settings are stored in ~/Library/Application Support/nova/.

Windows

1
Download the installer
Download nova_*_x64-setup.exe from the releases page. Requires Windows 10 or later (64-bit).
2
Run the installer
Double-click and follow the prompts. Nova installs to %LOCALAPPDATA%\nova by default.
3
SmartScreen warning
Windows may show a SmartScreen prompt because the binary isn't signed yet. Click More info → Run anyway.
Note: Settings are stored in %APPDATA%\nova\.

Linux

1
Download the AppImage
Download nova_*_amd64.AppImage from the releases page.
2
Make it executable
Run chmod +x nova_*.AppImage then launch it directly — no installation needed.
Note: Settings are stored in ~/.config/nova/. A .deb package is also available for Debian/Ubuntu.
First Launch

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.

Tip: Open multiple windows with ⌘⇧N. Each window has independent tabs, terminal sessions, and panel state.
Interface Overview

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.

Tabs & Files

Each tab holds one file with independent editor state, undo history, cursor, and vim mode toggle.

Core actions

ActionShortcut
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).

Vim Mode

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

h j k l
Left / down / up / right
w b e
Word forward / backward / end
0 ^
Start of line / first non-blank
$
End of line
gg G
Top of file / bottom of file
{ }
Prev / next empty line

Operators

d
Delete — dd line, dw word, diw inner word
c
Change — delete and enter insert
y
Yank — yy whole line
p P
Paste after / before cursor
u
Undo
Ctrl+r
Redo

Insert mode entry

i a
Insert before / after cursor
I A
Insert at line start / end
o O
New line below / above
Esc
Return to NORMAL

Search

/
Forward search
n N
Next / prev match
Note: :w and :wq are supported as ex commands — save and save+close-tab.
Language Support

12 languages with syntax highlighting, folding, bracket matching, and autocompletion. Parsers load on demand — only the active file's language is in memory.

Supported

TypeScript
.ts · .tsx
JavaScript
.js · .jsx · .mjs
Rust
.rs
Python
.py
Go
.go
C / C++
.c · .cpp · .h
Java
.java
SQL
.sql
HTML
.html
CSS
.css
JSON
.json · .jsonc
Markdown
.md · .mdx

Override language

Open the Command Palette (⌘⇧P) and type the language name to switch the active tab's language manually.

File Explorer

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.

Note: Opening a new folder replaces the existing tree. Tabs from the previous folder remain open.
Terminal

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.

Tip: Run a build or dev server in the terminal while editing in the same window — no context switching.
Git Panel

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.

Note: Git must be on your $PATH. The panel activates for any folder with a .git directory.
Markdown Preview

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

SyntaxRendered as
# Headingh1–h6 with border
**bold**Yellow-tinted bold
*italic*Purple italic
`code`Inline code span
```block```Fenced code block
> quoteAccent-bordered blockquote
| table |Striped table
![img](url)Rounded image

Preview state is remembered per-tab. The toggle only appears when a .md file is active.

Spotify

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.

Tip: The panel docks alongside the other side panels and remembers its open/closed state between sessions.
Themes

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

ThemeCharacter
Atom DarkDefault. Mid-grey base, blue accent, One Dark palette.
DraculaDark purple with pink and green highlights.
NordArctic blue-grey, low contrast, great for long sessions.
Tokyo NightDeep blue-black with vibrant purple and cyan.
MonokaiHigh contrast, warm background, electric green and pink.
Gruvbox DarkEarthy tones, amber yellows, terracotta reds.
Catppuccin MochaSoft pastels on a dark mauve base.
GitHub DarkNear-black, matching GitHub's dark mode.
Rosé PineMuted warm rose tones.
PalenightDeep indigo with soft purple and gold tokens.
Appearance

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.

Background Image

Render a custom image behind editor surfaces — opacity, blur, and tint are all independently controlled.

Setting a background

1
Open Settings
Press ⌘, and scroll to the Background section.
2
Choose an image
Click Choose image — PNG, JPG, or WEBP. Loads immediately.
3
Adjust sliders
Opacity (image brightness), blur (gaussian blur px), tint (dark overlay strength).
Tip: Tint 0.65 + blur 6px works well for most images.
Settings Reference

All settings persist automatically to ~/Library/Application Support/nova/settings.json.

All options

theme
Editor and UI color theme
default: Atom Dark
fontSize
Editor font size in px (8–32)
default: 13.5
vim
Modal vim editing
default: false
wordWrap
Wrap long lines at window edge
default: false
lineNumbers
absolute or relative
default: relative
indentWidth
Spaces per indent level
default: 2
autoCloseBrackets
Auto-insert closing bracket
default: true
indentGuides
Vertical indent guide lines
default: true
fullDark
Deepen UI chrome
default: false
background.opacity
Image brightness (0–1)
default: 0.15
background.blur
Gaussian blur px (0–20)
default: 4
background.tint
Dark overlay strength (0–1)
default: 0.6
Keyboard Shortcuts

Complete shortcut reference.

Files & Tabs
New file N
Open file O
Open folder O
Save S
Close tab W
New window N
Next tab
Prev tab
Navigation
Fuzzy finder P
Command palette P
Find in file F
Panels
File explorer B
Terminal J
New terminal T
Git panel G
Spotify M
Settings ,
Shortcuts help H
Editor
Toggle vim V
Word wrap W
Font size up +
Font size down