Three install paths ship for Linux: a `.deb` package, an AppImage, and a
raw tarball. Pick whichever matches your distribution and tolerance for
system-managed packages. The AppImage is the universal default and
needs no root.

  The Linux build needs Vulkan. On Wayland, install your distribution's
  Vulkan loader (`libvulkan1` on Debian-family, `vulkan-loader` on Fedora,
  `vulkan-icd-loader` on Arch). The `.deb` package declares this and the
  other GUI dependencies for you; the AppImage and tarball expect them to
  already be present.

## How do I install Paneflow on Ubuntu or Debian? [#how-do-i-install-paneflow-on-ubuntu-or-debian]

Download the `.deb` for your architecture from the [latest release](https://github.com/ArthurDEV44/paneflow/releases/latest)
and install it with `apt`. The package declares its system dependencies
(`libvulkan1`, `libxcb1`, `libxkbcommon0`, `libfontconfig1`, and a few
more), so `apt` pulls anything you are missing.

```bash
curl -LO https://github.com/ArthurDEV44/paneflow/releases/download/v0.2.16/paneflow-0.2.16-x86_64.deb
sudo apt install ./paneflow-0.2.16-x86_64.deb
```

For ARM64 (Raspberry Pi 5, Ampere, AWS Graviton), swap `x86_64` for
`aarch64`:

```bash
curl -LO https://github.com/ArthurDEV44/paneflow/releases/download/v0.2.16/paneflow-0.2.16-aarch64.deb
sudo apt install ./paneflow-0.2.16-aarch64.deb
```

The binary lands at `/usr/bin/paneflow`. Uninstall later with
`sudo apt remove paneflow`.

## How do I install Paneflow as an AppImage? [#how-do-i-install-paneflow-as-an-appimage]

The AppImage is a single executable that runs on any modern Linux. No
root, no package manager, no install step.

```bash
curl -LO https://github.com/ArthurDEV44/paneflow/releases/download/v0.2.16/paneflow-0.2.16-x86_64.AppImage
chmod +x paneflow-0.2.16-x86_64.AppImage
./paneflow-0.2.16-x86_64.AppImage
```

  Ubuntu 24.04 and other recent distros ship without FUSE 2 by default and
  will refuse to mount the AppImage. If you see `dlopen(): error loading libfuse.so.2`,
  run with the extract-and-run fallback:

  ```bash
  ./paneflow-0.2.16-x86_64.AppImage --appimage-extract-and-run
  ```

  Or install FUSE 2 once with `sudo apt install libfuse2t64`.

To launch from anywhere, move the AppImage into `~/.local/bin` and
rename it:

```bash
mkdir -p ~/.local/bin
mv paneflow-0.2.16-x86_64.AppImage ~/.local/bin/paneflow
chmod +x ~/.local/bin/paneflow
```

## How do I install Paneflow from a tarball? [#how-do-i-install-paneflow-from-a-tarball]

Use the tarball when you want full control over where the binary lives
or when you are scripting a non-interactive install.

```bash
curl -LO https://github.com/ArthurDEV44/paneflow/releases/download/v0.2.16/paneflow-0.2.16-x86_64.tar.gz
tar -xzf paneflow-0.2.16-x86_64.tar.gz
mkdir -p ~/.local/bin
mv paneflow ~/.local/bin/
chmod +x ~/.local/bin/paneflow
```

The tarball extracts a single `paneflow` binary. Drop it anywhere on
your `PATH`. If `~/.local/bin` is not yet on your `PATH`, see the
[troubleshooting section](#what-if-paneflow-is-not-found-in-my-path)
below.

## How do I verify the installation? [#how-do-i-verify-the-installation]

Run `paneflow --version`. The expected output:

```text
paneflow 0.2.x
```

If you see the version printed, the binary is on your `PATH` and the
GPU dependencies resolved. Launch the editor with:

```bash
paneflow
```

The first run opens an empty workspace with a single shell pane. Press
`Ctrl+Shift+D` to split horizontally or `Ctrl+Shift+E` to split
vertically.

## What if `paneflow` is not found in my PATH? [#what-if-paneflow-is-not-found-in-my-path]

If `paneflow --version` returns `command not found`, the binary is not
on your shell's `PATH`. Almost always this means you used the tarball or
AppImage path and dropped the binary into `~/.local/bin`, which some
distributions do not put on `PATH` by default.

Add it once per shell:

**bash** (`~/.bashrc`):

```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

**zsh** (`~/.zshrc`):

```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```

**fish** (`~/.config/fish/config.fish`):

```fish
fish_add_path ~/.local/bin
```

`fish_add_path` persists to the universal variable `fish_user_paths`,
so the change survives reboots. Open a new terminal for it to take
effect in the current session.

Then re-run `paneflow --version`. If it still fails, confirm the binary
is executable (`ls -l ~/.local/bin/paneflow` should show `-rwxr-xr-x`)
and that you copied the binary, not the `.tar.gz`.