linux.md

  1# Zed on Linux
  2
  3## Standard Installation
  4
  5For most people we recommend using the script on the [download](https://zed.dev/download) page to install Zed:
  6
  7```sh
  8curl -f https://zed.dev/install.sh | sh
  9```
 10
 11We also offer a preview build of Zed which receives updates about a week ahead of stable. You can install it with:
 12
 13```sh
 14curl -f https://zed.dev/install.sh | ZED_CHANNEL=preview sh
 15```
 16
 17The Zed installed by the script works best on systems that:
 18
 19- have a Vulkan compatible GPU available (for example Linux on an M-series macBook)
 20- have a system-wide glibc (NixOS and Alpine do not by default)
 21  - x86_64 (Intel/AMD): glibc version >= 2.31 (Ubuntu 20 and newer)
 22  - aarch64 (ARM): glibc version >= 2.35 (Ubuntu 22 and newer)
 23
 24Both Nix and Alpine have third-party Zed packages available (though they are currently a few weeks out of date). If you'd like to use our builds they do work if you install a glibc compatibility layer. On NixOS you can try [nix-ld](https://github.com/Mic92/nix-ld), and on Alpine [gcompat](https://wiki.alpinelinux.org/wiki/Running_glibc_programs).
 25
 26You will need to build from source for:
 27
 28- architectures other than 64-bit Intel or 64-bit ARM (for example a 32-bit or RISC-V machine)
 29- Redhat Enterprise Linux 8.x, Rocky Linux 8, AlmaLinux 8, Amazon Linux 2 on all architectures
 30- Redhat Enterprise Linux 9.x, Rocky Linux 9.3, AlmaLinux 8, Amazon Linux 2023 on aarch64 (x86_x64 OK)
 31
 32## Other ways to install Zed on Linux
 33
 34Zed is open source, and [you can install from source](./development/linux.md).
 35
 36### Installing via a package manager
 37
 38There are several third-party Zed packages for various Linux distributions and package managers, sometimes under `zed-editor`. You may be able to install Zed using these packages:
 39
 40- Flathub: [`dev.zed.Zed`](https://flathub.org/apps/dev.zed.Zed)
 41- Arch: [`zed`](https://archlinux.org/packages/extra/x86_64/zed/)
 42- Arch (AUR): [`zed-git`](https://aur.archlinux.org/packages/zed-git), [`zed-preview`](https://aur.archlinux.org/packages/zed-preview), [`zed-preview-bin`](https://aur.archlinux.org/packages/zed-preview-bin)
 43- Alpine: `zed` ([aarch64](https://pkgs.alpinelinux.org/package/edge/testing/aarch64/zed)) ([x86_64](https://pkgs.alpinelinux.org/package/edge/testing/x86_64/zed))
 44- Nix: `zed-editor` ([unstable](https://search.nixos.org/packages?channel=unstable&show=zed-editor))
 45- Fedora/Ultramarine (Terra): [`zed`](https://github.com/terrapkg/packages/tree/frawhide/anda/devs/zed/stable), [`zed-preview`](https://github.com/terrapkg/packages/tree/frawhide/anda/devs/zed/preview), [`zed-nightly`](https://github.com/terrapkg/packages/tree/frawhide/anda/devs/zed/nightly)
 46- Solus: [`zed`](https://github.com/getsolus/packages/tree/main/packages/z/zed)
 47- Parabola: [`zed`](https://www.parabola.nu/packages/extra/x86_64/zed/)
 48- Manjaro: [`zed`](https://packages.manjaro.org/?query=zed)
 49- ALT Linux (Sisyphus): [`zed`](https://packages.altlinux.org/en/sisyphus/srpms/zed/)
 50- AOSC OS: [`zed`](https://packages.aosc.io/packages/zed)
 51- openSUSE Tumbleweed: [`zed`](https://en.opensuse.org/Zed)
 52
 53See [Repology](https://repology.org/project/zed-editor/versions) for a list of Zed packages in various repositories.
 54
 55When installing a third-party package please be aware that it may not be completely up to date and may be slightly different from the Zed we package (a common change is to rename the binary to `zedit` or `zeditor` to avoid conflicting with other packages).
 56
 57We'd love your help making Zed available for everyone. If Zed is not yet available for your package manager, and you would like to fix that, we have some notes on [how to do it](./development/linux.md#notes-for-packaging-zed).
 58
 59### Downloading manually
 60
 61If you'd prefer, you can install Zed by downloading our pre-built .tar.gz. This is the same artifact that our install script uses, but you can customize the location of your installation by modifying the instructions below:
 62
 63Download the `.tar.gz` file:
 64
 65- [zed-linux-x86_64.tar.gz](https://zed.dev/api/releases/stable/latest/zed-linux-x86_64.tar.gz) ([preview](https://zed.dev/api/releases/preview/latest/zed-linux-x86_64.tar.gz))
 66- [zed-linux-aarch64.tar.gz](https://zed.dev/api/releases/stable/latest/zed-linux-aarch64.tar.gz)
 67  ([preview](https://zed.dev/api/releases/preview/latest/zed-linux-aarch64.tar.gz))
 68
 69Then ensure that the `zed` binary in the tarball is on your path. The easiest way is to unpack the tarball and create a symlink:
 70
 71```sh
 72mkdir -p ~/.local
 73# extract zed to ~/.local/zed.app/
 74tar -xvf <path/to/download>.tar.gz -C ~/.local
 75# link the zed binary to ~/.local/bin (or another directory in your $PATH)
 76ln -sf ~/.local/zed.app/bin/zed ~/.local/bin/zed
 77```
 78
 79If you'd like integration with an XDG-compatible desktop environment, you will also need to install the `.desktop` file:
 80
 81```sh
 82cp ~/.local/zed.app/share/applications/zed.desktop ~/.local/share/applications/dev.zed.Zed.desktop
 83sed -i "s|Icon=zed|Icon=$HOME/.local/zed.app/share/icons/hicolor/512x512/apps/zed.png|g" ~/.local/share/applications/dev.zed.Zed.desktop
 84sed -i "s|Exec=zed|Exec=$HOME/.local/zed.app/libexec/zed-editor|g" ~/.local/share/applications/dev.zed.Zed.desktop
 85```
 86
 87## Uninstalling Zed
 88
 89### Standard Uninstall
 90
 91If Zed was installed using the default installation script, it can be uninstalled by supplying the `--uninstall` flag to the `zed` shell command
 92
 93```sh
 94zed --uninstall
 95```
 96
 97If there are no errors, the shell will then prompt you whether you'd like to keep your preferences or delete them. After making a choice, you should see a message that Zed was successfully uninstalled.
 98
 99In the case that the `zed` shell command was not found in your PATH, you can try one of the following commands
100
101```sh
102$HOME/.local/bin/zed --uninstall
103```
104
105or
106
107```sh
108$HOME/.local/zed.app/bin.zed --uninstall
109```
110
111The first case might fail if a symlink was not properly established between `$HOME/.local/bin/zed` and `$HOME/.local/zed.app/bin.zed`. But the second case should work as long as Zed was installed to its default location.
112
113If Zed was installed to a different location, you must invoke the `zed` binary stored in that installation directory and pass the `--uninstall` flag to it in the same format as the previous commands.
114
115### Package Manager
116
117If Zed was installed using a package manager, please consult the documentation for that package manager on how to uninstall a package.
118
119## Troubleshooting
120
121Linux works on a large variety of systems configured in many different ways. We primarily test Zed on a vanilla Ubuntu setup, as it is the most common distribution our users use, that said we do expect it to work on a wide variety of machines.
122
123### Zed fails to start
124
125If you see an error like "/lib64/libc.so.6: version 'GLIBC_2.29' not found" it means that your distribution's version of glibc is too old. You can either upgrade your system, or [install Zed from source](./development/linux.md).
126
127### Graphics issues
128
129### Zed fails to open windows
130
131Zed requires a GPU to run effectively. Under the hood, we use [Vulkan](https://www.vulkan.org/) to communicate with your GPU. If you are seeing problems with performance, or Zed fails to load, it is possible that Vulkan is the culprit.
132
133If you see a notification saying `Zed failed to open a window: NoSupportedDeviceFound` this means that Vulkan cannot find a compatible GPU. You can begin troubleshooting Vulkan by installing the `vulkan-tools` package and running:
134
135```sh
136vkcube
137```
138
139This should output a line describing your current graphics setup and show a rotating cube. If this does not work, you should be able to fix it by installing Vulkan compatible GPU drivers, however in some cases (for example running Linux on an Arm-based MacBook) there is no Vulkan support yet.
140
141You can find out which graphics card Zed is using by looking in the Zed log (`~/.local/share/zed/logs/Zed.log`) for `Using GPU: ...`.
142
143If you see errors like `ERROR_INITIALIZATION_FAILED` or `GPU Crashed` or `ERROR_SURFACE_LOST_KHR` then you may be able to work around this by installing different drivers for your GPU, or by selecting a different GPU to run on. (See [#14225](https://github.com/zed-industries/zed/issues/14225))
144
145On some systems the file `/etc/prime-discrete` can be used to enforce the use of a discrete GPU using [PRIME](https://wiki.archlinux.org/title/PRIME). Depending on the details of your setup, you may need to change the contents of this file to "on" (to force discrete graphics) or "off" (to force integrated graphics).
146
147On others, you may be able to the environment variable `DRI_PRIME=1` when running Zed to force the use of the discrete GPU.
148
149If you're using an AMD GPU and Zed crashes when selecting long lines, try setting the `ZED_PATH_SAMPLE_COUNT=0` environment variable. (See [#26143](https://github.com/zed-industries/zed/issues/26143))
150If you're using an AMD GPU, you might get a 'Broken Pipe' error. Try using the RADV or Mesa drivers. (See [#13880](https://github.com/zed-industries/zed/issues/13880))
151
152If you are using Mesa, and want more control over which GPU is selected you can run `MESA_VK_DEVICE_SELECT=list zed --foreground` to get a list of available GPUs and then export `MESA_VK_DEVICE_SELECT=xxxx:yyyy` to choose a specific device.
153
154If you are using `amdvlk` you may find that zed only opens when run with `sudo $(which zed)`. To fix this, remove the `amdvlk` and `lib32-amdvlk` packages and install mesa/vulkan instead. ([#14141](https://github.com/zed-industries/zed/issues/14141)).
155
156For more information, the [Arch guide to Vulkan](https://wiki.archlinux.org/title/Vulkan) has some good steps that translate well to most distributions.
157
158If Vulkan is configured correctly, and Zed is still not working for you, please [file an issue](https://github.com/zed-industries/zed) with as much information as possible.
159
160### I can't open any files
161
162### Clicking links isn't working
163
164These features are provided by XDG desktop portals, specifically:
165
166- `org.freedesktop.portal.FileChooser`
167- `org.freedesktop.portal.OpenURI`
168
169Some window managers, such as `Hyprland`, don't provide a file picker by default. See [this list](https://wiki.archlinux.org/title/XDG_Desktop_Portal#List_of_backends_and_interfaces) as a starting point for alternatives.
170
171### Zed isn't remembering my API keys
172
173### Zed isn't remembering my login
174
175These feature also requires XDG desktop portals, specifically:
176
177- `org.freedesktop.portal.Secret` or
178- `org.freedesktop.Secrets`
179
180Zed needs a place to securely store secrets such as your Zed login cookie or your OpenAI API Keys and we use a system provided keychain to do this. Examples of packages that provide this are `gnome-keyring`, `KWallet` and `keepassxc` among others.
181
182### Could not start inotify
183
184Zed relies on inotify to watch your filesystem for changes. If you cannot start inotify then Zed will not work reliably.
185
186If you are seeing "too many open files" then first try `sysctl fs.inotify`.
187
188- You should see that max_user_instances is 128 or higher (you can change the limit with `sudo sysctl fs.inotify.max_user_instances=1024`). Zed needs only 1 inotify instance.
189- You should see that `max_user_watches` is 8000 or higher (you can change the limit with `sudo sysctl fs.inotify.max_user_watches=64000`). Zed needs one watch per directory in all your open projects + one per git repository + a handful more for settings, themes, keymaps, extensions.
190
191It is also possible that you are running out of file descriptors. You can check the limits with `ulimit` and update them by editing `/etc/security/limits.conf`.
192
193### No sound or wrong output device
194
195If you're not hearing any sound in Zed or the audio is routed to the wrong device, it could be due to a mismatch between audio systems. Zed relies on ALSA, while your system may be using PipeWire or PulseAudio. To resolve this, you need to configure ALSA to route audio through PipeWire/PulseAudio.
196
197If your system uses PipeWire:
198
1991. **Install the PipeWire ALSA plugin**
200
201   On Debian-based systems, run:
202
203   ```bash
204   sudo apt install pipewire-alsa
205   ```
206
2072. **Configure ALSA to use PipeWire**
208
209   Add the following configuration to your ALSA settings file. You can use either `~/.asoundrc` (user-level) or `/etc/asound.conf` (system-wide):
210
211   ```bash
212   pcm.!default {
213       type pipewire
214   }
215
216   ctl.!default {
217       type pipewire
218   }
219   ```
220
2213. **Restart your system**