Skip to main content

GTK3 screenshot tool for Linux with annotation, OCR, and cloud upload

Project description

LikX

Screenshot capture and annotation tool for Linux

CI CodeQL Release License: MIT Python: 3.8+ GTK: 3.0

LikX UI


Features

Capture

  • Multi-capture: Fullscreen, region, window on X11 and Wayland
  • Multi-monitor: Quick-select monitors with number keys (1-9)
  • GIF recording: Capture animated GIFs of any screen region
  • Scrolling screenshots: Auto-scroll and stitch long pages

Annotation

  • Drawing tools: Pen, highlighter, line, arrow (open/filled/double), rectangle, ellipse
  • Text tools: Text annotations with bold/italic/fonts, callout bubbles
  • Markers: Number markers, stamps (✓✗⚠❓), color picker
  • Selection: Move, resize, delete with snap-to-alignment guides
  • Privacy: Blur and pixelate tools for sensitive data
  • Crop: Drag to crop with Shift for 1:1 aspect ratio lock

Features

  • OCR: Extract text from screenshots via Tesseract
  • Pin to desktop: Keep screenshots always visible while working
  • Effects: Shadow, border, background, rounded corners, brightness/contrast
  • Cloud upload: Imgur, Amazon S3, Dropbox, Google Drive
  • History browser: Visual thumbnail browser for all captures
  • Customizable hotkeys: Configure all keyboard shortcuts
  • Multi-language: 8 languages (English, Spanish, French, German, Portuguese, Italian, Russian, Japanese)

Installation

Snap Store (Recommended)

sudo snap install likx

AppImage

Download the latest .AppImage from GitHub Releases:

chmod +x LikX-*.AppImage
./LikX-*.AppImage

Debian/Ubuntu (.deb)

wget https://github.com/AreteDriver/LikX/releases/latest/download/likx_amd64.deb
sudo dpkg -i likx_amd64.deb
sudo apt-get install -f  # Fix dependencies

From Source

git clone https://github.com/AreteDriver/LikX.git
cd LikX/LikX
./setup.sh
python3 main.py

Quick Start

likx                    # Launch GUI
likx --fullscreen       # Capture fullscreen
likx --region           # Capture region
likx --window           # Capture window

Global Hotkeys (GNOME)

Shortcut Action
Ctrl+Shift+F Fullscreen capture
Ctrl+Shift+R Region capture
Ctrl+Shift+W Window capture
Ctrl+Alt+G Record GIF
Ctrl+Alt+S Scrolling screenshot

Hotkeys are customizable in Settings > Hotkeys

Editor Shortcuts

Shortcut Action
Ctrl+Shift+P Command Palette
Ctrl+S Save
Ctrl+C Copy to clipboard
Ctrl+Z / Ctrl+Y Undo / Redo
Delete / Backspace Delete selected annotation
V Select tool (move/resize)
P H L A Pen, Highlighter, Line, Arrow
R E T B Rectangle, Ellipse, Text, Blur
X M N I Pixelate, Measure, Number, Color Picker
S Z K C Stamp, Zoom, Callout, Crop
Right-click Radial menu

Platform Support

Platform Status Tools Required
X11 Full xdotool
Wayland (GNOME) Full gnome-screenshot
Wayland (KDE) Full spectacle
Wayland (Sway) Full grim

Tested on: Ubuntu 22.04/24.04, Fedora 39/40, Arch, Pop!_OS, Manjaro, Debian


Comparison

Feature LikX Flameshot Ksnip Shutter
Wayland Yes Partial Yes No
X11 Yes Yes Yes Yes
GIF Recording Yes No No No
Scrolling Capture Yes No No Yes
OCR Yes No Yes No
Pin to Desktop Yes No No No
Visual Effects Yes No No Yes
Blur/Pixelate Yes Yes Yes Yes
Cloud Upload Yes Yes Yes Yes
Multi-language Yes Yes Yes Yes
Snap Store Yes Yes Yes No
AppImage Yes Yes Yes No

Dependencies

Core:

  • python3 (>= 3.8)
  • python3-gi, python3-gi-cairo, python3-cairo
  • gir1.2-gtk-3.0, gir1.2-gdkpixbuf-2.0

X11: xdotool, xclip

Wayland: gnome-screenshot (GNOME), spectacle (KDE), grim (Sway)

