Helide
Helix, with the workspace built in. Everything Helix does works the same way, and its own documentation still applies. This page covers what Helide adds.
install
From a release. Download the tarball from
the latest release, unpack it anywhere and run the
hx inside. It finds the runtime folder next to it. Linux x86_64 only for now.
tar xf helide-v0.1.0-x86_64-linux.tar.xz ./helide-v0.1.0-x86_64-linux/hx .
From source, with Rust installed:
git clone https://github.com/ujjwalvivek/helide-rs cd helide-rs cargo install --path helix-term --locked ln -Ts "$PWD/runtime" ~/.config/helix/runtime hx --grammar fetch && hx --grammar build
Helide reads your Helix config in ~/.config/helix. The agent panel needs claude or
opencode on your PATH, the code stats need scc, and a Nerd Font
makes the file icons show.
opening a project
hx, hx ., hx folder/ | Opens the project and restores its workspace: tabs, splits, cursors, panels and their sizes, terminal tabs and agent tabs. |
hx file | A quick edit: just the file, every panel closed, and nothing saved over the project's workspace. |
Without a saved workspace, Helide starts on a welcome screen: o open folder, f find file, t file tree, n new file, c config, q quit, and 1–6 for recent projects.
panels and keys
| Ctrl+1 | File tree |
| Ctrl+2 | Git panel |
| Ctrl+4 | Terminal |
| Ctrl+5 | Agents |
| F11 or Space z | Zen: hide every panel and the frame, or bring them back |
| Ctrl+, | Open the config |
| Ctrl+PgUp Ctrl+PgDn | Previous and next file |
| Alt+PgUp Alt+PgDn | Previous and next layout |
| Alt+Shift+←→↑↓ | Resize the sidebar and the terminal; with the agents focused, the agent panel |
A panel key shows and focuses its panel, focuses it if it is shown, and hides it if it is focused. Every panel edge can also be dragged.
file tree
| j k, Ctrl+d Ctrl+u, g G | Move, by a row, half a page, or to the ends |
| Enter or o | Open the file, or open and close the folder |
| l h | Open a folder; close it, or go to its parent |
| v s t | Open in a split beside, a split below, or a new layout |
| a | New file; end the name with / for a folder. The + on the FILES title does the same. |
| r d | Rename; delete, after asking. Tabs of deleted files close unless they have unsaved edits. |
| . R q | Show hidden files; re-read; hide the tree |
The tree follows the disk as files change. Under it, when it is tall enough, are code stats for the folder in view (the selected folder, or the selected file's): lines of code by language, and the COCOMO and LOCOMO estimates of what the code would cost a team or a model to write. They come from scc.
git panel
Changes, staged files, untracked files and stashes, then the commit graph, with a summary of the selected commit (or HEAD) at the bottom. Its file list scrolls on its own.
| Space | Stage or unstage a file or hunk; pop a stash |
| l h | List a file's hunks; collapse them |
| Enter or d | Open the diff as a tab; on a hunk, jump to it; on a commit or stash, show it |
| v Ctrl+s | The diff in a split beside or below |
| o | Open the file itself |
| x a | Discard a file or hunk, or drop a stash, after asking; stage everything |
| c A m | Commit; amend; write a commit message with a model |
| b B | Switch branch; new branch |
| z Z | Stash; pop the latest stash |
| P p f | Push; pull; fetch |
| R ? q | Refresh; list these keys; hide |
With the mouse: a click on a file opens its diff, a double click lists its hunks, a right click opens the file. A diff tab shows the whole file with added lines tinted green and removed ones red, and stays current as the file changes.
tabs and splits
Each side-by-side split has its own row of file tabs on the border above it. A file joins a row when that split shows it, and stays until you close it there or drag it away. A file open in two splits has a tab in both.
| click | Show the file in its split |
| drag along the row | Reorder; the other tabs slide aside |
| drag to another split's row | Move the file there, at the end |
| drag into a view | Open it there, or split it off by dropping near an edge |
| drag onto an agent or terminal | Type the file's path there |
| double click | Rename or move the file by editing its path; for a new file, save it there |
| × | Close it in that row, or close the file if this was its last tab |
| middle click | Close the file |
| + | A new file in that split |
Rows of tabs are saved with the workspace. Layouts are whole arrangements of splits, like separate screens:
:tab-new makes one, and when there is more than one they are numbered on the right of the border under
LAYOUTS.
terminal
:terminal [command] | A new tab, running the command or a shell. Alias :term. |
:terminal-split [command] | A pane beside the focused one. Alias :tsplit. |
| drag a tab into the panel | Join it to the shown tab as a pane |
| double click a tab | Name it |
Tabs come back with the workspace, with their panes, names, folders and programs. A file path printed in the terminal can be clicked to open it.
agents
:agent claude, :agent opencode | A new agent tab. The + on the AGENTS title offers whichever is installed. |
| Space @ | Mention the current file, and the selected lines, in the agent |
:accept :reject | Take or refuse an edit Claude proposed as a diff |
Agent tabs reopen on the conversation they were in, including after /clear or /resume in
Claude and /sessions in OpenCode. A tab shows ● while the agent works and
✓ when it finished while you were elsewhere, with a desktop notification for long runs.
Claude Code connects to Helide the way it does to its VS Code extension, so it sees your selection and proposes
edits as diffs in a tab.
time travel
Helide keeps a private copy of every file as you open it, each time you save it, and every half minute while it
has unsaved edits. :history (or :time-travel) lists the versions with how they differ
from now, and previews each one: a green bar marks lines that would come back, a red mark where lines of now would
go. Enter puts the version back as one edit, so u undoes it.
:history git does the same through the commits that changed the file. Copies older than a day are
thinned to one an hour, older than a month to one a day; files over 1 MB are not kept.
markdown preview
Space m, :preview, or PREVIEW on the border renders a Markdown file in the pane beside it,
with headings, lists, tables, code blocks and quotes.
model commands
:rewrite instruction | Rewrite each selection as told |
:ask question | Answer a question about the selection in a popup. Alias :explain. |
| m in the git panel | Write a commit message for the staged changes |
These use the local model from your OpenCode config. :ask can search the web through SearXNG when
SEARXNG_URL is set. The helide-rs-mozilla branch routes them through
Otari instead, with secrets masked before anything leaves the editor.
scripting
Each editor listens on a socket, and hx msg talks to it. Programs started inside Helide find their editor through HELIDE_SOCKET.
hx msg open file:line:col | Open a file in the focused view |
hx msg command reload-all | Run a typable command |
hx msg keys '<C-2>j<space>' | Type keys as if pressed |
hx msg status | Mode, focused file, cursor, selection and open buffers |
hx msg lsp, hx msg diagnostics [file] | Language servers; diagnostics |
where things live
~/.local/state/helide/workspaces/ | Each project's saved workspace |
~/.local/state/helide/history/ | Time travel's copies |
~/.config/helix/ | Config, keys and themes, shared with Helix |