| title | How to install FlashPaste on Ubuntu, Debian, Fedora, and Pop!_OS | |||||||
|---|---|---|---|---|---|---|---|---|
| description | Complete installation guide for FlashPaste on GNOME Wayland. Covers the Debian / Ubuntu .deb package, the curl-bootstrap one-liner, source builds, per-distro notes, post-install activation, the flashpaste-doctor pre-flight, and verification with kitty and tmux. | |||||||
| keywords |
|
|||||||
| last_updated | 2026-05-19 | |||||||
| canonical | https://github.com/NagyVikt/flashpaste/blob/main/docs/install.md |
This page covers every supported install path in depth. The 30-second version lives in the project README. Use this page when something didn't work, when you're on a less-common distro, or when you want to know exactly what the installer is doing.
FlashPaste is only useful on the GNOME Wayland + kitty + tmux stack. If you tick all three, you're in:
- GNOME on Wayland (mutter compositor) — Ubuntu 24.04+, Fedora 40+, Debian 13, Pop!_OS 24.04+
- kitty terminal with
allow_remote_control yes - tmux running inside kitty
- A terminal LLM agent: Claude Code, Codex CLI, Aider, or anything that consumes raw Ctrl-V as an image-paste sentinel
System dependencies:
# Debian / Ubuntu / Pop!_OS
sudo apt install wl-clipboard xclip xsel ydotool ydotoold tmux kitty
# Fedora
sudo dnf install wl-clipboard xclip xsel ydotool tmux kitty
# Arch (community + AUR)
sudo pacman -S wl-clipboard xclip xsel ydotool tmux kittycurl -fsSL -o /tmp/flashpaste.deb \
https://github.com/NagyVikt/flashpaste/releases/latest/download/flashpaste_all.deb
sudo apt install /tmp/flashpaste.debPer-user activation (one time):
systemctl --user daemon-reload
systemctl --user enable --now flashpasted.service
systemctl --user enable --now clipboard-janitor.service
systemctl --user enable --now flashpaste-screenshot-watcher.path
cat /usr/share/flashpaste/examples/tmux.conf.snippet >> ~/.tmux.conf
cat /usr/share/flashpaste/examples/kitty.conf.snippet >> ~/.config/kitty/kitty.conf
ln -sf /usr/share/flashpaste/paste_image.sh ~/paste_image.sh
flashpaste-doctorThen reload tmux (tmux source-file ~/.tmux.conf) and restart kitty.
git clone https://github.com/NagyVikt/flashpaste.git
cd flashpaste
make deb # → dist/flashpaste_*_all.deb
sudo apt install ./dist/flashpaste_*_all.debThe make deb target auto-includes the Rust binaries if rs/target/release/* already exists. Build the Rust workspace first (cargo build --release --locked --manifest-path rs/Cargo.toml) to get a .deb with Tier 2 and Tier 3 bundled.
To include the agent overlay daemon and flashpaste-overlay client in a local .deb, install the Cairo/Pango/GLib development headers and build the overlay package with the Wayland renderer before make deb:
sudo apt install pkg-config libcairo2-dev libglib2.0-dev libpango1.0-dev
cargo build --release --locked --manifest-path rs/Cargo.toml -p flashpaste-overlayd --features wayland
make debcurl -fsSL https://raw.githubusercontent.com/NagyVikt/flashpaste/main/bootstrap.sh | bashThe bootstrap script clones to $FLASHPASTE_DIR (default ~/.local/share/flashpaste), runs flashpaste-doctor for a 17-check pre-flight, then install.sh to symlink scripts into ~/.local/bin/ and drop systemd user units. No root required; nothing under /etc/ or /usr/ is touched.
Override the install location:
FLASHPASTE_DIR=$HOME/code/flashpaste bash bootstrap.shgit clone https://github.com/NagyVikt/flashpaste.git ~/.local/share/flashpaste
cd ~/.local/share/flashpaste
./bin/flashpaste-doctor.sh # pre-flight only — touches nothing
./install.sh # symlinks + systemd unitsThe bash hot path (Tier 1) is always installed. Tier 2 (flashpaste-dispatch) and Tier 3 (flashpasted + flashpaste-trigger) require Rust:
cd ~/.local/share/flashpaste/rs
cargo build --release --locked
install -m 0755 target/release/flashpaste-{dispatch,trigger,shoot} \
target/release/flashpasted \
~/.local/bin/
# Enable the daemon (Tier 3)
cat > ~/.config/systemd/user/flashpasted.service <<'EOF'
[Unit]
Description=flashpaste daemon (clipboard owner + paste dispatcher)
After=graphical-session.target
PartOf=graphical-session.target
[Service]
Type=simple
ExecStart=%h/.local/bin/flashpasted
Restart=on-failure
RestartSec=2
Environment=RUST_LOG=info
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now flashpasted.serviceThe tmux + kitty snippets in examples/ already invoke flashpaste-trigger with a fallback to the bash dispatcher — once the daemon is up, Tier 3 takes over automatically with no dotfile edits required.
Note:
cargo buildhits crates.io. Run it interactively when you trust the workspace, not as part of an unattended install.
Ubuntu 24.04 ships ydotool 0.1.8, which ignores --socket-path and always opens /tmp/.ydotool_socket. FlashPaste assumes $XDG_RUNTIME_DIR/.ydotool_socket. The .deb installs a systemd drop-in; the bootstrap installer creates one too. To do it manually:
# ~/.config/systemd/user/ydotoold.service.d/socket.conf
[Service]
ExecStartPost=ln -sf /tmp/.ydotool_socket %t/.ydotool_socket
ExecStopPost=rm -f %t/.ydotool_socketThen:
systemctl --user daemon-reload
systemctl --user restart ydotoold.serviceflashpaste-doctor # 17 core environment checks — all should be greenSmoke test:
- Open kitty, attach to a tmux session, run your terminal AI agent inside it.
- Press PrtScr. GNOME drops a PNG into
~/Pictures/Screenshots/. - Right-click in the tmux pane → Paste.
- The image attaches in ~120 ms (Tier 1) or ~15 ms (Tier 3).
If something is off, see troubleshooting.md.
The reference target. The .deb is built and tested against Noble. The ydotool socket-path drop-in is required (see above) and is bundled in the .deb.
Same as Ubuntu. The .deb installs cleanly via sudo apt install ./flashpaste_all.deb.
No .deb, so use the bootstrap installer. ydotool is recent enough that the socket-path drop-in is not required, but installing it is a no-op.
Identical to Ubuntu — the .deb installs cleanly.
Use the bootstrap installer. Optional AUR packaging is on the roadmap.
Not officially supported. The Rust binaries are static enough to drop into a flake; the bash dispatchers depend on bash, xclip, wl-clipboard, kitty, and tmux being on PATH.
# Dotfile install
cd ~/.local/share/flashpaste && make uninstall
# .deb install
sudo apt remove flashpasteYour dotfile snippets stay where they are — remove them by hand from ~/.tmux.conf and ~/.config/kitty/kitty.conf if you want a clean slate.