Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

191 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ShotX Logo
ShotX
Advanced Screenshot & Screen Capture Utility for Linux

Documentation

CI Documentation Build PyPI version GitHub release License Status Python

ShotX

A free, open-source screenshot and screen capture tool for Linux β€” inspired by ShareX.

ShotX brings the power of ShareX to the Linux desktop: instant screen capture, region selection with auto-detect, annotation tools, screen recording, image editing, OCR, and upload to multiple destinations β€” all from a single hotkey press or system tray.

Status: Beta β€” Core features complete, actively maintained.

ShotX Main Window

Features

πŸ“· Screen Capture

  • Fullscreen β€” capture entire screen or specific monitor
  • Region β€” drag-select with auto-detect (windows + AT-SPI2 widgets)
  • Annotation overlay β€” annotate directly during region capture
  • Configurable delay β€” countdown timer before capture
  • Cursor visibility β€” option to include/exclude cursor

✏️ Annotation Tools

Built into both the capture overlay and the standalone editor:

  • Arrow, rectangle, ellipse, text, freehand draw
  • Blur / pixelate, highlight, step numbers
  • Eraser, undo/redo, color picker

πŸŽ₯ Screen Recording

  • Record any region as MP4 or GIF
  • Audio capture (PulseAudio / PipeWire)
  • Wayland (wf-recorder) and X11 (ffmpeg) backends

☁️ Upload Engine

  • Built-in: Imgur, ImgBB, tmpfiles.org
  • Cloud: Amazon S3 / S3-compatible (Backblaze, MinIO, etc.)
  • Protocol: FTP, SFTP
  • Custom: .sxcu format compatible with ShareX custom uploaders
  • URL Shortener: Multiple providers, auto-shorten after upload

🎨 Image Editor

  • QGraphicsView-based canvas with zoom, pan, keyboard shortcuts
  • All annotation tools
  • Crop & resize with interactive handles
  • Effects: borders, shadows, watermarks
  • Beautifier: rounded corners, gradient backgrounds, drop shadow
  • Combiner: horizontal/vertical image stacking

πŸ› οΈ Productivity Tools

  • OCR β€” extract text from any screen region (Tesseract)
  • Color Picker β€” magnifier overlay to pick exact hex color
  • Screen Ruler β€” measure pixel distances and boundaries
  • QR Code β€” scan from screen/clipboard, generate from text
  • Hash Checker β€” file integrity verification (MD5, SHA-1, SHA-256, SHA-512)
  • Pin to Screen β€” pin a captured region as a floating always-on-top window
  • Directory Indexer β€” generate styled HTML index of a directory tree

πŸ“œ History & Image History

  • Thumbnail Grid β€” browse recent captures edge-to-edge in the Main Window
  • Split-View History β€” spreadsheet viewer with live preview panel
  • Search & Filtering β€” find captures by filename, extension, or URL
  • Batch Operations β€” multi-select and delete files/records in bulk
  • ShareX Formats β€” copy links as Markdown, HTML, or plain text codes

πŸ–₯️ Platform Support

  • Wayland-first β€” xdg-desktop-portal D-Bus API for capture
  • X11 fallback β€” XCB/Xlib capture backend
  • Auto-detection of display server

System Dependencies

ShotX is a Python application, but some features require system packages:

Package Required For Install (Ubuntu/Debian)
tesseract-ocr OCR text extraction sudo apt install tesseract-ocr
libzbar0 QR code scanning sudo apt install libzbar0
ffmpeg Screen recording (X11) sudo apt install ffmpeg
wf-recorder Screen recording (Wayland) sudo apt install wf-recorder
grim Screenshot capture (Wayland, sway) sudo apt install grim
slurp Region selection (Wayland, sway) sudo apt install slurp
xclip Clipboard fallback sudo apt install xclip

Note: On GNOME Wayland, capture uses the xdg-desktop-portal β€” no extra packages needed for basic screenshots.

Installation

One-liner (Recommended)

curl -sSL https://shotx.vedeshpadal.me/install.sh | sh

This installs all system dependencies, including OCR, QR scanning, and screen recording.

Native Packages (Ubuntu/Fedora)

Download the latest .deb, .rpm, or AppImage from the GitHub Releases page.

# Ubuntu / Debian
sudo dpkg -i shotx_*.deb

# Fedora / RHEL
sudo rpm -i shotx-*.rpm

# AppImage (any distro)
chmod +x ShotX-*.AppImage && ./ShotX-*.AppImage

