Open-Source Screenshot Tools for Linux
Compare Flameshot, Ksnip, Shutter and Spectacle on Linux, including Wayland support, annotations, CLI capture, installation and troubleshooting.
Short answer: Start with Flameshot if you want fast region captures, built-in annotation and command-line control. Choose Ksnip when Wayland and portal support, delayed captures, uploads or scripting are central. Choose Spectacle for native KDE Plasma integration and background command-line capture. Choose Shutter if you need its GTK workflow or website-capture feature.
Your display session matters. X11, GNOME Wayland, Plasma Wayland and portal-based capture can behave differently, especially for global shortcuts and screen selection. Test the exact compositor and distribution release you deploy.
Quick comparison
| Tool | Best fit | Wayland notes | Annotations | CLI or scripting |
|---|---|---|---|---|
| Flameshot | Fast interactive regions with markup | GNOME and Plasma Wayland support is experimental | Arrows, highlights, blur or pixelation, text, borders, counters and boxes | Yes |
| Ksnip | Wayland coverage, delayed shots and uploads | Documents GNOME Wayland, Plasma Wayland and xdg-desktop-portal Wayland | Rich annotation tools | Yes; global hotkeys on Linux are currently limited to X11 |
| Spectacle | KDE Plasma desktops | Best integrated with Plasma | Desktop-integrated annotation workflow | Yes, including background mode |
| Shutter | GTK users and website capture | Verify behavior on your session | Feature-rich editor | Yes; website capture uses gnome-web-photo |
1. Flameshot: the best general starting point
Flameshot is free and open-source screenshot software with an editor, customization and a command-line interface. Its editor can draw arrows, highlights, blur or pixelate sensitive areas, add text, borders, counters and solid color boxes. The project publishes packages for Arch, Debian, Ubuntu, Fedora, NixOS, Guix, openSUSE, Void, Solus and ALT, plus AppImage and Flatpak distributions.
Install
Use your distribution package when available, or follow the official installation instructions for AppImage and Flatpak. Package versions and desktop integration can differ between releases.
# Debian or Ubuntu
sudo apt install flameshot
# Fedora
sudo dnf install flameshot
# Flatpak
flatpak install flathub org.flameshot.Flameshot
Interactive and command-line captures
# Select a region interactively
flameshot gui
# Capture the entire screen and write a PNG
flameshot full -p "$HOME/Pictures/screenshot.png"
# Capture a specific screen when supported by your version
flameshot screen -p "$HOME/Pictures/screen.png"
# Print available options
flameshot --help
Run flameshot config to set the save directory, filename behavior, colors and other preferences. Bind flameshot gui to a desktop shortcut for one-key region capture.
Wayland considerations
Flameshot documents GNOME and Plasma Wayland support as experimental. On Wayland, the compositor and portal implementation control what a screenshot application can see. If a shortcut does nothing, launch the command manually, check the desktop portal, and test an X11 session to isolate the cause.
2. Ksnip: strong Wayland and automation coverage
Ksnip is a Qt screenshot and annotation tool supporting Linux X11, Plasma Wayland, GNOME Wayland and xdg-desktop-portal Wayland. It supports rectangular, focused-window and full-screen captures, cursor options, delayed capture, annotations, Imgur and FTP uploads, script-based uploads and command-line operation. PDF and PS output are available through its desktop packages.
# Install from Flathub
flatpak install flathub org.ksnip.ksnip
# Start the application
ksnip
# Inspect options provided by the installed version
ksnip --help
Use Ksnip’s settings to choose the capture mode, delay, cursor visibility, output format and upload target. Global hotkeys on Linux are currently available only on X11; on Wayland, use your desktop’s shortcut system or start Ksnip directly.
When Ksnip is the better choice
- You need documented GNOME Wayland, Plasma Wayland and portal support.
- You need a delay for menus, tooltips or transient windows.
- You want annotations and an upload or post-processing script in the same workflow.
- You need focused-window and full-screen modes in addition to a rectangle.
3. Spectacle: native KDE capture and background jobs
Spectacle is KDE’s Linux screenshot utility. It fits Plasma shortcuts, notifications and desktop settings, and its command-line interface includes a background mode that can capture without showing the GUI or requiring interaction.
# Install on Debian or Ubuntu systems with KDE packages
sudo apt install spectacle
# Start the graphical tool
spectacle
# Background capture to a file (check --help for version-specific switches)
spectacle -b -n -o "$HOME/Pictures/spectacle.png"
# View all options
spectacle --help
Use the graphical settings or Plasma System Settings to assign shortcuts for full-screen, current-window and rectangular captures. For unattended scripts, confirm the output path and options on the installed Spectacle version before deploying.
4. Shutter: GTK workflow and website capture
Shutter is a feature-rich GPLv3 screenshot program for Linux. It provides a GTK-oriented workflow and documents website capture using gnome-web-photo. This makes it useful when you need a browser-rendered page rather than only a desktop region.
# Install on Debian or Ubuntu systems where packaged
sudo apt install shutter
# Start the application
shutter
# See the switches available in your release
shutter --help
Because website capture depends on the installed browser helper and desktop libraries, verify the feature after upgrades. For a repeatable web-page pipeline, a browser automation tool or an API is usually easier to operate than a desktop application.
How to choose by task
| Need | Recommended choice | Why |
|---|---|---|
| Quick region capture and markup | Flameshot | Fast editor, configurable shortcuts and broad packaging |
| GNOME or Plasma Wayland | Ksnip | Explicitly documents both Wayland sessions and portal capture |
| KDE Plasma integration | Spectacle | Native desktop behavior and background capture |
| Website capture from a GTK workflow | Shutter | Includes website capture through gnome-web-photo |
| Unattended web screenshots at scale | ScreenshotNeo | One HTTP request, cleanup before capture and billing only for clean shots |
Wayland checklist
- Identify the session with
echo $XDG_SESSION_TYPE. - Record the compositor and desktop version.
- Install and enable the desktop’s screenshot or portal components.
- Test full-screen, window and region capture separately.
- Test keyboard shortcuts and pointer selection; they can have different portal permissions.
- Check whether the application documents your exact session as supported.
- Keep a fallback shortcut or use the desktop’s native screenshot utility.
Command-line and automation patterns
Save predictable files
mkdir -p "$HOME/Pictures/captures"
file="$HOME/Pictures/captures/$(date +%Y%m%d-%H%M%S).png"
flameshot full -p "$file"
printf 'Saved %s\n' "$file"
Run from a script
#!/usr/bin/env bash
set -euo pipefail
out="${1:-$HOME/Pictures/automated.png}"
mkdir -p "$(dirname "$out")"
flameshot full -p "$out"
test -s "$out"
For scheduled jobs, use absolute paths, create the destination directory, check the exit status and verify that the output file is non-empty. Desktop applications may require an active graphical session and a valid DISPLAY or Wayland environment.
Or skip the browser setup
For website screenshots, ScreenshotNeo handles the browser session behind one API call. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups and chat widgets; each cleanup step can be disabled. Bot checks, blank pages, timeouts, failed loads and cache hits cost nothing, and response headers report the page verdict and whether the shot was billed. An MCP server provides take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients.
See the ScreenshotNeo API documentation for all options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
You can also capture a full page with lazy images loaded, select one element by CSS selector, set a device or viewport, use dark mode, retina scale, custom CSS or JavaScript, click before capture, hide selectors, wait for a selector, delay or network idle, block requests or resource types, provide headers, cookies, user agent, authorization, timezone or geolocation, create PDFs, resize images, cache with a chosen TTL, sign public image links, run async jobs with signed webhooks, capture up to 100 URLs per bulk call and query usage. Every feature is on every plan. The Free plan includes 1,000 screenshots each month with no card; paid plans start at $5 for 3,000.
Create a free ScreenshotNeo account and start with 1,000 screenshots per month without a card.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Shortcut does nothing on Wayland | Portal or compositor restrictions; unsupported global shortcut | Run the tool directly, configure a desktop shortcut, check portal packages and test the documented session support |
| Black or empty capture | Permission, portal or GPU integration problem | Update the desktop portal and application, retry another capture mode and compare with the native desktop tool |
| Window is missing | Window moved to another workspace or not exposed to the portal | Use full-screen or region capture and confirm the window is visible before capture |
| CLI works manually but fails in cron | No graphical session or environment variables | Run inside the user session, provide required display variables and use an absolute output path |
| Website capture fails in Shutter | gnome-web-photo or browser dependency is missing | Install the helper required by your release or use a browser automation/API workflow |
| Output file is empty | Capture command failed or destination is unwritable | Check the exit code, permissions and parent directory, then test with a local path |
Performance, reliability and cost
- Desktop tools: Interactive captures are usually fastest when the image is already on screen. Full-screen and high-scale images use more memory. Saving to a local filesystem avoids network delays.
- Wayland: Reliability depends on the compositor, portal version and permissions. Pin versions in managed environments and test after desktop upgrades.
- Automation: Use deterministic paths, explicit delays for transient UI, exit-code checks and file-size checks. Keep a fallback capture method for unattended jobs.
- Web pages: A desktop tool captures what is visible in a local browser. It does not automatically handle consent banners, bot checks, lazy loading or repeatable remote rendering.
- ScreenshotNeo: Clean shots are billed; bot checks, blank pages, timeouts, failed loads and cache hits are not. The response includes
X-Page-VerdictandX-Billedheaders. Choose a cache TTL and use bulk or asynchronous jobs when many URLs must be processed.
FAQ
Which tool is best for most Linux users?
Flameshot is the strongest general starting point for interactive capture, annotation and CLI control. Check its Wayland status on your exact desktop before standardizing it.
Which tool has the clearest Wayland coverage?
Ksnip explicitly lists X11, Plasma Wayland, GNOME Wayland and xdg-desktop-portal Wayland support. Shortcut behavior still differs by session.
Can I take screenshots without opening a GUI?
Yes. Flameshot, Ksnip and Spectacle provide command-line workflows. Spectacle documents a background mode for unattended captures.
Are these tools suitable for remote website monitoring?
They can capture a browser running in a graphical session, but repeatable remote page rendering is simpler with an API such as ScreenshotNeo.
Do Wayland screenshots work identically across distributions?
No. Compositor, portal, desktop and package versions affect permissions, shortcuts and capture modes. Verify the exact environment you ship.
