Clone down the Zed repository.
Install rustup
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.
If you are looking to develop Zed collaboration features using a local collabortation server, please see: Local Collaboration docs.
Once the dependencies are 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.
Note: If you encounter linker errors similar to the following:
bash
1 error: linking with `cc` failed: exit status: 1 ... 2 = note: /usr/bin/ld: /tmp/rustcISMaod/libaws_lc_sys-79f08eb6d32e546e.rlib(f8e4fd781484bd36-bcm.o): in function `aws_lc_0_25_0_handle_cpu_env': 3 /aws-lc/crypto/fipsmodule/cpucap/cpu_intel.c:(.text.aws_lc_0_25_0_handle_cpu_env+0x63): undefined reference to `__isoc23_sscanf' 4 /usr/bin/ld: /tmp/rustcISMaod/libaws_lc_sys-79f08eb6d32e546e.rlib(f8e4fd781484bd36-bcm.o): in function `pkey_rsa_ctrl_str': 5 /aws-lc/crypto/fipsmodule/evp/p_rsa.c:741:(.text.pkey_rsa_ctrl_str+0x20d): undefined reference to `__isoc23_strtol' 6 /usr/bin/ld: /aws-lc/crypto/fipsmodule/evp/p_rsa.c:752:(.text.pkey_rsa_ctrl_str+0x258): undefined reference to `__isoc23_strtol' 7 collect2: error: ld returned 1 exit status 8 = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified 9 = note: use the `-l` flag to specify native libraries to link 10 = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-link-lib) 11 error: could not compile `remote_server` (bin "remote_server") due to 1 previous error Cause: this is caused by known bugs in aws-lc-rs(doesn't support GCC >= 14): FIPS fails to build with GCC >= 14 & GCC-14 - build failure for FIPS module
You can refer to linux: Linker error for remote_server when using script/install-linux for more information.
Workarounds: Set the remote server target to
x86_64-unknown-linux-gnulike soexport REMOTE_SERVER_TARGET=x86_64-unknown-linux-gnu; script/install-linux
Zed supports both X11 and Wayland. By default, we pick whichever we can find at runtime. If you're on Wayland and want to run in X11 mode, use the environment variable WAYLAND_DISPLAY=''.
Thank you for taking on the task of packaging Zed!
Zed has two main binaries:
crates/cli and make its 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. As some linux distributions (notably Arch) discourage the use of libexec, you can also put this binary at $PATH/to/cli/../../lib/zed/zed-editor (e.g. ~/.local/lib/zed/zed-editor) instead..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. You should also make this desktop file executable (chmod 755).ZED_UPDATE_EXPLANATION. For example: ZED_UPDATE_EXPLANATION="Please use flatpak to update zed.".crates/zed/RELEASE_CHANNEL file to 'nightly', 'preview', or 'stable', with no newline. This will cause Zed to use the credentials manager to remember a user's login.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.Zed's current Flatpak integration 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.heaptrack is quite useful for diagnosing memory leaks. To install it:
| 1 | $ sudo apt install heaptrack heaptrack-gui |
| 2 | $ cargo install cargo-heaptrack |
Then, to build and run Zed with the profiler attached:
| 1 | $ cargo heaptrack -b zed |
When this zed instance is exited, terminal output will include a command to run heaptrack_interpret to convert the *.raw.zst profile to a *.zst file which can be passed to heaptrack_gui for viewing.
Try cargo clean and cargo build.