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
+
+
+