docs

Everything you need to run Ziro.

Installation

Ziro is currently only supported on Linux. Tested on Arch Linux — other distros may work but are untested.

Stable

Downloads a prebuilt binary. No Rust required.

bash
curl -sSL https://ziro.faizeenhoque.dev/install.sh | bash

Rolling

Builds from the latest commit on main. Requires Rust and Cargo.

bash
curl -sSL https://ziro.faizeenhoque.dev/install-rolling.sh | bash
» note
Rolling may be unstable. Use stable unless you want the absolute latest changes.

Building from source

bash
git clone https://github.com/FaizeenHoque/ziro
cd ziro
cargo build --release
sudo mv target/release/ziro /usr/local/bin/ziro

Requires Rust 1.78+. Install Rust from rustup.rs.

» note
Both install scripts require sudo to move the binary to /usr/local/bin. Read the script before running if you're cautious about piping curl to bash.

Opening Files

ziro              # open a blank buffer
ziro file.txt     # open a specific file

If you open Ziro without a file, you'll start with a blank buffer. You'll be prompted for a filename the first time you save.

File Explorer

The explorer opens as a sidebar and keeps folder state inline instead of jumping between directories. Click a folder to expand or collapse it. Click a file to load it in the editor. Drag entries to move them within the tree.

KeyAction
Ctrl+EToggle the file explorer sidebar.
Click folderExpand or collapse that folder in place.
Click fileOpen the file in the editor.
Drag entryMove a file or folder into another directory.
» note
The editor shifts to the right while the explorer is open, so the cursor stays lined up with the visible text area.

Tabs & Saving

Ziro keeps open files in a tab bar above the editor. Opening a file adds it to the bar, clicking a tab switches to it, dragging a tab reorders the bar, and closing the last tab returns you to a blank buffer. Each tab keeps its own cursor and scroll position.

FeatureBehavior
Tab barShows every open file, with the current file highlighted.
Click tabSwitch to that file immediately.
Click xClose that file tab.
Drag tabReorder the open tabs by dragging.
Unnamed savePressing Ctrl+S on a blank buffer opens the filename popup.
EnterConfirms the filename and saves the file.
EscCancels the filename popup without saving.
tip
If you want to exit immediately, use Ctrl+Alt+W. Ctrl+W closes the current tab instead.

Keybindings

These work anywhere in the document (not mode-gated), except where noted.

KeyAction
Ctrl+EOpen or close the file explorer.
Ctrl+SSave. Opens the filename popup if the buffer has no path yet.
Ctrl+WClose the current tab.
Ctrl+Alt+WExit the editor immediately if the buffer is clean.
Ctrl+ZUndo the last change.
Ctrl+Shift+ZRedo the last undone change.
↑ ↓ ← →Move the cursor.
EnterInsert a newline, splitting the current line.
BackspaceDelete the character before the cursor.
EscCancel the filename popup (only active while it's open).
tip
Ctrl+W closes the current file tab. If you close the last tab, Ziro drops back to a blank buffer instead of exiting.

Undo & Redo

Ziro snapshots the full buffer and cursor position before each edit, not per-keystroke. Consecutive character insertions and consecutive backspaces are grouped into a single undo step; typing a word and then deleting it are still two separate steps.

KeyAction
Ctrl+UUndo
Ctrl+RRedo
» note
Redo history is cleared as soon as you make a new edit after undoing — same behavior you'd expect from any standard editor.

Syntax Highlighting

Ziro detects the language from the file's extension and applies syntax highlighting via syntect, using the Solarized (dark) theme. Supported languages include anything syntect ships by default: Rust, Python, JavaScript, TypeScript, Go, C, C++, HTML, CSS, JSON, TOML, Markdown, and more.

» note
If you open Ziro without a filename, there's no extension to detect — highlighting falls back to plain text until you save the buffer with a real name.