A Local-First Screenshot Enhancement & Library Tool for Security Professionals
sudo snap install capturePull and run instantly — no build required:
docker pull ogq0w3efq/capture:latest👉 View on Docker Hub — Multi-platform images (AMD64 + ARM64)
Built on Fedora GNOME | Designed for Cybersecurity Documentation | Zero Cloud Dependencies
| 🎨 Granular Adjustments Brightness, Contrast, Saturation, Sharpness |
🔒 PII Sanitization Auto-detect & redact sensitive data |
📚 Library Management Grid view with search & tagging |
💾 Smart Download Save anywhere — Home, Docs, Downloads & more |
| 💻 100% Local Zero cloud uploads, complete privacy |
↩️ Undo / Redo Full edit history stack |
📋 Clipboard One-click copy to clipboard |
🔗 Chain of Custody Originals always preserved separately |
In high-stakes security audits and full-stack development, the "screenshot" is the primary unit of evidence. However, standard tools are failing us:
- Low Resolution: Screenshots lose critical detail when zoomed
- No PII Protection: Accidental data leakage (API keys, IPs, credentials)
- Cloud Security Risks: Most beautifiers require uploading sensitive codebase captures
- Poor Organization: No forensic tracking or chain-of-custody
Capture is a forensic-grade desktop application that:
- Enhances Quality: Granular adjustment controls for professional-grade screenshots
- Sanitizes PII: Automatic detection and redaction of sensitive data
- Maintains Chain-of-Custody: Tracks original vs. modified versions
- 100% Local: Zero cloud uploads, all processing happens on your machine
- Grid-view gallery of all imported screenshots
- Metadata tracking: date, tags, file size, dimensions
- Search and filter by tags
- Chain-of-custody: separate storage for originals and modified versions
- Right-click delete: Remove screenshots from library
- Dark theme UI: Seamless GNOME integration
- 🎨 Granular Adjustments: Google Photos-style slider controls
- Brightness (-100 to +100): Darken or brighten images
- Contrast (-100 to +100): Adjust tonal range
- Saturation (-100 to +100): Control color intensity
- Sharpness (0 to +100): Unsharp masking for text legibility
- Real-Time Preview: Instant feedback as you adjust
- Non-Destructive: Always processes from the original
- 🔍 One-Click Sharpen: Quick enhancement for terminal screenshots
- ⬆️ Cumulative Editing: Adjustments + sanitization stack together (order-independent)
- Automatic Detection: Regex + OCR for:
- IPv4/IPv6 addresses
- Email addresses
- API keys (AWS, GitHub, Stripe, generic)
- JWT tokens
- Private keys
- Redaction Methods: Blur or pixelate
- Persistent Protection: Sanitization remains intact when adjusting image quality
- Audit Log: Tracks what was sanitized
- 📋 Copy to Clipboard: Direct copy for quick pasting
- 💾 Smart Download: Click "Download Image" → pick your destination (Home, Pictures, Documents, Downloads, Music, Videos, Desktop, or Browse anywhere) → saved as PNG with EXIF stripped
- 💾 Export: Save as PNG/JPEG to any path via file dialog
- 🔒 Secure: All exports have EXIF metadata stripped and are anonymized
For development/testing:
git clone https://github.com/OP-88/Capture.git
cd Capture
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python run.pyOne-command install for all distributions:
# Clone the repository
git clone https://github.com/OP-88/Capture.git
cd Capture
# Build and install the Flatpak
./flatpak-build.sh
# Run from anywhere
flatpak run com.github.OP88.CaptureThe Flatpak bundles Python 3.12, PyQt6, and all dependencies, making it work on any Linux distribution regardless of their native Python version.
Benefits:
- ✅ Works on Fedora, Ubuntu, Arch, Debian, etc.
- ✅ No Python version conflicts
- ✅ Sandboxed for security
- ✅ Easy updates via Flatpak
For detailed Flatpak instructions and Flathub submission, see FLATPAK.md.
📦 For all distribution options (Flatpak, Docker, RPM), see DISTRIBUTION.md
Build and install as a standalone application:
# Clone the repository
git clone https://github.com/OP-88/Capture.git
cd Capture
# Install system dependencies
sudo dnf install -y python3 tesseract tesseract-langpack-eng file-libs
# Build the RPM package
./build-rpm.sh
# Install Capture (replace with latest version from releases)
sudo dnf install ./capture-1.0.2-1.*.noarch.rpm
# Run from anywhere
captureThe RPM package installs Capture as a system application with:
- Desktop menu integration
- Standalone executable (
capturecommand) - Proper dependency management
- System-wide installation
For detailed installation instructions, see INSTALL.md.
Fedora Linux:
# Install system dependencies
sudo dnf install -y python3 python3-pip tesseract libmagic
# Optional: Install tesseract language packs for better OCR
sudo dnf install -y tesseract-langpack-eng- Clone the repository:
git clone https://github.com/OP-88/Capture.git
cd Capture- Create virtual environment:
python3 -m venv venv
source venv/bin/activate- Install Python dependencies:
pip install -r requirements.txt- Run Capture:
python run.pydocker run --rm --net=host
-e DISPLAY=$DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix:rw
--security-opt label=disable
-v capture-data:/app/data
op88/capture:latest
**Option 2: Build Locally**
Run Capture from any OS using Docker:
```bash
# Build the image (one-time setup)
docker build -t capture:latest .
# Linux
./docker-run-linux.sh
# macOS (requires XQuartz)
./docker-run-macos.sh
# Windows (requires WSL2 + X server)
.\docker-run-windows.ps1
Advantages:
- ✅ Works on Linux, macOS, and Windows
- ✅ Isolated environment (no Python conflicts)
- ✅ One-command deployment
Requirements:
- Linux: Docker/Podman + X11 (pre-installed on most distros)
- macOS: Docker Desktop + XQuartz
- Windows: Docker Desktop + WSL2 + VcXsrv
For detailed Docker setup and troubleshooting, see DOCKER.md.
Grid-based screenshot library with dark GNOME theme
Google Photos-style controls for brightness, contrast, saturation, and sharpness
Automatic detection and redaction of sensitive data (IPs, API keys, emails)
Note: The application features a fully dark-themed interface that integrates seamlessly with GNOME's aesthetic.
- Click 📥 Import in the toolbar
- Select one or more image files
- Screenshots are automatically:
- Validated for security
- Copied to the vault
- Added to the library with metadata
- Select a screenshot from the library
- Click 🔍 Sharpen to improve text legibility
- The modified version is saved separately (chain-of-custody)
- Select a screenshot
- Click 🔒 Sanitize PII
- Automatic detection runs (may take a few seconds)
- If PII is found, it's automatically blurred
- A log of redacted items is saved to the database
- Clipboard: Click 📋 Copy to Clipboard, then paste anywhere
- File: Click 💾 Export, choose format and location
- Zero cloud uploads: All processing happens on your machine
- No external API calls
- No telemetry or tracking
- Validates all file paths using absolute path resolution
- Prevents directory traversal attacks
- Sanitizes filenames for safe storage
- Uses magic number detection (not just extensions)
- Only allows validated image formats
- Prevents malicious file uploads
- All exports have metadata removed
- Prevents location/device leakage
- Anonymizes exported images
- SQL injection prevention (SQLAlchemy + additional sanitization)
- No shell command execution (
shell=Trueis never used) - Secure file handling throughout
Capture/
├── src/
│ ├── main.py # Application entry point
│ ├── gui/ # PyQt6 UI components
│ │ ├── main_window.py # Main application window
│ │ ├── library_view.py # Screenshot gallery
│ │ └── styles.py # Dark theme
│ ├── core/ # Core functionality
│ │ ├── database.py # SQLAlchemy models
│ │ ├── image_processor.py # Enhancement engine
│ │ ├── sanitizer.py # PII detection/redaction
│ │ └── exporter.py # Export functionality
│ └── utils/ # Utilities
│ ├── security.py # Security validation
│ └── metadata.py # EXIF handling
├── data/
│ ├── vault/
│ │ ├── originals/ # Original screenshots
│ │ └── modified/ # Enhanced/sanitized versions
│ └── capture.db # SQLite database
└── run.py # Launch script
- Backend: Python 3.12+
- GUI: PySide6 (dark-themed, GNOME-native)
- Database: SQLite with SQLAlchemy ORM
- Image Processing: OpenCV + Pillow
- OCR: Tesseract (pytesseract)
- Security: python-magic, regex validation
- Distribution: Snap, Docker, RPM, Flatpak
- Granular image adjustments (brightness, contrast, saturation, sharpness)
- PII sanitization engine (OCR + regex)
- Chain-of-custody vault
- Undo / Redo stack
- Smart download with folder picker
- Snap Store release (automated CI/CD pipeline)
- Interactive highlight tool with color selection
- AI upscaling integration (Real-ESRGAN)
- Batch processing mode
- Tag management UI
- Export templates for security reports
- Keyboard shortcuts
- Multiple OCR language support
Capture is an open-source project built for the community, by the community. Whether you're a security researcher, a Python developer, a UI/UX enthusiast, or just someone with a great idea - your contributions are warmly welcomed!
- Fork the repository and create a feature branch
- Make your changes with clear, descriptive commit messages
- Test thoroughly on Fedora GNOME (or your Linux distribution)
- Submit a pull request with a description of what you've improved
- Follow the existing code style (PEP 8 for Python)
- Maintain the local-first, security-focused philosophy
- Add tests for new features when applicable
- Update documentation for user-facing changes
Found a bug or have a feature idea? Open an issue on GitHub! We appreciate all feedback.
GNU General Public License v3.0 - See LICENSE for details
- Built for the cybersecurity and DevOps community
- Inspired by the need for secure, local-first tooling
- Designed with input from security professionals
Philosophy:
🔒 Local is King: Nothing leaves the machine
✨ Clarity is Truth: If you can't read it, it failed
💻 Developer-Focused: Understands code and terminal aesthetics
📋 Chain of Custody: Maintains integrity for documentation
Made with ❤️ for the Security Community