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:

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:

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:

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:

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...
Copyright statement:
- All content that is not sourced is original., please do not reprint without authorization (because the typesetting is often disordered after reprinting, the content is uncontrollable, and cannot be continuously updated, etc.);
- For non-profit purposes, to deduce any content of this blog, please give the relevant webpage address of this site in the form of 'source of original text' or 'reference link' (for the convenience of readers).
See Also:
- Labwc Convenient Configuration
- Window manager labwc usage notes
- Wayland environment ksnip cannot be copied problem solved
- Fixed the issue of rime-ice failing to display the candidate box
- Optimization of Boot Scrolling Font Display
- Deploying Vaultwarden on Raspberry Pi
- Real-time Analysis of Caddy Logs Using goaccess
- Personal Website Monitoring
- Hugo's Complete AVIF Conversion Guide
- Trying to Develop a Small Game Using Godot on Linux