How to Install Zellij on Ubuntu: The Terminal Workspace and Multiplexer
Zellij is a terminal workspace and multiplexer with batteries included. In the same family as tmux and screen, it splits your terminal into panes, groups work into tabs, and keeps sessions alive so you can detach and reattach at will. What sets it apart is discoverability: a live status bar shows the keybindings available in your current mode, so you can get real work done without first learning a manual.
Written in Rust and moving fast, Zellij keeps adding capabilities โ session resurrection, floating panes, a WebAssembly plugin system. The Ubuntu archive tends to carry an older release, and on some versions Zellij is absent entirely. Building from source means installing and maintaining a Rust toolchain.
The unofficial deb.griffo.io repository provides a current Zellij package you manage with apt. Here is the full setup on Ubuntu.
What Makes Zellij Special?
- ๐ Discoverable by design โ the status bar shows the keys for the active mode, so you learn the tool while using it.
- ๐ช Panes, tabs and floating panes โ split, stack and float terminals to match your workflow.
- ๐พ Session persistence โ detach and reattach freely; sessions can even be resurrected after a reboot.
- ๐ Declarative layouts โ capture an entire workspace in a KDL file and launch it in one command.
- ๐ WebAssembly plugins โ extend Zellij with plugins compiled to WASM from any supported language.
- ๐ฑ๏ธ Mouse support โ click to focus, select and resize when you want it.
- ๐จ Themes and styling โ bundled themes plus full control through configuration.
- ๐ Copy mode โ scroll history and copy to the system clipboard.
Why Use the deb.griffo.io Repository?
- Install and update through APT with no manual downloads.
- Automatic dependency management through Debian-style packaging.
- Always tracks upstream so Zellij stays current.
- No source builds and no Rust toolchain to maintain.
- Works across supported Ubuntu releases โ Jammy, Noble and newer.
Prerequisites
You will need:
- An Ubuntu system (Jammy 22.04 LTS, Noble 24.04 LTS, or newer)
sudoprivilegescurlinstalled (sudo apt install curlif it is missing)
Step 1: Add the deb.griffo.io Repository
Install the repository key and add its source list:
# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings
# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
# Update the package list
sudo apt update
What each command does:
- Keyrings directory โ
/etc/apt/keyringsstores third-party keys on modern Ubuntu. - GPG key โ downloaded and de-armoured so APT can verify signed packages.
- Source list โ
lsb_release -scsupplies your Ubuntu codename (for examplenoble). - Update โ refreshes APTโs index.
Step 2: Update the Package List
If you did not run the last command above:
sudo apt update
Step 3: Install Zellij
sudo apt install zellij
APT installs Zellij and any dependencies it needs.
Step 4: Verify the Installation
zellij --version
Expected output:
zellij 0.42.2
Launch your first session with:
zellij
Getting Started with Zellij
Panes, Tabs and Modes
Zellij is organised around modes, each advertised in the status bar. From the default mode:
Ctrl pโ pane mode:nnew pane,dsplit down,rsplit right,xclose, arrows to move focusCtrl tโ tab mode:nnew tab,rrename,xclose,1โ9jump directlyCtrl nโ resize mode: arrow keys grow or shrink the focused paneCtrl sโ scroll/search mode: page through scrollback and search itCtrl qโ quit Zellij
Because each mode key reveals its own bindings in the status bar, there is nothing to memorise up front.
Managing Sessions
Sessions survive disconnects, which makes them ideal on remote Ubuntu servers over SSH:
# Start a named session
zellij --session dev
# List all sessions
zellij list-sessions
# Reattach after disconnecting
zellij attach dev
# Attach to the latest session or create one
zellij attach --create
Detach from a session without ending it with Ctrl o followed by d.
Configuration
Zellij reads ~/.config/zellij/config.kdl. Dump a fully commented default and edit from there:
mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl
Common settings to adjust:
theme "catppuccin-mocha"
default_shell "bash"
pane_frames false
copy_command "xclip -selection clipboard"
Layouts
A layout describes a complete workspace in KDL and starts it in one go. Save this as web.kdl:
layout {
tab name="server" focus=true {
pane command="npm" {
args "run" "dev"
}
}
tab name="work" {
pane split_direction="vertical" {
pane
pane command="hx" {
args "."
}
}
}
}
Then:
zellij --layout ./web.kdl
Drop layouts into ~/.config/zellij/layouts/ to launch them by name, for example zellij --layout web.
Autostart in Your Shell
To open Zellij automatically with each new terminal, append this to ~/.bashrc:
if [[ -z "$ZELLIJ" ]]; then
zellij attach --create
fi
The ZELLIJ check prevents Zellij from nesting inside an existing session.
Keeping Zellij Updated
Zellij updates arrive with your normal Ubuntu upgrades:
sudo apt update && sudo apt upgrade
Other Tools from deb.griffo.io
The repository packages many more terminal tools for Ubuntu:
- Helix โ a post-modern modal editor to run inside a Zellij pane.
- Yazi โ a blazing-fast terminal file manager for another pane.
- Lazydocker โ a simple terminal UI for Docker and docker-compose.
- Zig โ a general-purpose systems programming language.
Troubleshooting
GPG or Key Errors
If APT reports a signature problem, re-install the key:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Package Not Found
If APT cannot find zellij:
- Run
sudo apt updateafter adding the repository. - Confirm your release is supported (Jammy, Noble or newer).
- Check the source list:
cat /etc/apt/sources.list.d/deb.griffo.io.list
Session Lost After SSH Drops
This is exactly what Zellij protects against โ but only if you were inside a session. Start work with zellij attach --create so that when your SSH connection dies, the session keeps running and zellij attach brings it back on reconnect:
zellij list-sessions
zellij attach <name>
Uninstalling
# Remove the Zellij package
sudo apt remove zellij
# Optionally remove the repository
sudo rm -f /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update
Conclusion
Zellij makes terminal multiplexing approachable without sacrificing power โ discoverable keybindings, persistent sessions, floating panes and declarative layouts โ and deb.griffo.io keeps it current on Ubuntu through a single apt install. It is especially valuable on remote servers, where a detached session means an interrupted connection never costs you your work.
Dump a config, sketch your workspace as a layout, and let every future release reach you through your normal apt upgrade.
Resources
Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream Zellij project.