https://github.com/singhpratech/kashot
Cross-platform tray screenshot + screen-recording tool (Windows · Linux · macOS). Native overlay editor — 9 annotation tools, palettes, pixelate, watermark, pin-to-screen.
https://github.com/singhpratech/kashot
annotation cross-platform linux macos overlay rust screen-recorder screenshot tray windows
Last synced: about 1 month ago
JSON representation
Cross-platform tray screenshot + screen-recording tool (Windows · Linux · macOS). Native overlay editor — 9 annotation tools, palettes, pixelate, watermark, pin-to-screen.
- Host: GitHub
- URL: https://github.com/singhpratech/kashot
- Owner: singhpratech
- License: apache-2.0
- Created: 2026-04-30T16:50:03.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-17T23:11:13.000Z (about 1 month ago)
- Last Synced: 2026-05-17T23:16:26.223Z (about 1 month ago)
- Topics: annotation, cross-platform, linux, macos, overlay, rust, screen-recorder, screenshot, tray, windows
- Language: Rust
- Homepage: https://kashot.org
- Size: 11.1 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README

# KAShot
### The lightweight screenshot tool every platform deserves.
**Drag a region. Annotate. Save, copy, pin, record. Stop screenshotting — start kashoting.**
[**kashot.org**](https://kashot.org)
· [Download](https://kashot.org/#download)
· [Roadmap](PLAN.md)
· [Architecture](ARCHITECTURE.md)
[](LICENSE)



[](https://github.com/singhpratech/kashot/actions)
---
## What is KAShot
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 |
---
## The story
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.
— [PrateekSingh](https://github.com/singhpratech)
---
## Install

**Windows**

**Linux**

**macOS**
[**Download .zip**](https://github.com/singhpratech/kashot/releases/latest/download/kashot-windows-x86_64.zip)
Unzip → run `kashot.exe`. Same Rust binary that ships on Linux and macOS.
```powershell
# one-liner
iwr -useb https://kashot.org/install.ps1 | iex
```
```powershell
# coming soon
winget install singhpratech.Kashot
choco install kashot
scoop install kashot
```
```bash
curl -fsSL https://kashot.org/install.sh | sh
```
One-liner auto-detects **x86_64** and **arm64**, downloads the matching tarball, drops the binary in `~/.local/bin`. Or fetch the tarball directly:
```bash
# 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
```
```bash
# coming soon
flatpak install flathub org.kashot.Kashot
yay -S kashot # AUR
```
[**Apple Silicon**](https://github.com/singhpratech/kashot/releases/latest/download/Kashot-macos-arm64) ·
[Intel](https://github.com/singhpratech/kashot/releases/latest/download/Kashot-macos-x64)
```bash
chmod +x Kashot-macos-arm64
./Kashot-macos-arm64
```
```bash
# coming soon
brew install --cask kashot
```
---
## What you get out of the box
| | Feature |
|:---:|:---|
| 🎯 | **Pixel-accurate region select** — 7× live magnifier, drag any edge to resize, `Alt`+drag to move |
| ✏️ | **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 floating STOP control. Linux X11 (PulseAudio mic + monitor); Windows native (ffmpeg gdigrab + DirectShow mic — system audio is queued); macOS via built-in `screencapture` (no mic yet). Wayland capture is queued |
| 🔄 | **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) |
---
## Keyboard shortcuts
Once a region is selected:
ToolsActions
P PenM Marker
Ctrl+Z UndoCtrl+C Copy
L LineT Text
Ctrl+Y RedoCtrl+S Save
A ArrowN Numbered step
Esc Cancel / closeAlt+drag Move
R RectangleB Blur / pixelate
Drag edges Resize
E Ellipse
---
## Build from source
The Rust workspace under `kashot-rs/` is the canonical build for every
platform — same source, same UX on Windows, Linux, and macOS:
```sh
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/kashot
```
> The 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:
```sh
sudo apt install libwayland-dev libxkbcommon-dev libxcb*-dev \
libgtk-3-dev libdbus-1-dev libayatana-appindicator3-dev \
libxdo-dev pkg-config ffmpeg
```
macOS + Windows need no extra system packages — winit, softbuffer, tray-icon, and global-hotkey use Cocoa / Win32 directly.
### Bundling ffmpeg for shipping
`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:
```sh
KASHOT_FFMPEG=/path/to/static/ffmpeg cargo build --release --bin kashot
```
Full architecture notes in [`ARCHITECTURE.md`](ARCHITECTURE.md).
---
## Project layout
```text
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
```
---
## Status
| Surface | Windows | Linux | macOS |
|---|:---:|:---:|:---:|
| Tray + global hotkey | ✅ | ✅ | ✅ |
| Capture + 9-tool overlay editor | ✅ | ✅ | ✅ |
| Save · Copy · Pin · Watermark | ✅ | ✅ | ✅ |
| Screen recording (MP4) | ✅ mic only | ✅ mic + system | ✅ no audio yet |
| Themed Settings · About · Updates | ✅ | ✅ | ✅ |
| Image + video format conversion | ✅ | ✅ | ✅ |
| Release artifact | `.zip` | `.tar.gz` (x86_64 + arm64) + AppImage | raw binary (`.dmg` queued) |
**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`](PLAN.md) § "Architecture invariants" for the settings JSON shape and hotkey wire format.
---
## License
Licensed under the **Apache License, Version 2.0** — see [`LICENSE`](LICENSE).
`SPDX-License-Identifier: Apache-2.0`.
Contributions are accepted under the same Apache-2.0 terms (Apache-2.0 §5).
## Credits
Built by [Prateek Singh](https://github.com/singhpratech). Bug reports and PRs welcome at [github.com/singhpratech/kashot](https://github.com/singhpratech/kashot).
---

[**kashot.org**](https://kashot.org)