Annotate Screenshots with Flameshot
Install Flameshot, set a Print Screen shortcut, annotate captures with arrows and blur, upload to Imgur or a self-hosted server, and handle Wayland quirks.
Before you start
- ▸A graphical desktop environment (GNOME, KDE, XFCE, or a tiling WM)
- ▸sudo or root access for package installation
- ▸xdg-desktop-portal installed if running Wayland
Flameshot is one of the few screenshot tools that combines fast capture, a full annotation toolkit, and optional cloud upload in a single lightweight application. It works on X11 out of the box and has made steady progress on Wayland — usable today with a few caveats. This guide walks through installation, setting a global keyboard shortcut, annotating captures, and uploading results.
Install Flameshot
Debian / Ubuntu
sudo apt update && sudo apt install flameshot
Fedora
sudo dnf install flameshot
RHEL 9 / Rocky Linux 9
Enable EPEL first, then install:
sudo dnf install epel-release
sudo dnf install flameshot
Arch Linux
sudo pacman -S flameshot
Verify the installed version — you want at least 12.x for Wayland improvements:
flameshot --version
Set a Global Keyboard Shortcut
Most desktop environments do not wire up Flameshot automatically. Set Print Screen (or any key you prefer) to launch it.
GNOME (Settings → Keyboard → Custom Shortcuts)
- Open Settings → Keyboard → View and Customize Shortcuts → Custom Shortcuts.
- Click +, name it "Flameshot", set command to
flameshot gui. - Assign Print Screen as the shortcut.
KDE Plasma (System Settings → Shortcuts)
- Go to System Settings → Shortcuts → Custom Shortcuts.
- Create a new Global Shortcut → Command/URL entry.
- Command:
flameshot gui, trigger: Print.
XFCE / Other WMs
Use your DE's keyboard settings or a tool like xbindkeys. For XFCE, go to Settings → Keyboard → Application Shortcuts and add flameshot gui bound to Print.
systemd autostart (optional, for system tray)
Running Flameshot in the tray gives faster startup and lets you access its history. Create an autostart entry:
mkdir -p ~/.config/autostart
cp /usr/share/applications/org.flameshot.Flameshot.desktop ~/.config/autostart/
Or enable the included systemd user service if your distro ships it:
systemctl --user enable --now flameshot
Capture and Annotate
Press your shortcut (or run flameshot gui from a terminal). The screen dims and a crosshair appears. Click and drag to select the region you want to capture.
The annotation toolbar appears at the edge of your selection. Key tools:
- Pencil / Marker — freehand drawing.
- Rectangle / Circle — outline or filled shapes to highlight areas.
- Arrow — point at specific elements.
- Text — add labels; click the tool, then click where you want text.
- Pixelate / Blur — hide sensitive data before sharing.
- Color picker & thickness slider — bottom-left of the toolbar.
- Undo —
Ctrl+Zworks at any point.
When you are satisfied, click the floppy-disk (Save) icon to write a PNG to disk, or the clipboard icon to copy directly. The default save path is ~/Pictures; change it under Flameshot → Configuration → General → Save Path.
Upload to Imgur
Flameshot has built-in Imgur upload. After annotating, click the cloud-upload icon in the toolbar. A browser window opens to confirm the upload; the direct link is copied to your clipboard automatically.
You can also upload from the command line without the GUI:
flameshot gui --upload
If you do not want a browser confirmation dialog every time, configure it:
flameshot config --tray false # example: disable tray icon instead
flameshot config --help # list all CLI config flags
Upload to a Self-Hosted Server
Flameshot does not have native support for arbitrary upload targets (ShareX-style), but you can pipe output to a script using the --raw-image flag:
flameshot gui --raw-image | curl -s -F "file=@-" https://your.server/upload.php
A popular self-hosted pairing is Zipline or XBackBone. The pattern is the same: capture raw PNG from Flameshot's stdout, POST it with curl, and parse the JSON response for the URL. Wrap this in a shell script and bind the script to your shortcut instead of flameshot gui directly.
Example wrapper script at ~/.local/bin/flameshot-upload.sh:
#!/usr/bin/env bash
URL=$(flameshot gui --raw-image | \
curl -s -F "file=@-;filename=shot.png" \
-H "Authorization: Bearer YOUR_TOKEN" \
https://your.server/api/upload | \
python3 -c "import sys,json; print(json.load(sys.stdin)['url'])")
echo "$URL" | xclip -selection clipboard
notify-send "Screenshot uploaded" "$URL"
chmod +x ~/.local/bin/flameshot-upload.sh
Wayland Support
Flameshot's Wayland story improved significantly in version 12. The current status:
- GNOME on Wayland: Works via the XDG Desktop Portal screenshot interface. The annotation GUI launches normally. Keyboard shortcuts set through GNOME Settings work. One limitation: Flameshot cannot capture a region of a specific window without a brief full-screen grab first.
- KDE Plasma on Wayland: Functional as of Plasma 5.27 / Flameshot 12. Region selection and annotation work. The system tray icon behaves correctly.
- Sway / wlroots compositors: Requires
xdg-desktop-portal-wlrinstalled and running. Set the environment variable before launching:
export XDG_CURRENT_DESKTOP=sway
flameshot gui
- Fallback — XWayland: If you hit rendering issues, forcing Flameshot onto XWayland is a reliable workaround while native support matures:
DISPLAY=:0 flameshot gui
Check whether your session is X11 or Wayland before debugging:
echo $XDG_SESSION_TYPE
Output will be x11 or wayland.
Verify Everything Works
- Press your keyboard shortcut — the screen should dim and show the crosshair cursor.
- Draw a selection, add a text annotation, and save to
~/Pictures. - Check the file exists:
ls -lt ~/Pictures | head -3 - Test clipboard copy by pasting into an image editor or browser address bar (
Ctrl+Vin most apps that accept images). - If using Imgur upload, verify the returned URL opens the annotated image in a browser.
Troubleshooting
Shortcut does nothing on Wayland / GNOME
GNOME may intercept Print Screen for its own screenshot tool. Go to Settings → Keyboard → System → Screenshots and disable or reassign the conflicting built-in shortcut, then re-set your Flameshot binding.
Blank / black capture on Wayland
Install or restart the XDG portal: systemctl --user restart xdg-desktop-portal. On GNOME also ensure xdg-desktop-portal-gnome is installed. If it persists, use the XWayland fallback above.
Annotation toolbar not visible
With multi-monitor setups, the toolbar sometimes spawns off-screen. Try selecting a region closer to the center of your primary display, or run flameshot config and check the Show Toolbar checkbox.
Imgur upload fails with network error
Imgur's anonymous upload API occasionally rate-limits requests. Try again after a minute, or switch to a self-hosted solution as described above.
Frequently asked questions
- Does Flameshot work on Wayland?
- Yes, with caveats. GNOME and KDE Plasma Wayland sessions work well with Flameshot 12+. Sway requires xdg-desktop-portal-wlr. If you see blank captures, restart xdg-desktop-portal or force XWayland with DISPLAY=:0 flameshot gui.
- How do I change the default save folder?
- Open Flameshot's configuration via the tray icon or run 'flameshot config', then set the Save Path field under the General tab to any directory you prefer.
- Can I use Flameshot without a graphical desktop or tray icon?
- Yes. Run 'flameshot gui' directly from any terminal or script. The tray icon is optional and only provides quicker access and screenshot history.
- Is there a way to take a screenshot on a timer delay?
- Yes. Use 'flameshot gui --delay 3000' to wait 3 seconds before the selection cursor appears, giving you time to open menus or set up the state you want to capture.
- My Imgur uploads are public — is there a private option?
- Imgur's anonymous upload is always public. For private sharing, set up a self-hosted solution like Zipline or XBackBone and use Flameshot's --raw-image flag with a curl upload script.
Related guides
Linux Clipboards Explained (+ Clipboard Managers)
Learn the difference between Linux's PRIMARY and CLIPBOARD selections, use xclip, xsel, and wl-clipboard from the terminal, and manage history with GPaste or Klipper.
Configure LibreOffice for Daily Use
Configure LibreOffice for daily use: set default save formats for MS Office interop, tune autosave, install fonts, and add productivity extensions.
Configure the Touchpad and Multitouch Gestures
Configure Linux touchpad behavior and multitouch gestures using libinput, libinput-gestures, and native GNOME and KDE Plasma settings on both Wayland and X11.
Wayland vs X11: How to Choose and Configure Each
Know when to run Wayland or X11, how to check your current session, switch at login with GDM/SDDM/LightDM, and handle NVIDIA and XWayland edge cases.