guaitar (first-person singular present guaito, first-person singular preterite guaití, past participle guaitat)
to observe, look to pay attention
Borrowed from Frankish *wahtōn, *wahtjan (“to watch, guard”), derivative of *wahta (“guard, watch”), from Proto-Germanic *wahtwō (“guard, watch”), from Proto-Indo-European *weǵ- (“to be fresh, cheerful, awake”).
An extension to take and annotate screenshots.
It can also be used in a standalone way (eventually should work as a PWA) by visiting here. To annotate an image you have in your clipboard, press q
, otherwise you can paste pieces of images using v
. Depending on the browser you may need to click “paste”, or accept some clipboard access permissions. Use m
to have fun with memes. You can see all memes available here (it’s also available from within the extension or the standalone help).
All images and text are processed locally, no data is sent anywhere.
Note It has not been thoroughly tested (manually) on Safari, but all seems to work:
- Tests pass.
- Pasting and adding arrows and stuff works.
Click the image to open the video (youtube).
Yes, but this is mine.
Also, two features I have wanted for a while:
data:base64
encoded URL, where the image is clickable (combines with point 1). I can’t embed an example in a README (github seems to throw such a long URL away) but you can find it in media/data-url-example
, copy that blob of text in the URL of your browser (tested in Chrome and Safari) and you should see a screenshot as the one above, clickable.Taken from the extension’s help modal. These are the default shortcut keys.
a
: draw an arrowr
: draw a rectanglep
: draw an ellipses
: highlight an areat
: write text
ctrl + .
: Make text larger (for this text block)ctrl + ,
: Make text smaller (for this text block)ctrl + /
: Cycle through fonts (Monoid, Reforma, Inter, Roboto)ctrl + wheel
: Resize the text bounding boxctrl + c
: Center the text in the bounding boxescape
: will remove focus and selection from the text inputv
: paste images or text from the clipboard
ctrl + wheel
: Resize the pasted image while selectedCmd v
(or Ctrl v
, your system paste) to paste images from the clipboard
k
: clip the screenshot
drag
: dragging moves the clipped imageshift+drag
: dragging moves the clipping rectangleq
: swap the screenshot for whatever image there is on the clipboard (or go back to the screenshot)c
: choose color for the next operations
r
: red (default)y
: yellowb
: blueg
: greeno
: orangew
: white. This makes the highlight tool a redaction tool.x
: black. This makes the highlight tool a redaction tool.s
: this switches opacity for the highlight tool from redaction to semi-transparentm
: enter meme selection, it will be placed on the last click and behave as a pasted image
type
: to dynamically search through the list of memestab
: to display meme thumbnailsenter
: to select the topmost memeclick
: on the image or name to select itpaste
: an external meme URL (should be valid) to use that insteadesc
: to dismissz
: switch between the screenshot and a white canvas (better for tweaking memes or diagrams)backspace
: delete anything selectedExtensions -> Manage Extensions
.Extensions -> Load unpacked
at the root (where manifest.json
and README.md
are located). More details here.I took a leaf out of the development of Weave and added Chai.js/Mocha.js in-browser tests. They try to reproduce human behavior by sending browser events, creating arrows, dragging them, etc. I think it is neat, because I need no headless browser or anything heavyweight like that.
The main index.html
holds several iframes with the individual suites per “functionality” (arrow
, rect
, etc
), and you can also open the individual pages instead, or add new ones. You can see each test here.
If you want to run them locally:
python3 -m http.server 8000
) andtests/
link there.The way the tests work is:
display: none
(depends on the test).There is no testing of the Chrome specific APIs, because there is little of them, and it’s kind of untestable.
popup.js
when pressing the extension button.screenshot.js
(behind a try with no catch to let this run in tests out of extension sandboxing).The Taskfile.yml
can be used to run the test-driven writing test for this README.
The most straightforward route if you want a feature or change stuff:
As for contributing, this is one of my personal projects, and like many others I have, I have a clear idea of what I want (or a clear idea of what I don’t). So this is likely to follow whatever my whim is (in other words, I may reject pull requests for no good reason), but as an open source project, please fork, play with this and make it your own.