Recommended Screenshot Annotation Tool Satty

There are many screenshot annotation tools for Linux. I have used Swappy, Ksnip, Flameshot, etc.

Swappy is written in C, lightweight and sufficient, but it lacks a counting and annotation function (let's call it that for now; it's essentially a feature where clicking an image increments the count, 1, 2, 3... to guide operation steps, or simply for numerical annotation, which is still very useful). I left this feature in an issue on Jun 27, 2023, but it still hasn't been added, and updates are infrequent, so I've reluctantly given up.

Swappy example image:

swappy-demo

I've used Ksnip for a long time and haven't encountered any major problems, but I personally think it's a bit too heavy for cross-platform use. Its core functionality is very stable, but it hasn't been updated for years.

Ksnip example image:

ksnip-demo

Early versions of Flameshot had issues on Wayland, but now they work perfectly in an Arch + Labwc environment. It's the most streamlined of the three, capturing system prompts and more. It's simple and practical, similar in function to the built-in screenshot annotation tools in Chinese apps like QQ and WeChat, and is also worth recommending.

Flameshot example image:

flameshot-demo

Finally, the main subject of this article, Satty, was actually discovered about a year ago. I recently tried it again with Arch's rolling updates and found it quite good; I recommend it.

The reasons are as follows:

  • Written in Rust. Many Rust-based software programs are now available on Linux, making them reliable; I've rarely encountered unreliable ones.

  • Compared to Swappy, it has a counting function, which I need for writing tutorials and maintaining my website.

  • Lightweight compared to ksnip.

  • Can be used in conjunction with Flameshot, which is useful for scenarios where Satty screenshots are not possible, or for very lightweight applications.

  • Clear UI logic, described later.

  • The author updates frequently.

1. Installing Satty

I currently mainly use Arch.

1sudo pacman -S satty

For distributions without the installation package, use cargo to install: cargo install satty

2. How to Use

The configuration under labwc is as follows:

1<keybind key="Print">
2      <action>
3        <name>Execute</name>
4        <!-- <command>sh -c 'grim -g "`slurp`" - | swappy -f -'</command> -->
5        <!-- <command>$HOME/.config/labwc/screenshot.sh</command> -->
6        <!-- <command>sh -c 'grim -g "`slurp`" - | ksnip -'</command> -->
7        <command>sh -c 'grim -g "`slurp`" -t ppm - | satty -f -'</command>
8      </action>
9    </keybind>

As seen from the comments above, I've also used swappy, custom scripts, and ksnip; now I use Satty. Pressing the Print key, selecting the screenshot area, and then performing editing operations is a very smooth experience.

-t ppm, PPM (Portable PixMap) = raw RGB pixel stream + a very simple file header. It's an uncompressed raw pixel format, best suited for direct pipe transfer, avoiding unnecessary CPU compression/decompression while ensuring lossless pixel quality and optimal compatibility.

Other parameters are easy to understand from the help documentation, so I won't explain them further.

3. UI/Function Preview

See screenshots directly:

satty-demo

  • Numbers 1, 2, 3, and 4 represent various commonly used functions: undo, clear, draw lines, arrows, rectangles, circles, text markers, number markers, save, etc.

  • Numbers 5 and 6 set color and size.

  • Number 7 controls solid/dim marks.

This UI logic is very clear, and I personally appreciate it.

4. Other

It's worth mentioning that, like swappy, Satty supports keyboard shortcuts. For example, pressing T starts text editing, and R starts drawing rectangles. This could be very helpful for people who frequently take and edit screenshots. I occasionally use these shortcuts, and they're quite useful.

In addition, Satty has some advanced functions, but I'm too lazy to spend the time exploring them. The functions on the UI can solve 99.9% of my screenshot annotation needs. Those interested can visit the Github page to check out the configuration files and feature descriptions.

For example, pressing the numbers 1, 2, 3, and 4 selects the color, and holding down the Shift key rotates the arrow line by 15 degrees. You and I might not use this feature, but it's essential; otherwise, it doesn't seem very impressive...

Lastmod: Tuesday, June 16, 2026

See Also:

Translations: