---
title: 'Quickstart'
description: 'Welcome to the Quickstart Guide for Wave! Here, you''ll find everything you need to get Wave installed on your system, set up your environment, and dive into the basics of using Wave to enhance your command line experience.'
---

## Installation
<AccordionGroup>
  <Accordion icon="apple" title="MacOS">
    1. There are two ways to get Wave:
       * [Download Wave](https://www.waveterm.dev/download) and drag it into your Application folder.
       * For Homebrew users, run ```brew install --cask wave```
    2. If using brew, get brew commands to work by adding the shellenv command to your *.bashrc* or *.zshrc*, e.g. ```echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.bashrc```
  </Accordion>
  <Accordion icon="linux" title="Linux (.deb, .rpm, .pacman, .AppImage)">
    1. [Download](https://www.waveterm.dev/download) the appropriate package for your system.
    2. Install the package using one of the following methods.

      <Card title=".deb" icon="ubuntu">
         To install Wave Debian-based systems (Ubuntu, Debian, etc.), use one of the following commands.

        `sudo apt install ./Wave-linux-amd64-<version>.deb`

        or

        `sudo dpkg -i Wave-linux-amd64-<version>.deb`
       </Card>
      <Card title=".rpm" icon="fedora">
        On RPM-based Linux distributions (Fedora, CentOS, etc.), Wave can be installed using the `rpm` command (or `dnf` in Fedora).

        `sudo rpm -i Wave-linux-x86_64-<version>.rpm`
    
          or

        `sudo dnf install Wave-linux-x86_64-<version>.rpm`

       </Card>
      <Card title=".pacman" icon="linux">
        For Arch Linux and derivatives, Wave can be installed using the pacman package manager.

        `sudo pacman -U Wave-linux-<arch>-<version>.pacman`

       </Card>
      <Card title=".AppImage" icon="linux">
        AppImage allows you to run the Wave application on any Linux distribution without installing it. 
    
        First, make the AppImage file executable
        `chmod +x Wave-linux-x86_64-<version>.AppImage`

        2. Next, Run Wave
        `./Wave-linux-x86_64-<version>.AppImage`
       </Card>

  </Accordion>

  <Accordion icon="linux" title="Linux (.zip)">
    1. [Download](https://www.waveterm.dev/download) the `.zip` Linux package for Wave.
    2. In your terminal, navigate to the location where you want to install Wave. Then, run the following commands to create a folder and extract the contents of the `.zip` file.
    ```
    mkdir wave
    unzip Waveterm-Linux.zip -d wave
    ```
    3. Run the application:  ```./Wave```
 
    **Optional:**
    You can create a `.desktop` file, allowing you to launch Wave directly.
    After doing the above steps, create a file named `Wave.desktop`, and add the following, modifying the `Exec` and `Icon` paths to point to your Wave installation:

    ```
    [Desktop Entry]
    Type=Application
    Name=Wave
    Icon= /path/to/Wave-linux-*/resources/app/public/waveterm.icns
    Exec=/path/to/Wave-linux-*/Wave
    # setting this to true will launch an extra terminal to run the Wave command
    Terminal=false
    ```

    Run `desktop-file-validate Wave.desktop` to validate that the desktop entry is correct, then run `sudo cp Wave.desktop ~/.local/share/applications/Wave.desktop` to copy the entry into your application list.
    After restarting your desktop environment (or your computer), Wave should be visible in your desktop application list. You can now launch Wave directly from your desktop environment.
    The `.desktop` file scheme is supported by the most commonly used desktop environments such as GNOME, KDE, XFCE, etc. If you encounter issues, you can get help in our Discord or by opening an issue on Github.
  </Accordion>
  <Accordion icon="windows" title="WSL">
    Wave has support for WSL, tested on Ubuntu and Kali distros
    1. [Download](https://www.waveterm.dev/download) the `.zip` Linux package for Wave.
        - In the terminal, use `wget <DOWNLOAD_URL>`
    2. Navigate to the location where you want to install Wave. Then, run the following commands to create a folder and extract the contents of the `.zip` file.
    ```
    mkdir wave
    unzip Waveterm-Linux.zip -d wave
    ```
    3. Change to the Wave directory ```cd wave```
    4. Run the application:  ```./Wave```

    if you run into issues, try running the following 2 commands:
    ```
    sudo apt install libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 \
    libgdk-pixbuf2.0-0 libgtk-3-0 libgbm-dev libnss3-dev libxss-dev
    export DISPLAY=:0 
    ```

  </Accordion>

</AccordionGroup>

## Get Started

You type commands into the input box at the bottom of the screen like normal, and when you hit [return] the command will be executed. You’ll notice that each command is run in its own block. The block groups the command with its output in the terminal screen. The block will expand to fill the screen as more output is received.

### Running Commands

<AccordionGroup>
  <Accordion icon="github" title="Command Status">
    The block headers give information about the command and its status. You'll see the line "number" (useful for referring to commands from the CLI), a status indicator, and a timestamp.  The next line shows what server the command was run against (local means your local machine), the current working directory, and then the command.  When you're in a git directory or a python venv you'll also get additional status showing the git branch or the environment name.
  </Accordion>
  <Accordion icon="rectangle-terminal" title="Preview changes">
    When a command is running, you can interact with it like normal when the command has focus. When commands are initially run they get focus by default, and when they terminate they give focus back to the input box. You can easily shift focus between your commands or the input box using the mouse or “Cmd-I” to focus the input box, and “Cmd-L” to focus a command line. Note that Cmd-I will work in any context to focus the input box. To shift the focus between commands you can use the mouse or “Cmd-UpArrow” / “Cmd-DownArrow” (or Cmd-PageUp/Cmd-PageDown) will move the focus between commands.  When the input box has focus, pressing "return" will always scroll the screen to the bottom.
  </Accordion>
</AccordionGroup>

### Workspaces and Tabs

<AccordionGroup>

<Accordion icon="message-bot" title="Create New Tabs">
  So far we've been working in one tab. You can easily create a new tab by clicking the “+” in the tab bar, or by pressing “Cmd-T”. Switching between tabs can be done with the mouse or by using “Cmd-[digit]” to switch to the nth tab. Cmd-LeftArrow and Cmd-RightArrow will also work to change tabs.
</Accordion>
<Accordion icon="rocket" title="Create New Workspace">
  Wave also has the concept of workspaces. A workspace is just a set of tabs. You can see your workspaces listed in the left column of the UI. You start with 1 workspace named “default”. You can easily create a new workspace by clicking on the "+" left bar next to the label "Workspaces" or by using a “slash-command” (we’ll discuss those later). Each workspace is independent from the others. You can use workspaces to set up custom sets of tabs for different projects, common configurations, or different remote machines. In the future, Wave will support sharing workspaces with your team or having a joint shared workspace that everyone can view and contribute to.

Workspaces and tabs are persistent. The history and state of each tab is preserved across reboots, network disconnections, remote machine reboots, and time. Any command you’ve ever run in Wave will be remembered (unless of course you choose to delete it).
  </Accordion>
</AccordionGroup>
