Clone down the Zed repository.
Install Rust. If it's already installed, make sure it's up-to-date:
| 1 | rustup update |
Install the necessary system libraries:
| 1 | script/linux |
If you prefer to install the system libraries manually, you can find the list of required packages in the script/linux file.
[!WARNING] This section is still in development. The instructions are not yet complete.
If you are developing collaborative features of Zed, you'll need to install the dependencies of zed's collab server:
Alternatively, if you have Docker installed you can bring up all the collab dependencies using Docker Compose:
| 1 | docker compose up -d |
Once you have the dependencies installed, you can build Zed using Cargo.
For a debug build of the editor:
| 1 | cargo run |
And to run the tests:
| 1 | cargo test --workspace |
In release mode, the primary user interface is the cli crate. You can run it in development with:
| 1 | cargo run -p cli |
You can install a local build on your machine with:
| 1 | ./script/install-linux |
This will build zed and the cli in release mode and make them available at ~/.local/bin/zed, installing .desktop files to ~/.local/share.
If you'd like to install things to a different prefix you can use:
| 1 | ./script/install-linux /usr/ |
In this case the binary will be /usr/bin/zed and the .desktop file in /usr/share. The script should prompt for sudo as required so that the rust build runs as the current user.
Zed has basic support for both modes. The mode is selected at runtime. If you're on wayland and want to run in X11 mode, you can set WAYLAND_DISPLAY='' cargo run to do so.
Thank you for taking on the task of packaging Zed!
Zed has two main binaries:
crates/cli and make it's binary available in $PATH with the name zed.crates/zed and put it at $PATH/to/cli/../../libexec/zed-editor. For example, if you are going to put the cli at ~/.local/bin/zed put zed at ~/.local/libexec/zed-editor..desktop file you can find a template in crates/zed/resources/zed.desktop.in, and use envsubst to populate it with the values required. This file should also be renamed to $APP_ID.desktop, so that the file follows the FreeDesktop standards.ZED_UPDATE_EXPLANATION. For example: ZED_UPDATE_EXPLANATION="Please use flatpak to update zed.".At Zed, our priority has been to move fast and bring the latest technology to our users. We've long been frustrated at having software that is slow, out of date, or hard to configure, and so we've built our editor to those tastes.
However, we realize that many distros have other priorities. We want to work with everyone to bring Zed to their favorite platforms. But there is a long way to go:
zed binaries that may be present on linux systems (1, 2). If you want to rename our CLI binary because of these issues, we suggest zedit, zeditor, or zed-cli.[!WARNING] Zed's current Flatpak integration simply exits the sandbox on startup. Workflows that rely on Flatpak's sandboxing may not work as expected.
To build & install the Flatpak package locally follow the steps below:
script/flatpak/deps script to install the required dependencies.script/flatpak/bundle-flatpak.target/release/{app-id}.flatpak.Before reporting the issue, make sure that you have the latest rustc version with rustup update.
Try cargo clean and cargo build.
If Zed crashes at runtime due to GPU or vulkan issues, you can try running vkcube (usually available as part of the vulkaninfo package on various distributions) to try to troubleshoot where the issue is coming from. Try running in both X11 and wayland modes by running vkcube -m [x11|wayland]. Some versions of vkcube use vkcube to run in X11 and vkcube-wayland to run in wayland.
If you have multiple GPUs, you can also try running Zed on a different one (for example, with vkdevicechooser) to figure out where the issue comes from.