
ping #6687 This is the third iteration of this PR ([v2 here](https://github.com/zed-industries/zed/pull/11949)) and uses a different approach to the first two (the process wrapper lib was a maintainability nightmare). While the first two attempted to spawn the necessary processes using flatpak-spawn and host-spawn from the app inside the sandbox, this version first spawns the cli binary which then restart's itself *outside* of the sandbox using flatpak-spawn. The restarted cli process than can call the bundled app binary normally, with no need for flatpak-spawn because it is already outside of the sandbox. This is done instead of keeping the cli in the sandbox because ipc becomes very difficult and broken when trying to do it across the sandbox. Gnome software (example using nightly channel and release notes generated using the script): <img src="https://github.com/zed-industries/zed/assets/81528246/6391d217-0f44-4638-9569-88c46e5fc4ba" width="600"/> TODO in this PR: - [x] Bundle libs. - [x] Cleanup release note converter. Future work: - [ ] Auto-update dialog - [ ] Flatpak auto-update (complete 'Auto-update dialog' first) - [ ] Experimental [bundle](https://docs.flatpak.org/en/latest/single-file-bundles.html) releases for feedback (?). *(?) = Maybe / Request for feedback* Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com> Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
99 lines
3.1 KiB
Markdown
99 lines
3.1 KiB
Markdown
# Building Zed for Linux
|
|
|
|
## Repository
|
|
|
|
Clone down the [Zed repository](https://github.com/zed-industries/zed).
|
|
|
|
## Dependencies
|
|
|
|
- Install [Rust](https://www.rust-lang.org/tools/install). If it's already installed, make sure it's up-to-date:
|
|
|
|
```bash
|
|
rustup update
|
|
```
|
|
|
|
- Install the necessary system libraries:
|
|
|
|
```bash
|
|
script/linux
|
|
```
|
|
|
|
If you prefer to install the system libraries manually, you can find the list of required packages in the `script/linux` file.
|
|
|
|
## Backend dependencies
|
|
|
|
> [!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:
|
|
|
|
- Install [Postgres](https://www.postgresql.org/download/linux/)
|
|
- Install [Livekit](https://github.com/livekit/livekit-cli) and [Foreman](https://theforeman.org/manuals/3.9/quickstart_guide.html)
|
|
|
|
Alternatively, if you have [Docker](https://www.docker.com/) installed you can bring up all the `collab` dependencies using Docker Compose:
|
|
|
|
```sh
|
|
docker compose up -d
|
|
```
|
|
|
|
## Building from source
|
|
|
|
Once you have the dependencies installed, you can build Zed using [Cargo](https://doc.rust-lang.org/cargo/).
|
|
|
|
For a debug build:
|
|
|
|
```
|
|
cargo run
|
|
```
|
|
|
|
For a release build:
|
|
|
|
```
|
|
cargo run --release
|
|
```
|
|
|
|
For a release package:
|
|
|
|
```
|
|
cargo build --release
|
|
```
|
|
|
|
the binary can be found in `target/release` folder.
|
|
|
|
And to run the tests:
|
|
|
|
```
|
|
cargo test --workspace
|
|
```
|
|
|
|
## Wayland & X11
|
|
|
|
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.
|
|
|
|
## Flatpak
|
|
|
|
> [!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:
|
|
|
|
1. Install Flatpak for your distribution as outlined [here](https://flathub.org/setup).
|
|
2. Run the `script/flatpak/deps` script to install the required dependencies.
|
|
3. Run `script/flatpak/bundle-flatpak`.
|
|
4. Now the package has been installed and has a bundle available at `target/release/{app-id}.flatpak`.
|
|
|
|
## Troubleshooting
|
|
|
|
### Can't compile zed
|
|
|
|
Before reporting the issue, make sure that you have the latest rustc version with `rustup update`.
|
|
|
|
### Cargo errors claiming that a dependency is using unstable features
|
|
|
|
Try `cargo clean` and `cargo build`.
|
|
|
|
### Vulkan/GPU issues
|
|
|
|
If Zed crashes at runtime due to GPU or vulkan issues, you can try running [vkcube](https://github.com/krh/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](https://github.com/jiriks74/vkdevicechooser)) to figure out where the issue comes from.
|