Linux annotation tool


Linux and Open Source are about choice, but sometimes making the choice is hard. This article could help you to select the most appropriate tool.

The problem

  • Very often (sometimes 10x times per day) I need to:
    • take a screen capture of some part of the screen
    • make annotations
  • There are quite a few tools which can help me with this task.
  • So far the tool I am using is: Shutter - screenshot tool
  • As Arch Linux the installation of complex Perl programs is not easy (via AUR) and so I went into looking for alternatives.


The idea is to find the criteria of my requirements to the annotation tool first, test the alternatives and find the best.


  • Simple to install.

    Troubles of Arch installation of shutter pushed me to make this small research.

  • Easy to use.

    Some tools do have all the required function, but using them could be cumbersome or require very special skills. For example, inkscape is amazing tool, it could produce high quality results, but the skills required to use it, and the amount of steps I need to accomplish to make some simple annotation is overkill for that simple functionality I require.

    A few things fall into this category:

    • keyboard shortcuts. I would like to minimize mouse usage as it is not as fast as keyboard: pressing something like Ctrl+X to cut the image is not the same as looking over in UI where is the 'cut' icon, navigating and pressing the icon.
    • general UX considerations some interfaces are good, some are ugly and/or complex to use.
  • Arrows. There should be possibility to add point to things by using arrows. arrows.png
  • Highlight highlight.png
  • Boxes, ellipses selection. Like this: boxes_ellipses.png
  • Private data hiding private2.pngprivate.png
  • Text annotations
  • Undo/Redo
  • (optional but very useful) Auto-numbering of certain points. autonumber.png
  • Clipboard - copy filename to clipboard

Search & alternative tools found

OK, so that is good and UNIX-style approach:

  1. Choose tool which does the screen capture
  2. Choose the tool which does annotation.

While there is no problem with (1) - tools like 'scrot' are good enough. Note: I've just replaced 'scrot' with escrotum by the reason this tool has been written: "Created because scrot has glitches when selection mode is used with refreshing windows." are good enough, there is a problem with actual 'annotation'.




  • Offers good basic functionality, which will satisfy 90% of all my requests
  • Provides dialog to choice of different 'post processing' tools, that makes it easy to choice the best tool for specific case


  • Filename editor does not offer 'randomize' chars, which makes it too easy to easy filename. In most of cases files are not protected by anything except its name, and if name is easily to guess, it makes me easy target for privacy attacks.
  • The only "export" is to imgurl. That one looks good, but again, that is too public and easily guessable.
  • "Save" does not populate the filename in clipboard by default

Generally, I think this is the candidate for a tool which I would use, if overcome the glitches.



  • You can do a lot with it.


  • Drawing an simple arrow seems to be more complex then usually. You need to learn. For me personally it seems like I need to invest several days of looking at various YouTube videos to learn the basic skills to use it.

Simple graphics editors: mtpaint, pinta, krita

Homepage URLs:

Used together with some screen capture tool, those tools are good as image editing, but not very good to actually annotate, as it is missing 'arrows' as a class.

From all the above I like mtpaint the most, as for a user with lack of UX tools usage, the interface is simple enough.


Looks like it is a good package to draw diagrams. It also has some arrows and other useful things, but I can't find how to make diagrams transparent over image, and without that it is not usable at all, for the purpose stated above.

LibreOffice Draw


  • It is quite powerful tool, serving the purpose of drawing diagrams, but annotation images is also pretty possible to achieve
  • Has arrows, boxes, text annotations, etc.


  • But it is more complex and heavy thing then most of other tools. As result, you need powerful computer. For me that is not a problem: SSD drive with i7 processor are good enough BUT, anyway, lighter software is better.
    • Take for example transparency. To make an rectangle transparent you will need to:
      • Right mouse click
      • Choose "edit style". Window appears
      • Choose "transparency"
      • Set it. Press OK

      Same thing in specialized software like Flameshot or Shutter is set by default.

Comparison table

Tool Install Easyness Arrows Highlight Privacy Text Undo/Redo Clipboard Autonumber UX Total score
Shutter - + + + + + + + + + 9/10
Hotshots + + + + + + - + - - 7/10
Inkscape + - + + + + + - - + 7/10
Mtpaint + + - + + + + - - + 7/10
Dia + + + - - + + - - + 6/10
Draw + - + + + + + - - + 7/10
Flameshot + + + + - + + + - + 8/10

From the table above it seems that there are 2 clear winners:

  • Flameshot (and it provides possibility to post-process image with any other tool)
  • Shutter

As there are no single clear winner, I will try to fix the issues of both and then make my final choice.

Fixing shutter

Fixing shutter installation for Arch Linux seems to be possible. Here I read, that some other man has the same problem as I do:

I've made this image because Shutter is not developed anymore, I'm using Arch Linux and it's not well supported.

But it did not worked straightforward way, failing with error:

Gtk-WARNING **: cannot open display: :0 at /usr/lib/x86_64-linux-gnu/perl5/5.24/ line 126.


Fixing flameshot

Found simple way how to fix filename:

flamshot gui -r > filename

and then I use myscr custom program to save/publish screenshots from i3wm.


  • Both shutter and flameshot were configured and fully usable.
  • Any additional tools can be used on-demand. All filenames are auto-generated with big random part, and so secure enough.
  • i3wm (keybindings) and custom python script helps with publishing results to different channels / cloud providers