--- title: Setup for Linux --- import Alert from '@theme/Alert' import Icon from '@theme/Icon' import { Intro } from '@theme/SetupDocs' import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ## 1. System Dependencies  ```sh $ sudo apt update && sudo apt install libwebkit2gtk-4.0-dev \ build-essential \ curl \ wget \ libssl-dev \ libgtk-3-dev \ libappindicator3-dev \ patchelf \ librsvg2-dev ``` ```sh $ sudo pacman -Syu && sudo pacman -S --needed \ webkit2gtk \ base-devel \ curl \ wget \ openssl \ appmenu-gtk-module \ gtk3 \ libappindicator-gtk3 \ patchelf \ librsvg \ libvips ``` ```sh $ sudo dnf check-update && sudo dnf install webkit2gtk3-devel.x86_64 \ openssl-devel \ curl \ wget \ libappindicator-gtk3 \ patchelf \ librsvg2-devel \ && sudo dnf group install "C Development Tools and Libraries" ``` ### Optional dependencies: - `libappindicator`: needed to use the system tray feature. - `patchelf` and `librsvg`: needed to bundle `AppImage`. ## 2. Node.js Runtime and Package Manager  ### Node.js (npm included) We recommend using nvm to manage your Node.js runtime. It allows you to easily switch versions and update Node.js. ```sh $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash ``` We have audited this bash script, and it does what it says it is supposed to do. Nevertheless, before blindly curl-bashing a script, it is always wise to look at it first. Here is the file as a mere download link. Once nvm is installed, close and reopen your terminal, then install the latest version of Node.js and npm: ```sh $ nvm install node --latest-npm $ nvm use node ``` If you have any problems with nvm, please consult their project readme. ### Optional Node.js Package Manager You may want to use an alternative to npm: - Yarn, is preferred by Tauri's team - pnpm ## 3. Rustc and Cargo Package Manager  The following command will install rustup, the official installer for Rust. ```bash $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` We have audited this bash script, and it does what it says it is supposed to do. Nevertheless, before blindly curl-bashing a script, it is always wise to look at it first. Here is the file as a mere download link. To make sure that Rust has been installed successfully, run the following command: ```sh $ rustc --version latest update on 2019-12-19, rust version 1.40.0 ``` You may need to restart your terminal if the command does not work. ## 4. For Windows Subsystem for Linux (WSL) Users  In order to run a graphical application with WSL, you need to download **one** of these X servers: Xming, Cygwin X, and vcXsrv. Since vcXsrv has been used internally, it's the one we recommend to install. ### WSL Version 1 Open the X server and then run `export DISPLAY=:0` in the terminal. You should now be able to run any graphical application via the terminal. ### WSL Version 2 You'll need to run a command that is slightly more complex than WSL 1: `export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0` and you need to add `-ac` to the X server as an argument. Note: if for some reason this command doesn't work you can use an alternative command such as: `export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | sed 's/.* //g'):0` or you can manually find the Address using `cat /etc/resolve.conf | grep nameserver`. Don't forget that you'll have to use the "export" command anytime you want to use a graphical application, for each newly opened terminal. You can download some examples to try with `sudo apt-get install x11-apps`. xeyes is always a good one. It can be handy when troubleshooting WSL issues. ## Continue Now that you have set up the Linux-specific dependencies for Tauri, learn how to [add Tauri to your project](/docs/development/integration).