| Sticky Annotate | AI Image Edit |
|---|---|
![]() |
![]() |
| AI Vision | Long Capture |
|---|---|
![]() |
![]() |
| OCR Result | GIF Record |
|---|---|
![]() |
![]() |
This project is licensed under GNU General Public License v3.0 (GPL-3.0-only).
See LICENSE.
TZshot is a screenshot and pin-image utility built with Qt 6 Widgets + C++. It supports multi-screen capture, region annotation, sticky image editing, long screenshots, OCR, GIF recording, global shortcuts, tray integration, AI image editing, and AI visual understanding.
- Multi-screen capture with virtual desktop coordinates
- Capture overlay
- Region selection, moving, and 8-direction resizing
- Magnifier preview with pixel color readout
Enterperforms the default action,Esccancels
- Annotation tools
- Rectangle, circle, arrow, freehand pen
- Text annotation
- Number annotation with auto-increment
- Highlight, mosaic, blur
- Undo
- Output actions
- Copy to clipboard
- Save to file
- Pin to desktop
- OCR
- Long screenshot
- GIF recording
- Sticky window
- Dragging and opacity control
- Zoom, rotate, mirror, reset to 1:1
- Annotation, OCR, context menu actions
- AI image editing and AI visual understanding
- Long screenshot toolbar with floating preview
- GIF recording
- OCR result window
- Global shortcuts
- System tray menu
- Chinese and English UI switching
- C++17
- Qt 6
- Core / Gui / Widgets / Network / Concurrent / LinguistTools
- CMake
- Global shortcuts
- Windows:
RegisterHotKey - Linux(X11):
xcb_grab_key
- Windows:
src/app/- App bootstrap, service wiring, and widget runtime management
src/widgets/- Capture overlay, sticky windows, settings dialog, OCR result window, about dialog, and related UI
src/viewmodel/- Business logic for capture, sticky images, long screenshot, GIF, OCR, storage, and AI
src/model/- Desktop snapshot and persisted app settings
src/paint_board/shape/- Annotation shape implementations
resource/- Icons and QSS resources
i18n/- Chinese and English translations
TZshot/
├─ src/
│ ├─ app/
│ ├─ widgets/
│ ├─ model/
│ ├─ viewmodel/
│ ├─ paint_board/
│ ├─ shortcut_key/
│ ├─ ocr/
│ └─ ai_call/
├─ i18n/
├─ resource/
├─ thirdpart/
└─ CMakeLists.txt
- CMake >= 3.16
- Qt 6.x
- C++17 compiler
Windows:
- MSVC 2019/2022
Linux:
- X11/xcb development libraries
- Open the project root
CMakeLists.txt - Select a Qt 6 kit
- Configure -> Build -> Run
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config ReleaseRun on Windows:
./build/Release/TZshot.exeTypical Qt Creator + Ninja output path:
./build/<kit-name>/TZshot.exeRun on Linux:
./build/TZshot- On first configure or build, CMake will fetch and build
LeptonicaandTesseract - Output is placed under
thirdpart/ocr-install - This project does not auto-download
tessdata - Please prepare and place these files manually
thirdpart/ocr-install/share/tessdata/chi_sim.traineddatathirdpart/ocr-install/share/tessdata/eng.traineddata
If they are missing, OCR will fail at runtime with Tesseract Init failed: no usable tessdata found.
Alt + A: ScreenshotAlt + S: Screenshot and SaveAlt + P: Pin to DesktopAlt + Q: Show or Hide Window
- AI
AI/apiKeyAI/selectedModel
- Vision
Vision/apiKeyVision/providerVision/modelVision/proxyEnabledVision/proxyTypeVision/proxyHostVision/proxyPort
- Shortcuts
Shortcuts/screenshotShortcuts/screenshotSaveShortcuts/stickyShortcuts/toggle
- General
App/languageImageSaver/savePath
- Linux global shortcuts currently rely on X11 and do not yet cover native Wayland support
- Floating overlay and sticky window experience is currently most complete on Windows
- GIF, OCR, and long screenshot flows still have room for more cross-platform refinement
- Do not commit real
API Keys, tokens, or private data - Use
UTF-8 (no BOM)andLFline endings when possible - When updating third-party dependencies, include their license notices





