Yazelix
Zellij, Yazi with Nushell and Lua scripting add a File Tree to Helix (or your prefered editor). An IDE-like experience, in the terminal. With nix as the only dependency.
Install / Use
/learn @luccahuguet/YazelixREADME
Yazelix v13.2
<div align="center"> <img src="assets/logo.png" alt="Yazelix Logo" width="200"/> </div>Preview
v8:

v13:

Overview
Yazelix integrates Yazi, Zellij, and Helix (hence the name!), with first-class support for Neovim too.
-
Yazelix now uses the devenv-based shell (
devenv.nix) andyazelix.toml. The legacy flake interface (flake.nix,yazelix.nix) has been removed. -
Use your preferred shell: Bash, Fish, Zsh, or Nushell - Yazelix works with all of them
-
Zellij orchestrates everything, with Yazi as a sidebar and your chosen editor (Helix by default)
-
Toggle focus between the sidebar and editor with
Ctrl y, and toggle the sidebar itself withAlt y -
Every keybinding from Zellij that conflicts with Helix is remapped see here
-
When you hit Enter on a file/folder in the "sidebar":
- With Helix or Neovim: Targets the managed
editorpane through the Yazelix Zellij plugin. If that pane exists in the current tab, the file opens there. If not, Yazelix launches a new editor pane titlededitor. - With other editors: Opens the file in a new pane with your configured editor
- It automatically renames the Zellij tab to the file's underlying Git repo or directory name
- With Helix or Neovim: Targets the managed
-
Features include:
- "Reveal file in sidebar" (bind
reveal_in_yazi.nuto any editor-local shortcut you prefer in Helix/Neovim, and useCtrl yto jump between the editor and sidebar, see Keybindings) - A Yazi plugin to enhance the status bar in the sidebar pane, making it uncluttered, colorful, and showing file permissions
- A Git plugin showing file changes in the Yazi sidebar
- Dynamic column updates in Yazi (parent, current, preview) via the auto-layout plugin, perfect for sidebar use
- Modular editor support: Helix and Neovim have full integration features, or use any other editor via the
editor_commandsetting
- "Reveal file in sidebar" (bind
-
This project includes config files for Zellij, Yazi, terminal emulators, Nushell scripts, Lua plugins, and a lot of love
Why Yazelix
Yazelix is a reproducible terminal IDE that integrates Yazi + Zellij + Helix. It delivers a consistent, fast “superterminal” locally or over SSH with zero manual setup: smart pane/layout orchestration, sidebar reveal/open flows, curated packs, and sane defaults. It also solves helix/zellij keybinding conflicts (no need to ever lock zellij), auto‑configures great tools like starship, zoxide, carapace (that normally require editing shell config files), and includes many tools from the Yazelix Collection, like lazygit
It already comes with cool zellij and yazi plugins, some of which I maintain myself
It has features like reveal in Yazi (from Helix or Neovim) and opening files from Yazi in your configured editor
Supports top terminals (Ghostty, WezTerm, Kitty, Alacritty) and popular shells (Bash, Zsh, Fish, Nushell). Easy to configure via yazelix.toml, with devenv.nix providing the environment
Get everything running in less than 10 minutes. No extra dependencies, only Nix
Install once, get the same environment everywhere
Vision
- Using the terminal should be easy, beautiful, practical and reproducible
- Good defaults over customization. Have both when possible
- Yazelix is always on the edge of project versions
- Yazelix is always evolving, it's a living being
- What is even Yazelix?
- Yazelix lets you say
I use Yazelix btw - Boy, do we Nix
- Integration, integration, integration
- Made with love.
Acknowledgments
See Yazelix Collection for a full list of all projects, tools, and plugins Yazelix integrates, including links to each project and their homepages.
Improvements in v13.2
- Workspace Hardening - New-tab workspace defaults, tab-local workspace routing, and the
Alt+m/Alt+pworkspace flows were tightened so Yazelix behaves more predictably across tabs - Zellij Integration Hardening - The pane orchestrator and layout/config generation were further hardened to reduce stale state, helper-pane traps, and workspace drift
- Keybinding Model Polish -
yzx keysand the README/docs now describe the current workspace actions more clearly, especially aroundAlt+m,Alt+p, and editor/sidebar movement
Improvements in v13.1
- Cross-Tab Yazi Cwd Isolation -
yzx cwdand related sidebar sync flows now resolve the current tab's managed Yazi pane instead of guessing from session-global state, fixing the cross-tab cwd leak that could show up when every tab starts with Yazi - Stronger Workspace Cwd Routing - The
yzx cwdflow now has better tab retargeting, managed-editor cwd sync, cleaner tab naming, and tighter Yazi workspace keybinding alignment - Better Workspace Diagnostics and Controls -
yzx doctorcan diagnose Zellij plugin health,yzx keysexposes the current keymap surface more clearly, and Zellij default mode handling is now configurable - Agent and Update Flow Polish - Yazelix now ships the
justcodecommand, added pi-agent support before later removing the unstable localpi_rustpackaging, and further hardened the canary/update path
Improvements in v13
- The Biggest Pain Points Are Fixed – v13 replaces fragile pane-scanning flows with a real Zellij plugin that tracks the managed
editorandsidebarpanes and routes workspace actions directly instead of relying on shell heuristics - The Sidebar Can Always Find the Editor – The sidebar can now always find the managed
editorpane and open files in it reliably, and it is much faster because Yazelix no longer has to walk through panes or rely on pane-scanning heuristics - Sidebar and Layout Controls Are Finally Separate – Sidebar open/close now has its own
Alt+ybinding instead of being entangled with layout-family switching onAlt+[andAlt+] - Deterministic Workspace Navigation –
Ctrl+ytoggles focus between the managed editor and sidebar, whileAlt+[andAlt+]switch predictably between thesingle,vertical split, andbottom terminallayouts - Cleaner Keybinding Model – Editor/sidebar navigation is unified, editor-local reveal bindings are documented explicitly, and the temporary wrapper-pane transport was replaced with direct plugin messages
- Runtime Plugin Reliability – The pane orchestrator now ships through a content-hashed runtime wasm path, avoiding stale-plugin cache confusion during development and restart flows
- Launch Robustness –
yzx restartnow forces a freshdevenventry path instead of reusing stale terminal state - Better Config Inspection –
yzx configis much more useful now, with focused section views forhx,yazi, andzellij, plusyzx config open - Simpler Update and Testing Commands –
yzx updateandyzx dev testwere simplified into clearer defaults that are easier to remember and safer to use - Clearer Refresh and Environment Feedback –
yzx envnow shows rebuild activity more clearly, launch paths skip noisy shell-hook welcomes, and Yazelix warns when runtime versions drift - Command Palette –
yzx menugives you a searchable command palette for the main Yazelix actions, including a popup mode inside Zellij onAlt+Shift+m - Refresh Workflow –
yzx refreshmakes it easier to rebuild the Yazelix environment without launching the UI, whileyzx restartcleanly switches the current window onto the refreshed profile
Full version history: Version History
Experiments
- Nixless (System) Mode – Experimental work lives on the
nixless-system-modebranch and might never land inmain.
Compatibility
- Platform: Works on Linux and macOS
- Terminal: Ghostty (via Homebrew on macOS), Kitty, WezTerm, Alacritty; Foot on Linux only
- Editor: Any editor works. Helix and Neovim have first-class support (reveal in sidebar, open buffer in a running instance, managed editor-pane targeting). Configure via
editor_commandinyazelix.toml - Shell: Bash, Fish, Zsh, or Nushell - use whichever you prefer
- See the version compatibility table here (generated dynamically!)
Installation
📖 Complete Installation Guide → - Detailed step-by-step setup instructions
Helix Integration
Helix supports optional reveal_in_yazi.nu integration through Alt+r. Yazelix now reserves Alt+r globally: in the managed editor it forwards Alt+r into Helix for reveal, and outside the editor it falls back to the editor/sidebar focus flow. Ctrl+y and Alt+y remain the dedicated workspace navigation keys.
📖 Complete Helix Keybindings Guide → - Recommended keybindings for enhanced editing experience
Neovim Integration
For Neovim-Yazi integration, bind reveal_in_yazi.nu to any editor-local shortcut that does not conflict with your terminal or Zellij bindings. A good default is <M-r>:
-- Yazelix sidebar integration - reveal current file in Yazi sidebar
vim.keymap.set('n', '<M-r>', function()
local buffer_path = vim.fn.expand('%:p')
if buffer_path ~= '' then
vim.fn.system('nu ~/.config/yazelix/nushell/scripts/integrations/reveal_in_yazi.nu "' .. buffer_path .. '"')
end
end, { desc = 'Reveal in Yazi sidebar' })
📖 Complete Neovim Keybindings Guide → - Setup instructions and workflow tips
Version Check
Check installed tool versions:
nu nushell/scripts/utils/version_info.nu
Editor Pane Orchestration
When opening files from Yazi, Yazelix will:
- Ask the Yazelix pane orchestrator plugin for the m
