Yazelix Nova docs
01
Start with Yazelix Nova
Try or install Stable, then choose the Nova Rio or current-terminal entrypoint.Yazelix Nova is a Nix-packaged terminal workspace. Install it with Nix and flakes enabled, or without Nix on x86_64 Linux. This guide describes the audited Stable revision shown in the site footer. Main and Edge may carry later behavior.
Choose a channel
Section titled “Choose a channel”| Channel | Install reference | Use |
|---|---|---|
| Stable | github:Yazelix/nova/stable |
Checked and dogfooded release |
| Main | github:Yazelix/nova/main#yazelix-main |
Frequent accepted updates |
| Edge | github:Yazelix/nova/edge#yazelix-edge |
Experimental dogfooding |
Immutable nova-v* tags select exact releases. A Nix lock file keeps its
selected revision until you update it.
Install
Section titled “Install”Pick one path. Nix works on Linux and macOS and bundles Nova Rio. The installer needs no Nix but runs only on x86_64 Linux. On macOS and ARM Linux, use Nix.
nix profile add --refresh github:Yazelix/nova/stableOpen the desktop workspace through the bundled Nova Rio terminal:
yzx launchStart the same managed workspace in the current terminal or over SSH:
yzx enterOn x86_64 Linux, the installer downloads the latest release archive, verifies
its checksum, installs it under ~/.local/share/yazelix-nova, and links yzx
into ~/.local/bin:
curl -LsSf https://nova.yazelix.com/install | shTo read the script before it runs, download it first:
curl -LsSfo install.sh https://nova.yazelix.com/installsh install.shPin or roll back to an exact release with --version, and remove Nova with
--uninstall. Uninstalling keeps your configuration and state:
curl -LsSf https://nova.yazelix.com/install | sh -s -- --version 2.0.0The installer prints a short summary: a download bar, then ✓ Installed with
the commands to start (yzx enter), learn (yzx tutor begin), and get help
(yzx doctor). It edits no shell startup file. When ~/.local/bin is not on
PATH, it prints the line to add. When another yzx comes first on PATH, it
says which yzx your shells run and how to put this one first. yzx doctor
repeats that warning later. Run
sh install.sh --help for every option. This install has no terminal. Run
yzx enter in Ghostty or your current terminal.
Nova Rio can also start it, but Nova
Rio itself installs with Nix. On macOS and ARM Linux, install with Nix.
The installer checks every download against the release’s SHA256SUMS. To
also confirm that GitHub Actions built the archive from Nova’s repository,
download it from the release page
and verify its attestation with the GitHub CLI. install.sh --help prints the
same command:
gh attestation verify yazelix-nova-2.0.0-x86_64-unknown-linux-gnu-no-rio.tar.gz --repo Yazelix/novaDay-to-day use
Section titled “Day-to-day use”Set a terminal profile to run yzx enter, or open the installed Linux desktop
entry. Most days, you do not type another yzx command after Nova opens.
Alt Shift K opens Ratconfig. The keybinding map covers the
rest of the workspace.
Try without installing
Section titled “Try without installing”nix run github:Yazelix/nova/stable -- launchnix run github:Yazelix/nova/stable -- enterRun the owned preflight without opening Rio or Zellij:
nix run github:Yazelix/nova/stable -- doctorNamed sessions
Section titled “Named sessions”Plain yzx launch and yzx enter start independent sessions. Add
--session NAME to create a fresh named session:
yzx enter --session projectyzx launch --session projectAttach to a live session by its full name:
yzx enter attach projectyzx launch attach projectCreation fails for a live name. Attachment fails for a missing name.
Inside Nova, press Ctrl Alt o, then w to open the session manager. Select a
live session to switch, or type a missing name and press Enter with the
Yazelix layout selected to create it.
After you switch sessions, popups or Alt h / Alt l may pause for several
seconds. Press Alt 1-9 to select a tab, then retry. See
Workspace keys for the session-manager chord.
Choose a package
Section titled “Choose a package”Package names follow yazelix[-no-rio][-no-helix][-no-yazi]:
| Package | Rio | Managed Helix | Managed Yazi |
|---|---|---|---|
yazelix |
Yes | Yes | Yes |
yazelix-no-helix |
Yes | No | Yes |
yazelix-no-yazi |
Yes | Yes | No |
yazelix-no-helix-no-yazi |
Yes | No | No |
yazelix-no-rio |
No | Yes | Yes |
yazelix-no-rio-no-helix |
No | No | Yes |
yazelix-no-rio-no-yazi |
No | Yes | No |
yazelix-no-rio-no-helix-no-yazi |
No | No | No |
nix profile add --refresh github:Yazelix/nova/stable#yazelix-no-helixThe four no-rio packages retain yzx enter. yzx launch reports that Rio is
unavailable. Helix-free packages need an installed editor selected through
editor.command. Yazi-free packages need matching host yazi and ya
commands.
See the repository installation and package reference for platform evidence, Home Manager declarations, and binary-cache details.
First five minutes
Section titled “First five minutes”Start the packaged tutor after entering Nova:
yzx tutor beginyzx launchopens Nova Rio, then the managed workspaceyzx enteropens the managed workspace in the current terminalAlt Shift Kopens Ratconfig inside Novayzx configopens Ratconfig from another terminal~/.config/yazelix/config.tomlstores optional sparse semantic overrides~/.local/share/yazelixstores generated runtime state by defaultyzx doctorchecks the owned runtime setup and warns when anotheryzxcomes first onPATH
02
Configure Yazelix Nova
Use Ratconfig, sparse semantic overrides, or owner-native files.Standalone pageInside Nova, press Alt Shift K to open Ratconfig. From another terminal, run:
yzx configRatconfig shows packaged defaults, saves explicit overrides, and marks Home Manager-owned files as read-only.
Main settings
Section titled “Main settings”The optional root config is:
~/.config/yazelix/config.tomlNova does not create this file until you save a root setting. Missing keys inherit packaged defaults. Unsupported or misspelled paths fail validation.
Common fields include:
| Field | Default | Applies to |
|---|---|---|
appearance.mode |
dark |
Managed component appearance |
appearance.straight_border_style |
single |
New sessions |
shell.program |
nu |
New panes |
shell.atuin |
true |
New managed shells |
editor.command |
yzx-hx |
New editor opens |
forest.enabled |
true |
New managed Helix editors |
forest.side |
right |
New managed Helix editors |
sidebar.command |
radar |
New sessions |
sidebar.args |
[] |
New sessions with a custom sidebar command |
welcome.enabled |
true |
New launches |
agent.command |
auto |
New agent popups |
keybindings.sidebar |
Alt Shift H |
New sessions |
keybindings.sidebar_focus |
Ctrl y |
New managed Helix editors |
bar.widgets |
Nova widget list | New launches |
For example:
[appearance]mode = "light"
[shell]program = "fish"
[editor]command = "nvim"Ratconfig labels each field with its apply timing. Start a new session for
fields marked next launch or next session.
Straight borders may be single or double. Zellij’s rounded_corners rounds
only single borders, so double borders keep square corners. Set
forest.enabled = false to start managed Helix without Nova configuring or
opening Forest.
Radar is the default sidebar. Set sidebar.command = "yzx-yazi" to use Nova’s
managed Yazi there, or select another executable and pass its arguments through
sidebar.args. Custom sidebar commands do not receive Radar-specific keys,
permissions, onboarding, or diagnostics.
Native files
Section titled “Native files”Component-specific configuration lives beside config.toml:
| Surface | Path |
|---|---|
| Nova Rio configuration | ~/.config/yazelix/rio/config.toml |
| Guarded Zellij scalars | ~/.config/yazelix/zellij/config.kdl |
| Extra Zellij plugins | ~/.config/yazelix/zellij/plugins.kdl |
| Starship overrides | ~/.config/yazelix/starship.toml |
| Nushell additions | ~/.config/yazelix/nu/env.nu, nu/config.nu |
| Helix overrides | ~/.config/yazelix/helix/ |
| Yazi config and assets | ~/.config/yazelix/yazi/ |
Ratconfig exposes exact file actions for these surfaces. Native owners keep their own validation and schema.
To enable automatic Zellij Scroll mode entry, set or update this top-level
value in ~/.config/yazelix/zellij/config.kdl, then start a new session:
scroll_mode_sync trueWithout this override, scrolling does not enter Scroll mode. Existing sessions keep their configuration. See Scrolling and search for the mode shortcuts.
Home Manager
Section titled “Home Manager”The Home Manager module owns one enable flag, package selection, sparse
programs.yazelix.config.settings, and optional native files. It writes no
runtime config unless you declare one of those options.
Store-backed files appear as read-only in yzx config. Edit the named
programs.yazelix.config.* option, then run your normal Home Manager switch.
Generated state
Section titled “Generated state”Nova writes generated runtime state to
${XDG_DATA_HOME:-$HOME/.local/share}/yazelix unless YAZELIX_STATE_DIR
overrides it. Edit the config inputs, not generated output.
See the repository configuration reference for the complete field and native-file contracts.
03
Yazelix Nova Keybindings
The packaged workspace key grid and its supported customization surface.Standalone pageNova extends the Helix and Vim h/j/k/l model across the workspace.
Movement grid
Section titled “Movement grid”| Layer | h |
j |
k |
l |
|---|---|---|---|---|
Alt |
Focus left or previous tab | Focus down | Focus up | Focus right or next tab |
Ctrl Alt |
Move pane to the left column | Move pane down circularly | Move pane up circularly | Move pane to the right column |
Alt Shift |
Sidebar | Git popup | Config popup | Agent popup |
Alt ] or Alt [ switches the tab between the stacked and split arrangements.
The split puts one work pane in its own column beside the remaining stack, so it
needs two work panes. Alt m opens another. The sidebar stays open or collapsed
as you left it, and the command menu’s layout entry does the same switch.
Ctrl Alt h and Ctrl Alt l move the focused work pane between the columns of
the split arrangement. The pane keeps focus and the other panes keep their order.
They do nothing in the outermost column, in the stacked arrangement, or while a
popup is open. Ctrl Alt Shift H and Ctrl Alt Shift L move the active tab.
They rely on the Kitty keyboard protocol to keep Shift distinct.
Workspace keys
Section titled “Workspace keys”| Key | Action |
|---|---|
Alt Shift M |
Toggle the command menu |
Alt Shift A |
Show a random visual with Anima |
Alt Shift H |
Toggle the configured sidebar (Radar by default) |
Alt Shift B |
Hide or restore the bottom key hints |
Alt ] / Alt [ |
Switch between the stacked and split arrangements |
Ctrl Alt n / Ctrl Alt p |
Go to the next / previous tab that needs attention in Radar |
Ctrl Tab / Ctrl Shift Tab |
Go to the next / previous Zellij session in Radar |
Alt Shift Y |
Toggle the full managed Yazi popup |
Ctrl y |
Toggle focus between Forest and managed Helix |
Alt Shift T |
Open a new workspace tab |
Alt Shift W |
Close the active workspace tab |
Ctrl Alt t |
Toggle Zellij tab mode |
Ctrl Alt s |
Enter or leave Zellij Scroll/Search mode |
Alt Shift F |
Toggle the focused pane fullscreen |
Alt 1-9 |
Go to tab 1-9 |
Alt m |
Open a new pane at the tab’s workspace root |
Ctrl p, then n / d / r |
Open a new pane stacked, below, or to the right, at the workspace root |
Ctrl p, then s |
Stack a new pane in the focused pane’s directory |
Alt j / Alt k |
Focus the next / previous work pane, wrapping within the stack |
Ctrl q |
Quit the Nova session |
Ctrl Alt g |
Lock Zellij so every key reaches the focused app, and press again to unlock |
Ctrl Alt o |
Open Zellij session mode, then press w for the session manager |
Alt r |
Reveal from the editor or return from Yazi |
Alt Enter in popup Yazi |
Set the tab folder without opening an editor |
Ctrl O in startup search |
Open the selected folder in the editor and finish creating the tab |
Press a popup key again to hide or close that surface and return to the tiled workspace.
Every new tab starts with a focused quick zoxide search. Search Enter moves
Yazi to the selected folder. It leaves the tab folder and editor unchanged.
Ctrl O opens the selected folder in the editor and completes startup.
Tab or Esc switches to full Yazi. While browsing, Tab or Z opens the
same search, and Shift Tab previews the hovered file with Spot.
In the persistent Yazi popup, search Alt Enter sets the selected result as
the tab folder without moving Yazi or opening an editor. While browsing, it
uses the hovered folder, or the current folder when hovering a file or nothing.
Startup Yazi does not offer this separate tab-folder action.
On macOS, set option-as-alt = "Left" or "Both" in
~/.config/yazelix/rio/config.toml to use Option for Alt shortcuts in Nova Rio.
Scrolling and search
Section titled “Scrolling and search”Mouse and trackpad scrolling review terminal history without automatically
entering Zellij Scroll mode. Press Ctrl Alt s to enter Scroll mode explicitly.
From there, press s, type a query, and press Enter to search. Press
Ctrl Alt s again to return to ordinary input.
The default applies to new sessions. To restore automatic mode entry, use the Zellij native-file override.
Clicking a tab switches to it when you release the mouse button.
Customize keys
Section titled “Customize keys”Open yzx config to edit the managed config, agent, Git, menu, screen, sidebar,
sidebar-focus, and bottom-hints chords. The corresponding keybindings.* fields live in
~/.config/yazelix/config.toml and accept a key chord or false. Changes apply
to new sessions.
The fixed Alt Shift Y, application-local Alt r, and managed Yazi bindings
remain in their native packaged owners. Nova rejects collisions among managed
semantic keys.
Ratconfig’s Keys tab is the complete packaged reference. The runtime sources
are defaults/zellij/config.kdl, the managed Helix config, and the managed Yazi
keymap.
04
Update Yazelix Nova
Update the Nix profile or declarative input that owns the installed package.Standalone pageChoose one update owner for each Yazelix install.
Profile installs
Section titled “Profile installs”Confirm the installed profile entry when needed:
nix profile listUpgrade the profile-owned package:
nix profile upgrade --refresh yazelixPass the exact installed package name when your profile uses another entry name.
Home Manager installs
Section titled “Home Manager installs”Run this from the configuration that declares the Yazelix input:
nix flake update yazelixReplace yazelix with your input name, then run the configuration’s normal
Home Manager or nix-darwin switch command. Do not use nix profile upgrade for
a package installed by Home Manager.
Channels
Section titled “Channels”The update follows the input’s stable, main, edge, or immutable tag
reference. Stable is the normal release channel. Main receives accepted updates
more often, and Edge carries experimental dogfood changes.
Live windows
Section titled “Live windows”The updated package applies to future launches. Open Nova sessions keep their current immutable Nix store paths until you close and relaunch them.
See the repository installation reference for package-owner details.
05
Recover a Nova Launch
Use the supported preflight, status, config, and package-owner checks.Standalone pageStart with doctor:
yzx doctoryzx doctor validates Nova’s owned config, helpers, selected editor, Yazi pair,
Zellij package, layout, and plugins. A failed preflight prints the failing
check without opening Rio or Zellij. Doctor and status inspect without creating
or repairing configuration, runtime files, Rio state, or plugin permissions.
Existing launch and run commands prepare missing runtime state.
Inspect runtime ownership
Section titled “Inspect runtime ownership”yzx statusyzx status --jsonyzx --versionStatus reports the selected package, config home, state directory, shell, editor, popup keys, layout, Yazi source, and session context.
Set up Radar activity
Section titled “Set up Radar activity”yzx radar-setupRadar checks Codex, Claude Code, and OpenCode in order, reports existing integrations, skips unavailable agents, and asks before changing each supported agent. Start a fresh agent session after setup and review any agent-owned trust step it reports.
Check the root config
Section titled “Check the root config”The root config is optional:
~/.config/yazelix/config.tomlOpen yzx config to inspect known invalid fields and exact native-file actions.
Back up config.toml before manual recovery. Removing an optional override
restores its packaged default on the next applicable launch.
Clean up old manual installs
Section titled “Clean up old manual installs”If an old clone, wrapper, or shell function shadows the current package:
type yzxcommand -v yzxThe command should resolve to the Nix profile, the Home Manager package, or the
installer’s ~/.local/bin/yzx link that owns the install. yzx doctor warns
when another yzx comes first on PATH. Remove a stale wrapper only after you
identify its owner.
Stale flake cache
Section titled “Stale flake cache”For a profile install:
nix profile upgrade --refresh yazelixHome Manager users update the declared input and run their normal switch.
Treat Classic residue as a warning
Section titled “Treat Classic residue as a warning”Doctor reports recognized Classic state and migration backups in the active roots. Nova does not load, archive, or remove those paths. External scripts may still reference them.
Start a fresh session
Section titled “Start a fresh session”yzx enterUse a new session when the updated package or a next-session setting needs to take effect. Zellij owns existing session lifetime and attachment.
Do not repair Nova by editing generated files under ~/.local/share/yazelix.
Fix the owned config input or package owner instead.
06
Nova Runtime Model
The yzx entrypoints, package variants, config boundary, and component owners.Standalone pageYazelix Nova is a Nix-packaged terminal workspace with one front door: yzx.
yzx launch -> Nova Rio -> managed Zellij workspaceyzx enter -> current terminal -> managed Zellij workspaceyzx run -> prepared Nova environment -> requested programyzx-zellij -> Nova's exact packaged Zellij CLIBare yzx prints help. launch is the only Nova Rio route. enter needs an
interactive terminal and works without a display server.
Packages
Section titled “Packages”The full package includes:
- Nova Rio for graphical launch
- Nova’s pinned upstream Zellij build and managed layout
- managed Yazi, Helix, and Nushell
- popup, config, screen, tutor, Git, prompt, and completion tools
Package names follow yazelix[-no-rio][-no-helix][-no-yazi]. Each suffix
removes that managed package while retaining the remaining integration.
Rio-free packages retain yzx enter. Helix-free and Yazi-free packages use the
selected host tools.
Generated runtime state
Section titled “Generated runtime state”Nova renders runtime state under:
~/.local/share/yazelixThis directory is output. Edit the config inputs instead.
User config
Section titled “User config”The optional sparse semantic config is:
~/.config/yazelix/config.tomlComponent-native files live under the same ~/.config/yazelix/ root. Normal
host config at ~/.config/{helix,yazi,starship} is not loaded by default.
Workspace identity
Section titled “Workspace identity”Nova targets managed panes by identity:
- Forest is the managed Helix file tree
- Radar is the default configurable sidebar.
yzx-yaziis an optional replacement - each new tab starts with a focused quick zoxide search.
Tabswitches to startup Yazi - each tab has one canonical workspace root
- managed opens reuse the tab’s editor
yzx revealopens the persistent Yazi popup at a target- Git and agent tools use workspace-scoped popups
- startup-search
Ctrl Osets the initial tab folder and opens its editor - popup Yazi
Alt Entersets only the tab folder. Existing panes keep their own cwd
Ownership
Section titled “Ownership”Nova Rio owns graphical launch. Zellij owns multiplexing. Forest owns the managed Helix tree, Radar owns activity presentation, and Nova Bar owns top-bar tabs, modes, and status. Focused first-party packages own popups, pane orchestration, screens, and Yazi themes. Nova pins and composes their package outputs. Nova and Zellij lists the packaged layout, plugins, and Nova’s Zellij build.
See the repository architecture for component contracts and verification gaps.
07
Nova and Zellij
What Zellij owns, what Yazelix packages around it, and how Nova builds Zellij.Standalone pageNova uses Zellij as the multiplexer. Tabs, stacked panes, floating panes, layouts, and the plugin API are Zellij. Yazelix ships a default layout, keys, plugins, and yzx around that. Nova builds its own yzx-zellij from pinned upstream Zellij, as described below.
Zellij
Section titled “Zellij”Upstream Zellij owns multiplexing: tabs, tiled and stacked panes, floating panes, sessions, layouts, and plugins. Rounded pane corners, pane frames, and swap layouts are Zellij settings. Nova’s default workspace uses those surfaces.
Yazelix around Zellij
Section titled “Yazelix around Zellij”The product shape around the multiplexer lives in packages, layout, and plugins:
| Piece | Owns |
|---|---|
| Packaged layout and keys | Radar-default sidebar, quick zoxide search before startup Yazi, stacked work panes, wrapping work-pane focus and movement, popup chords |
| Zellij Pane Orchestrator | Tab-local workspace roots, focus, sidebar, editor, and popup routing |
| Zellij Popup | Git, agent, Ratconfig, Yazi, and other floating TUIs |
| Yazelix Radar | Sidebar session, pane, command, and agent-activity presentation |
| Nova Bar | Top bar tabs, modes, session details, and status widgets |
nova-zjhints |
Bottom key-hint row, toggled with Alt Shift B |
yzx and Ratconfig |
Launch, enter, read-only diagnostics, and live config |
Ratconfig can change a Zellij setting while a session runs. The popup is Yazelix. The value it writes, such as rounded corners, is still Zellij.
Nova’s Zellij build
Section titled “Nova’s Zellij build”Nova builds yzx-zellij from unreleased upstream Zellij main at 333d7898. The
build embeds Nova Bar, Radar, the popup, the pane orchestrator, and
nova-zjhints, so the built-in plugins need no permission cache entries.
Sessions from the earlier Zellij binary stay separate.
Zellij carries two small patches. One keeps startup callbacks for background
plugins until the first client connects. The other sends a command-line pipe
payload once, so Nova’s helpers get a single reply. The bottom bar,
nova-zjhints, is zjhints v0.5.0 with Nova patches for modifier grouping and
lighter event handling. It replaces Zellij’s native status bar. The pin,
patches, and removal conditions live in the Nova Zellij distribution notes.
08
Nova Customization Surfaces
Choose the semantic root config, an owner-native file, or Home Manager.Standalone pageStart with yzx config. It displays packaged defaults and writes sparse
overrides to ~/.config/yazelix/config.toml.
Main settings
Section titled “Main settings”Use it for:
- appearance mode
- shell, Atuin history, and editor commands
- welcome behavior
- managed popup and sidebar keys
- agent command and arguments
- popup margins and top-bar widgets
Native sidecars
Section titled “Native sidecars”Use sidecars for tool-specific preferences that Yazelix does not render:
| Surface | Path |
|---|---|
| Nova Rio configuration | ~/.config/yazelix/rio/config.toml |
| Zellij scalar sidecar | ~/.config/yazelix/zellij/config.kdl |
| Extra Zellij plugins | ~/.config/yazelix/zellij/plugins.kdl |
| Starship overrides | ~/.config/yazelix/starship.toml |
| Nushell additions | ~/.config/yazelix/nu/ |
| Yazi config and assets | ~/.config/yazelix/yazi/ |
| Helix config, languages, and Steel files | ~/.config/yazelix/helix/ |
Home Manager
Section titled “Home Manager”Home Manager exposes programs.yazelix.enable, package selection, sparse
settings, and optional native files. Store-backed files remain read-only in
Ratconfig. Change the reported module option and run the normal switch.
Generated state
Section titled “Generated state”Files under ${XDG_DATA_HOME:-$HOME/.local/share}/yazelix are generated output.
Change the config input or package owner instead of editing runtime state.
See the repository configuration reference for file layering and validation details.
09
Nova Troubleshooting Checklist
Check the owned runtime, package source, config input, and generated-state boundary.Standalone page1. Run doctor
Section titled “1. Run doctor”yzx doctor2. Check command ownership
Section titled “2. Check command ownership”type yzxcommand -v yzxThe command should resolve to your Nix profile or Home Manager owner path, not an old ~/.local/bin/yzx wrapper or shell function.
3. Refresh stale flake evaluation
Section titled “3. Refresh stale flake evaluation”nix profile upgrade --refresh yazelixHome Manager users update their declared input and run the normal switch.
4. Inspect config
Section titled “4. Inspect config”yzx configThe optional root file is ~/.config/yazelix/config.toml. Back it up before
manual recovery. Ratconfig exposes invalid fields and exact native-file actions.
5. Keep generated state generated
Section titled “5. Keep generated state generated”Do not manually edit:
~/.local/share/yazelixRelaunch Nova after fixing the owning input. Open sessions keep their existing package and next-session settings.
6. Report precise failures
Section titled “6. Report precise failures”Useful issue details:
- OS and architecture
- install owner: Nix profile, Home Manager, or one-off
nix run yzx --versionyzx doctoryzx statusoryzx status --json- exact command output
- whether the problem reproduces in a fresh
yzx entersession