GIF Recording: ffmpeg (X11), wf-recorder (Wayland), gifsicle (optional, for optimization)

Scrolling Capture: opencv-python-headless (pip), xdotool (X11), ydotool or wtype (Wayland)

OCR: tesseract-ocr, tesseract-ocr-eng


Project Structure

LikX/
├── main.py                  # Entry point
├── src/
│   ├── capture.py           # X11 + Wayland capture
│   ├── editor.py            # Annotation suite
│   ├── ui.py                # Main interface
│   ├── ocr.py               # OCR extraction
│   ├── pinned.py            # Pin to desktop
│   ├── history.py           # History browser
│   ├── effects.py           # Visual effects
│   ├── hotkeys.py           # Global shortcuts
│   ├── uploader.py          # Cloud upload
│   ├── notification.py      # Desktop alerts
│   ├── i18n.py              # Internationalization
│   ├── recorder.py          # GIF recording
│   ├── recording_overlay.py # GIF recording UI
│   ├── scroll_capture.py    # Scrolling screenshots
│   ├── scroll_overlay.py    # Scroll capture UI
│   ├── minimap.py           # Document navigation minimap
│   ├── onboarding.py        # First-time user tooltips
│   ├── quick_actions.py     # Quick action toolbar
│   ├── undo_history.py      # Visual undo timeline
│   ├── queue.py             # Capture batch queue
│   └── tray.py              # System tray integration
├── locale/                  # Translation files (8 languages)
│   ├── likx.pot             # Translation template
│   ├── es/LC_MESSAGES/      # Spanish
│   ├── fr/LC_MESSAGES/      # French
│   ├── de/LC_MESSAGES/      # German
│   ├── pt/LC_MESSAGES/      # Portuguese
│   ├── it/LC_MESSAGES/      # Italian
│   ├── ru/LC_MESSAGES/      # Russian
│   └── ja/LC_MESSAGES/      # Japanese
├── snap/                    # Snap packaging
├── AppDir/                  # AppImage packaging
└── debian/                  # Debian packaging

Contributing

  1. Fork the repository
  2. Create feature branch
  3. Make changes
  4. Run ruff check src/ main.py && ruff format src/ main.py
  5. Submit pull request

Adding Translations

  1. Copy locale/likx.pot to locale/<lang>/LC_MESSAGES/likx.po
  2. Edit the .po file with your translations
  3. Compile: msgfmt locale/<lang>/LC_MESSAGES/likx.po -o locale/<lang>/LC_MESSAGES/likx.mo
  4. Test: LANG=<lang> python3 main.py

To extract new strings after code changes:

./scripts/extract_strings.sh

License

MIT License - Free to use, modify, and distribute.


Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

likx-3.31.0.tar.gz (217.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

likx-3.31.0-py3-none-any.whl (142.4 kB view details)

Uploaded Python 3

File details

Details for the file likx-3.31.0.tar.gz.

File metadata

  • Download URL: likx-3.31.0.tar.gz
  • Upload date:
  • Size: 217.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for likx-3.31.0.tar.gz
Algorithm Hash digest
SHA256 847ffaa9a0f5f97e84e9bc7274eddedef6eeb4cedeca9e5e5ac5972531bf4561
MD5 799a88960591c90c14bb767163cbe1db
BLAKE2b-256 42e8ddf351dc6fbc48c89c43dd3707750b55f3c7ba7aee56d267f63172513df8

See more details on using hashes here.

Provenance

The following attestation bundles were made for likx-3.31.0.tar.gz:

Publisher: likx-release.yml on AreteDriver/LinuxTools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file likx-3.31.0-py3-none-any.whl.

File metadata

  • Download URL: likx-3.31.0-py3-none-any.whl
  • Upload date:
  • Size: 142.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for likx-3.31.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f5070b9ad29d9cc68be2ba7de9febbb022ebeb2ee43b70cf2ff7fcf0776e5e8
MD5 fcbeaf2fe255bc081cf118a771864af2
BLAKE2b-256 ae0d9b053997d0aa96f6db9da545038d10ee3d248016986556d0d0ff9b967720

See more details on using hashes here.

Provenance

The following attestation bundles were made for likx-3.31.0-py3-none-any.whl:

Publisher: likx-release.yml on AreteDriver/LinuxTools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page