The .deb and .rpm packages bundle a private Python runtime β€” no system Python or library conflicts.

Homebrew (Linux)

brew tap vedesh-padal/tap
brew install shotx

PyPI

pip install shotx
# or with uv:
uv tool install shotx

From Source

git clone https://github.com/vedesh-padal/ShotX.git
cd ShotX
uv sync
uv run shotx

Usage

# Launch as system tray app (default)
shotx
shotx --tray

# Screen capture
shotx --capture-fullscreen
shotx --capture-region
shotx --capture-window

# Productivity tools
shotx --ocr                       # OCR: select region β†’ text to clipboard
shotx --color-picker              # Pick color β†’ hex to clipboard
shotx --ruler                     # Measure pixel distances
shotx --qr-scan                   # Scan QR from screen region
shotx --qr-generate               # Generate QR from clipboard text
shotx --qr-scan-clipboard         # Scan QR from clipboard image
shotx --pin-region                # Pin region as floating window

# Standalone tools
shotx --hash                      # Open hash checker
shotx --index-dir [PATH]          # Open directory indexer
shotx --edit [IMAGE]              # Open image editor
shotx --history                   # Open capture history viewer

# URL tools
shotx --shorten-url [URL]         # Shorten URL (reads clipboard if no URL)

# Options
shotx --config-dir PATH           # Override config directory
shotx --verbose                   # Enable colored debug logging

Configuration

Settings are stored in ~/.config/shotx/settings.yaml. Configuration is managed via the Settings dialog in the Main Window, or edited directly.

Key configuration areas:

  • Capture β€” output directory, filename pattern, image format, delay, cursor
  • Upload β€” default uploader, API keys, S3/FTP credentials
  • Hotkeys β€” global keyboard shortcuts
  • Workflow β€” after-capture actions (save, clipboard, upload, open editor)
  • Notifications β€” enable/disable desktop notifications

Architecture

ShotX uses an event-driven architecture with domain-specific controllers:

main.py (CLI)
  └── app.py (orchestrator)
        β”œβ”€β”€ CaptureController  β€” capture workflows
        β”œβ”€β”€ UploadController   β€” upload + URL shortener
        β”œβ”€β”€ ToolController     β€” editor, hash, indexer
        β”œβ”€β”€ EventBus           β€” inter-component signals
        └── TaskManager        β€” background thread management

Roadmap

  • Phase 1-3 β€” Core capture, region selection, annotations
  • Phase 4 β€” Screen recording (MP4/GIF)
  • Phase 5 β€” Upload engine (6 backends + custom + URL shortener)
  • Phase 6 β€” Productivity tools (OCR, color picker, ruler, QR, etc.)
  • Phase 7 β€” Image editor (effects, beautifier, combiner)
  • Phase 8 β€” Main Window, history, settings, architecture refactoring
  • Phase 9 β€” Documentation site, PyPI packaging, testing, auto-start
  • Phase 10 β€” Image History grid & enhanced History viewer
  • Phase 11 β€” Automated release pipeline (CI/CD)
  • Phase 12 β€” Native packaging (.deb, .rpm, AppImage, Homebrew)
  • Future β€” Wayland global hotkeys, active window capture on Wayland, watch folders

Tech Stack

Component Technology
Language Python 3.10+
GUI Framework Qt6 / PySide6
Config YAML (PyYAML)
Screen Capture xdg-desktop-portal (Wayland), XCB/Xlib (X11)
Recording FFmpeg (X11), wf-recorder (Wayland)
Upload httpx, boto3 (S3), paramiko (SFTP)
OCR Tesseract (pytesseract)
QR Code pyzbar, qrcode
Image Processing Pillow, QPainter
D-Bus dbus-next

Contributing

Contributions are welcome! This project follows clean engineering practices:

  • Each commit does one thing
  • Clear commit messages following conventional commits
  • Feature branches merged via --no-ff
# Run tests
uv run pytest

# Lint
uv run ruff check src/

# Type check
uv run mypy src/

Tip

You can also use the inclusive Justfile or Makefile in the root for automated setup and development tasks.

License

GPL-3.0 β€” see LICENSE for details. Same license as ShareX.

Acknowledgments

  • ShareX β€” the original inspiration
  • Flameshot β€” a great Linux screenshot tool that paved the way

About

A feature-rich screenshot and screen capture tool for Linux - inspired by ShareX. Built with Python & Qt6, Wayland-first with X11 fallback.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages