Installing Helix
- --
-
- Pre-built binaries -
- Linux, macOS, Windows and OpenBSD packaging status -
- Linux
-
-
-
- Ubuntu -
- Fedora/RHEL -
- Arch Linux extra -
- NixOS -
- Flatpak -
- Snap -
- AppImage -
- - macOS - - -
- Windows
-
-
-
- Winget -
- Scoop -
- Chocolatey -
- MSYS2 -
- - Building from source - - -
To install Helix, follow the instructions specific to your operating system. -Note that:
--
-
-
-
To get the latest nightly version of Helix, you need to -build from source.
-
- -
-
To take full advantage of Helix, install the language servers for your -preferred programming languages. See the -wiki -for instructions.
-
-
Pre-built binaries
-Download pre-built binaries from the
-GitHub Releases page. Add the binary to your system's $PATH
to use it from the command
-line.
Linux, macOS, Windows and OpenBSD packaging status
- -Linux
-The following third party repositories are available:
-Ubuntu
-Add the PPA
for Helix:
sudo add-apt-repository ppa:maveonair/helix-editor
-sudo apt update
-sudo apt install helix
-
-Fedora/RHEL
-sudo dnf install helix
-
-Arch Linux extra
-Releases are available in the extra
repository:
sudo pacman -S helix
-
---💡 When installed from the
-extra
repository, run Helix withhelix
instead ofhx
.For example:
--helix --health -
to check health
-
Additionally, a helix-git package is available -in the AUR, which builds the master branch.
-NixOS
-Helix is available in nixpkgs through the helix
attribute,
-the unstable channel usually carries the latest release.
Helix is also available as a flake in the project
-root. Use nix develop
to spin up a reproducible development shell. Outputs are
-cached for each push to master using Cachix. The
-flake is configured to automatically make use of this cache assuming the user
-accepts the new settings on first use.
If you are using a version of Nix without flakes enabled,
-install Cachix CLI and use
-cachix use helix
to configure Nix to use cached outputs when possible.
Flatpak
-Helix is available on Flathub:
-flatpak install flathub com.helix_editor.Helix
-flatpak run com.helix_editor.Helix
-
-Snap
-Helix is available on Snapcraft and can be installed with:
-snap install --classic helix
-
-This will install Helix as both /snap/bin/helix
and /snap/bin/hx
, so make sure /snap/bin
is in your PATH
.
AppImage
-Install Helix using the Linux AppImage format. -Download the official Helix AppImage from the latest releases page.
-chmod +x helix-*.AppImage # change permission for executable mode
-./helix-*.AppImage # run helix
-
-macOS
-Homebrew Core
-brew install helix
-
-MacPorts
-port install helix
-
-Windows
-Install on Windows using Winget, Scoop, Chocolatey -or MSYS2.
-Winget
-Windows Package Manager winget command-line tool is by default available on Windows 11 and modern versions of Windows 10 as a part of the App Installer. -You can get App Installer from the Microsoft Store. If it's already installed, make sure it is updated with the latest version.
-winget install Helix.Helix
-
-Scoop
-scoop install helix
-
-Chocolatey
-choco install helix
-
-MSYS2
-For 64-bit Windows 8.1 or above:
-pacman -S mingw-w64-ucrt-x86_64-helix
-
-Building from source
-Requirements:
-Clone the Helix GitHub repository into a directory of your choice. The
-examples in this documentation assume installation into either ~/src/
on
-Linux and macOS, or %userprofile%\src\
on Windows.
-
-
- The Rust toolchain -
- The Git version control system -
- A C++14 compatible compiler to build the tree-sitter grammars, for example GCC or Clang -
If you are using the musl-libc
standard library instead of glibc
the following environment variable must be set during the build to ensure tree-sitter grammars can be loaded correctly:
RUSTFLAGS="-C target-feature=-crt-static"
-
--
-
-
-
Clone the repository:
-
-git clone https://github.com/helix-editor/helix -cd helix -
- -
-
Compile from source:
-
-cargo install --path helix-term --locked -
This command will create the
-hx
executable and construct the tree-sitter -grammars in the localruntime
folder.
-
--💡 If you do not want to fetch or build grammars, set an environment variable
-HELIX_DISABLE_AUTO_GRAMMAR_BUILD
--💡 Tree-sitter grammars can be fetched and compiled if not pre-packaged. Fetch -grammars with
-hx --grammar fetch
and compile them with -hx --grammar build
. This will install them in -theruntime
directory within the user's helix config directory (more -details below).
Configuring Helix's runtime files
-Linux and macOS
-The runtime directory is one below the Helix source, so either export a
-HELIX_RUNTIME
environment variable to point to that directory and add it to
-your ~/.bashrc
or equivalent:
export HELIX_RUNTIME=~/src/helix/runtime
-
-Or, create a symbolic link:
-ln -Ts $PWD/runtime ~/.config/helix/runtime
-
-If the above command fails to create a symbolic link because the file exists either move ~/.config/helix/runtime
to a new location or delete it, then run the symlink command above again.
Windows
-Either set the HELIX_RUNTIME
environment variable to point to the runtime files using the Windows setting (search for
-Edit environment variables for your account
) or use the setx
command in
-Cmd:
setx HELIX_RUNTIME "%userprofile%\source\repos\helix\runtime"
-
---💡
-%userprofile%
resolves to your user directory like -C:\Users\Your-Name\
for example.
Or, create a symlink in %appdata%\helix\
that links to the source code directory:
Method | Command |
---|---|
PowerShell | New-Item -ItemType Junction -Target "runtime" -Path "$Env:AppData\helix\runtime" |
Cmd | cd %appdata%\helix mklink /D runtime "%userprofile%\src\helix\runtime" |
--💡 On Windows, creating a symbolic link may require running PowerShell or -Cmd as an administrator.
-
Multiple runtime directories
-When Helix finds multiple runtime directories it will search through them for files in the -following order:
--
-
runtime/
sibling directory to$CARGO_MANIFEST_DIR
directory (this is intended for -developing and testing helix only).
-runtime/
subdirectory of OS-dependent helix user config directory.
-$HELIX_RUNTIME
-- Distribution-specific fallback directory (set at compile time—not run time—
-with the
HELIX_DEFAULT_RUNTIME
environment variable)
- runtime/
subdirectory of path to Helix executable.
-
This order also sets the priority for selecting which file will be used if multiple runtime -directories have files with the same name.
-Note to packagers
-If you are making a package of Helix for end users, to provide a good out of
-the box experience, you should set the HELIX_DEFAULT_RUNTIME
environment
-variable at build time (before invoking cargo build
) to a directory which
-will store the final runtime files after installation. For example, say you want
-to package the runtime into /usr/lib/helix/runtime
. The rough steps a build
-script could follow are:
-
-
export HELIX_DEFAULT_RUNTIME=/usr/lib/helix/runtime
-cargo build --profile opt --locked --path helix-term
-cp -r runtime $BUILD_DIR/usr/lib/helix/
-cp target/opt/hx $BUILD_DIR/usr/bin/hx
-
This way the resulting hx
binary will always look for its runtime directory in
-/usr/lib/helix/runtime
if the user has no custom runtime in ~/.config/helix
-or HELIX_RUNTIME
.
Validating the installation
-To make sure everything is set up as expected you should run the Helix health -check:
-hx --health
-
-For more information on the health check results refer to -Health check.
-Configure the desktop shortcut
-If your desktop environment supports the
-XDG desktop menu
-you can configure Helix to show up in the application menu by copying the
-provided .desktop
and icon files to their correct folders:
cp contrib/Helix.desktop ~/.local/share/applications
-cp contrib/helix.png ~/.icons # or ~/.local/share/icons
-
-To use another terminal than the system default, you can modify the .desktop
-file. For example, to use kitty
:
sed -i "s|Exec=hx %F|Exec=kitty hx %F|g" ~/.local/share/applications/Helix.desktop
-sed -i "s|Terminal=true|Terminal=false|g" ~/.local/share/applications/Helix.desktop
-
-
-