A powerful, feature-rich screenshot application built with Rust and Druid
Features • Installation • Usage • Keyboard Shortcuts • Documentation
Screen Grabber is a modern, cross-platform screenshot utility that goes beyond simple screen capturing. With advanced annotation tools, real-time editing, and multi-monitor support, it's designed for professionals who need precision and flexibility in their workflow.
- 🎨 Rich Annotation Tools: Add circles, arrows, text, and highlights directly to your screenshots
- 🖥️ Multi-Monitor Ready: Seamlessly capture from any connected display
- ⚡ Lightning Fast: Built in Rust for maximum performance
- 🎨 Post-Capture Editing: Crop and annotate after taking the screenshot
- ⌨️ Customizable Shortcuts: Define your own hotkey combinations
- 📋 Clipboard Integration: Instant copy-to-clipboard with Ctrl+C
- 🎯 Pixel-Perfect Selection: Precise region selection with visual guides
- Full Screen: Capture entire monitor with one click
- Custom Region: Click-and-drag to select any area
- Delay Timer: 0-10 second countdown for timed captures
- Multi-Monitor: Choose which screen to capture from dropdown
- Shapes: Circles, triangles, arrows, and rectangles
- Highlighter: Semi-transparent overlay for emphasis
- Text Tool: Add custom text with font support
- Color Picker: 17 preset colors with adjustable transparency
- Alpha Slider: Control annotation opacity (1-100%)
- Intelligent Crop: Refine captured area after screenshot
- Real-time Preview: See changes before saving
- Resizable Annotations: Drag and resize overlays
- Layer Management: Non-destructive editing workflow
- Multiple Formats: PNG, JPG, GIF
- Smart Naming: Auto-generate unique filenames or use custom names
- Custom Save Paths: Choose where to save your screenshots
- Clipboard Support: Copy directly to clipboard for quick sharing
- Customizable Hotkeys: Set your preferred keyboard shortcuts
- Persistent Configuration: Settings saved between sessions
- Multi-Monitor Selection: Easy screen switcher in UI
- DPI Aware: Handles high-DPI displays correctly (125%, 150%, 200%)
- OS: Windows 10/11, macOS 10.14+, or Linux (Ubuntu 18.04+, Fedora 30+)
- RAM: 256 MB minimum
- Disk Space: ~50 MB
- Rust: 1.70.0 or higher
- Cargo: Latest stable version
# Ubuntu/Debian
sudo apt-get install libgtk-3-dev libx11-dev libxcb1-dev
# Fedora
sudo dnf install gtk3-devel libX11-devel libxcb-devel
# Arch
sudo pacman -S gtk3 libx11 libxcb# Xcode Command Line Tools required
xcode-select --installNo additional dependencies required.
# Clone the repository
git clone https://github.com/frontinus/rust_project.git
cd rust_project/application
# Build in release mode
cargo build --release
# Run the application
cargo run --releaseDownload the latest release for your platform from the Releases page.
- Launch the application
cargo run --release-
Take a screenshot
- Press your configured hotkey (default:
KeyB+KeyA) - Or click "Take Screenshot" button
- Select region by clicking and dragging
- Press your configured hotkey (default:
-
Annotate (Optional)
- Click annotation tools (⭕, △, →, etc.)
- Drag to position, resize as needed
- Adjust color and transparency
-
Save
- Click "Save" or let auto-save handle it
- Find your screenshot in
./src/screenshots/
┌─────────────┐
│ Capture │ ──┐
└─────────────┘ │
▼
┌─────────────────────┐
│ Review & Annotate │
│ • Add shapes │
│ • Add text │
│ • Adjust colors │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Crop (Optional) │
└─────────────────────┘
│
▼
┌─────────────────────┐
│ Save/Copy/Export │
└─────────────────────┘
| Shortcut | Action |
|---|---|
| Custom Hotkey | Open screenshot overlay (configurable in settings) |
| Ctrl + C | Copy current screenshot to clipboard |
| Esc | Close screenshot overlay / Cancel current operation |
| Ctrl + W | Close main window |
| Shortcut | Action |
|---|---|
| Click + Drag | Select capture region |
| Arrow Keys | Fine-tune selection (1px increments) |
| Shift + Arrow Keys | Fine-tune selection (10px increments) |
| Enter | Confirm selection and capture |
| Esc | Cancel and close overlay |
The following shortcuts are reserved and cannot be customized:
Ctrl + C- System copy functionCtrl + W- Window closeEsc- Cancel operations
screen-grabber/
├── application/
│ ├── src/
│ │ ├── custom_widget/ # Custom UI components
│ │ │ ├── alert.rs
│ │ │ ├── colored_button.rs
│ │ │ ├── custom_slider.rs
│ │ │ ├── custom_zstack.rs # Layer management
│ │ │ ├── resizable_box.rs # Annotation container
│ │ │ ├── screenshot_image.rs # Image handling
│ │ │ ├── selected_rect.rs # Selection rectangle
│ │ │ ├── shortcut_keys.rs # Hotkey management
│ │ │ └── take_screenshot_button.rs
│ │ ├── images/
│ │ │ └── icons/ # Annotation overlays
│ │ ├── screenshots/ # Default save location
│ │ ├── shortcut/ # Hotkey settings
│ │ └── main.rs # Application entry point
│ ├── Cargo.toml
│ └── Cargo.lock
└── README.md
CustomZStack: Manages layered images and annotationsScreenshotImage: Handles image display, cropping, and transformationsSelectedRect: Interactive selection rectangle with 8-point resizingResizableBox: Container for movable/resizable annotation overlaysCustomSlider: Transparency control with real-time previewShortcutKeys: Keyboard shortcut configuration and persistence
Screen Capture (screenshots crate)
↓
DPI Scaling Correction
↓
Region Selection
↓
Annotation Layer Composition
↓
Optional Cropping
↓
Format Conversion (PNG/JPG/GIF)
↓
Save to Disk / Copy to ClipboardSettings are automatically saved to:
- Windows:
./src/shortcut/shortcut_settings.json - macOS/Linux:
./src/shortcut/shortcut_settings.json
- Click Settings → Shortcut Keys
- Click "Change Shortcut"
- Press your desired key combination
- Settings auto-save on confirmation
Screenshots are saved to ./src/screenshots/ by default. To change:
- Click Settings → Set Path
- Select your preferred directory
- All future screenshots will save there
Cause: Windows display scaling (125%, 150%, etc.)
Solution: Already handled in v1.0+. If issues persist, check DPI settings.
Cause: Conflicting system shortcut
Solution: Choose a different key combination in Settings → Shortcut Keys
Cause: Timing issue with window hiding
Solution: Increase delay timer to 1-2 seconds
Cause: Invalid save path or permissions
Solution: Check write permissions in selected directory
Run with verbose logging:
RUST_LOG=debug cargo run --releaseContributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone and build
git clone https://github.com/frontinus/rust_project.git
cd rust_project/application
cargo build
# Run tests
cargo test
# Run with hot reload (using cargo-watch)
cargo install cargo-watch
cargo watch -x run- Follow Rust API Guidelines
- Run
cargo fmtbefore committing - Ensure
cargo clippypasses without warnings - Add tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
Original Development Team
- Pietro Bertorelle
- Francesco Abate
- Elio Magliari
- Druid - Rust-native UI toolkit
- image-rs - Image processing library
- screenshots - Cross-platform screen capture
- arboard - Clipboard integration
Current Version: 1.1.0
Status: Active Development
Last Updated: November 2025
- Video Recording: Capture screen video with audio
- GIF Animation: Create animated GIFs from screen recordings
- Cloud Sync: Auto-upload to Google Drive/Dropbox
- OCR Integration: Extract text from screenshots
- Drawing Tools: Freehand pen, brush, eraser
- Blur/Pixelate: Privacy-focused redaction tools
- Annotations Presets: Save favorite annotation styles
- Batch Processing: Apply edits to multiple screenshots
- Screen Recording History: Timeline view of all captures
- Collaboration: Share screenshots with annotations