Drag a region. Annotate. Save, copy, pin, record. Stop screenshotting — start kashoting.
A tray-resident screenshot + screen-recording tool that ships the same binary discipline to Windows, Linux, and macOS. No Electron, no Wine, no bundled browser, no accounts, no telemetry. Hit your hotkey → drag → annotate → save / copy / pin / record → done.
| Capture | Annotate | Save / Share |
|---|---|---|
| 🎯 Pixel-accurate region select with 7× live magnifier | ✏️ 9 tools, 4 palettes, 16 swatches each | 💾 PNG · JPG · BMP · clipboard · pin-to-screen |
| 🖥️ Spans every monitor, single virtual desktop | ⌨️ Single-key shortcuts for every tool | 🎬 Screen recording → MP4 with mic + system audio |
| ⏱️ Capture-in-3s / 5s / 10s with tray countdown | 🔢 Numbered steps, blur / pixelate, free-text | 🔄 Convert image · MP4 → MOV/WEBM/MKV/GIF |
Three machines. Three different screenshot tools. Three different sets of habits.
On Windows, Snipping Tool is fine but its annotation story is "scribble in MS Paint." Greenshot feels frozen in 2014. ShareX has a thousand options I'd never use. On Linux, every native option — Flameshot, Shutter, ksnip, GNOME Screenshot — is either heavyweight, opinionated, or missing the basics. On macOS, the built-in capture is genuinely good, but nothing else matches it on the other two operating systems I use every day.
I wanted one screenshot tool. Same hotkey, same overlay, same shortcuts, same JSON settings — on every machine I touch.
So I started building. The first cut was a Windows-only C# / WinForms app. Once the workflow felt right I ported it to Rust so Linux and macOS could have the same thing natively. No Electron. No Wine. No bundled browser. No accounts. No telemetry.
That's KAShot. Lightweight. One workflow. Everywhere.
|
MSI installs + self-updates in-app. The .zip is the same binary, no install. Same Rust binary that ships on Linux and macOS. # one-liner
iwr -useb https://kashot.org/install.ps1 | iex# scoop — manifest ships in-repo today
scoop install https://raw.githubusercontent.com/singhpratech/kashot/main/dist/scoop/kashot.json
# chocolatey (queued)
choco install kashot |
curl -fsSL https://kashot.org/install.sh | shOne-liner auto-detects x86_64 and arm64, downloads the matching tarball, drops the binary in # x86_64
curl -L https://github.com/singhpratech/kashot/releases/latest/download/kashot-linux-x86_64.tar.gz | tar -xz
# arm64 (Raspberry Pi 4/5, Ampere, Graviton, Asahi)
curl -L https://github.com/singhpratech/kashot/releases/latest/download/kashot-linux-arm64.tar.gz | tar -xz
./kashot/kashot# Flatpak (official self-hosted repo)
flatpak remote-add --if-not-exists kashot https://repo.kashot.org/kashot.flatpakrepo
flatpak install kashot org.kashot.Kashot
# AppImage — single file, no install
curl -fLO https://github.com/singhpratech/kashot/releases/latest/download/kashot-x86_64.AppImage
chmod +x kashot-x86_64.AppImage && ./kashot-x86_64.AppImage
sudo snap install kashot --edge # Snap (edge channel)
yay -S kashot # AUR (coming soon) |
Apple Silicon .dmg · Intel .dmg Drag to Applications. Unsigned today — right-click → Open on first launch. # coming soon
brew install --cask kashot |
| Feature | |
|---|---|
| 🎯 | Pixel-accurate region select — 7× live magnifier, drag any edge or corner to resize |
| ⚡ | One-click full-screen capture — tray → Capture Full Screen → auto-saved, no editor in the way |
| ✏️ | 9 annotation tools — pen, line, arrow, rectangle, ellipse, marker, text, numbered steps, blur / pixelate |
| 🎨 | 4 palettes × 16 swatches — Vivid · Highlighter · Pastel · Pro, plus a custom color picker |
| 📌 | Pin to screen — borderless top-most window, drag anywhere on the desktop |
| 🎬 | Screen recording — MP4 with microphone and system audio on every platform (PulseAudio monitor on Linux, WASAPI loopback on Windows, ScreenCaptureKit on macOS) — no Stereo Mix / BlackHole driver needed. The floating STOP control keeps itself out of the recording (Windows / macOS; on Linux/X11 stop via the tray). Wayland capture is queued |
| 🖊️ | Annotate recordings on a timeline — tray → Annotate last recording: drag the timeline to scrub the clip to any moment, draw with the full editor, and pick how long each annotation stays on screen (3 s / 5 s / 10 s / until the clip ends); everything burns into an _annotated.mp4 copy with audio intact, original untouched |
| 🔄 | Format conversion — PNG ↔ JPG / WEBP / BMP · MP4 → MOV / WEBM / MKV / GIF |
| 🏷️ | Watermark — editable text, 4 anchors, 0–100 % opacity slider |
| ⌨️ | Global hotkey — defaults to PrintScreen; remappable via settings |
| ⏱️ | Delayed capture — 3 s / 5 s / 10 s countdown with tray indicator |
| 🖥️ | Multi-monitor — single virtual-desktop capture, no per-screen switching |
| 🌗 | Themed dialogs — Settings · About · Updates · Convert — same laser-green skin everywhere |
| 🔒 | No accounts. No telemetry. No upsell. Free, open source (Apache-2.0) |
Once a region is selected:
| Tools | Actions | ||
|---|---|---|---|
| P Pen | M Marker | Ctrl+Z Undo | Ctrl+C Copy |
| L Line | T Text | Ctrl+Y Redo | Ctrl+S Save |
| A Arrow | N Numbered step | Esc Cancel / close | Drag edges Resize |
| R Rectangle | B Blur / pixelate | ||
| E Ellipse | |||
The Rust workspace under kashot-rs/ is the canonical build for every
platform — same source, same UX on Windows, Linux, and macOS:
cd kashot-rs
cargo test -p kashot-core # pure-logic tests, no system deps
cargo build --release --bin kashot # ~7 MB stripped binary
./target/release/kashotThe v0.1 Windows-only C# / WinForms build was retired in v0.3.0 once the Rust port covered all three platforms. Git history retains it if you need to look back.
Linux build deps:
sudo apt install libwayland-dev libxkbcommon-dev libxcb*-dev \
libgtk-3-dev libdbus-1-dev libayatana-appindicator3-dev \
libxdo-dev pkg-config ffmpegmacOS + Windows need no extra system packages — winit, softbuffer, tray-icon, and global-hotkey use Cocoa / Win32 directly.
kashot-rs/crates/kashot-app/build.rs copies an ffmpeg binary next to the kashot executable so the Convert-video dialog works without a system install. For release builds, point it at a static binary:
KASHOT_FFMPEG=/path/to/static/ffmpeg cargo build --release --bin kashotFull architecture notes in ARCHITECTURE.md.
kashot-rs/ Rust workspace — canonical build on all 3 platforms
crates/kashot-core Tool · Annotation · AppSettings · ThemeColors — pure logic
crates/kashot-platform capture · hotkey · tray · recorder · clipboard
crates/kashot-app tray-resident binary + overlay editor + themed dialogs
docs/ kashot.org landing page (GitHub Pages)
dist/ package-channel metadata: winget, choco, scoop, brew,
flatpak, AUR, deb, rpm, snap, appimage
icons/ branded icon pack (every platform size, one source PNG)
.github/workflows/ CI: matrix tests + multi-platform release builds (Rust);
CodeQL scan over the workflow YAML
| Surface | Windows | Linux | macOS |
|---|---|---|---|
| Tray + global hotkey | ✅ | ✅ | ✅ |
| Capture + 9-tool overlay editor | ✅ | ✅ | ✅ |
| Save · Copy · Pin · Watermark | ✅ | ✅ | ✅ |
| Screen recording (MP4) | ✅ mic + system | ✅ mic + system | ✅ mic + system |
| Themed Settings · About · Updates | ✅ | ✅ | ✅ |
| Image + video format conversion | ✅ | ✅ | ✅ |
| Release artifact | .msi + portable .zip |
.tar.gz (x86_64 + arm64) + AppImage + snap + Flatpak repo |
.dmg (Apple Silicon + Intel) |
One Rust binary, three platforms. Same source, same editor, same feature set — the kashot-rs/ workspace is the canonical build on Windows, Linux, and macOS as of v0.3.0. The original C# / WinForms build is retired (history retained in git). See PLAN.md § "Architecture invariants" for the settings JSON shape and hotkey wire format.
Licensed under the Apache License, Version 2.0 — see LICENSE.
SPDX-License-Identifier: Apache-2.0.
Contributions are accepted under the same Apache-2.0 terms (Apache-2.0 §5).
Built by Prateek Singh. Bug reports and PRs welcome at github.com/singhpratech/kashot.