Minimal screenshot annotation tool

Related tags

GUI gtk gtk3
Overview

pinsel

What

This is a program that helps with quick small annotations in screenshots made with maim or something similar. Everything is in progress currently.

Usage

You can open a file by passing it as the first argument: pinsel path/to/file.png or by piping into the program. That's why pinsel file.png and cat file.png | pinsel behave the same. If there is both an argument and an image being piped into the program, piping will be prefered.

You can pre-define the destination of a saved file with the -o flag. The save shortcuts will then just save the image to the destination saving you from the tiring file dialog (especially in day-to-day usage).

An example usage for screenshot taking may look like the following:

maim -s | pinsel -o $HOME/$(date).png | xclip -selection clipboard -t image/png

First you select your screenshot through maim like you are used to. The result gets piped into pinsel where you can do annoatations and where you are free to save the image to ~/$(date).png or not. If you don't want to annotate your image then you can still decide on whether to save it or not (which may add one key press in total to that workflow in the "worst case"). The end result gets piped to your clipboard for further usage.

Flags

  • -o, --output predefines the save-destination
  • -f, --format defines the image format of the stdout output
  • --ontop puts the window above all others on startup
  • --maximize maximizes the window on startup
  • -h, --help, -v, --version wip

Shortcuts

Open the shortcut dialog to look them up 👍

Installation

git clone https://github.com/Nooo37/pinsel.git
cd pinsel
sudo make install # will put the binary in /usr/local/bin

Video

TODO

  • allow for all font faces
  • add --help text, man page
  • allow for other formats than png
  • make text actually draggable when the dialog is open
  • add a titlebar to the text dialog
  • release

my first C project - don't be harsh

You might also like...
xsnip - a minimal and convenient screenshot utility for X11

xsnip - a minimal and convenient screenshot utility for X11 Most screenshot utilities compatible with X are clumsy, use bloated toolkits, and often do

Greenshot - a free screenshot tool optimized for productivity

Greenshot - a free screenshot tool optimized for productivity Welcome to the source repository for Greenshot What is Greenshot? Greenshot is a light-w

Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.
Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.

Xournal++ is a hand note taking software written in C++ with the target of flexibility, functionality and speed. Stroke recognizer and other parts are based on Xournal Code

Xournal++ is a handwriting notetaking software with PDF annotation support
Xournal++ is a handwriting notetaking software with PDF annotation support

Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.

Flameshot - Powerful yet simple to use screenshot software.
Flameshot - Powerful yet simple to use screenshot software.

Flameshot - Powerful yet simple to use screenshot software.

Make screenshot every few minutes to make your small history!

Screenlapse Fun CPP application (which isn't well-made, can be optimized) that automatically make screenshots of your screen every few minutes and sto

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal tool for measuring cost of mode switch

CPU mode switch statistics The mode-switch-stat tool measures the cost of CPU mode switch, the round trip between user and kernel mode. At present, th

Minimal unit testing framework for C

MinUnit Minunit is a minimal unit testing framework for C/C++ self-contained in a single header file. It provides a way to define and configure test s

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

Minimal Huffman coder/decoder

huffandpuff This is an extremely minimal huffman encoder/decoder. It uses no calls at all, not even stdlib/stdio, making it suitable for embedded appl

Minimal A* implementation in C. No dynamic memory allocation.

Micro A Star Path Finder This is a minimal A* path finder implementation in C, without any dynamic memory allocation. Usage The maximum size of the ma

Minimal A* implementation in C. No dynamic memory allocation.

Micro A Star Path Finder This is a minimal A* path finder implementation in C, without any dynamic memory allocation. Usage The maximum size of the ma

cherry: A Minimal HTTP Server
cherry: A Minimal HTTP Server

cherry: A Minimal HTTP Server Inspired by the Capriccio project and the Zaver HTTP server, cherry started out as an experimental project trying to inc

minimal POSIX compliant sleep

Minimal POSIX compliant sleep. Results Only 3 syscalls per execution $ strace ./sleep 1 execve("./sleep", ["./sleep", "1"], 0x7ffc998d09a8 /* 40 vars

The minimal opencv for Android, iOS and ARM Linux

opencv-mobile ✔️ This project provides the minimal build of opencv library for the Android, iOS and ARM Linux platforms. ✔️ We provide prebuild binary

A single header C++ library for parsing command line arguments and options with minimal amount of code

Quick Arg Parser Tired of unwieldy tools like getopt or argp? Quick Arg Parser is a single header C++ library for parsing command line arguments

Comments
  • Misc Usability Changes

    Misc Usability Changes

    I'm thinking

    • ^z to undo, ^Z / ^r to redo
    • ctrl-alt mousewheel to increase/decrease brush size (ala gimp)
    • clicking should make a dot, instead of having to move at least 1px for it to register
    • shift-clicking should draw a straight line from the last draw position (ala gimp)

    some (if not all) of these are probably complicated though.

    Either way, nice project, gimp starts wayyy too slowly for edits like this.

    opened by 6gk 4
  • memory leak when drawing

    memory leak when drawing

    whenever I draw (ie hold left mouse and move it) the memory usage goes up quite fast, but doesn't go down.

    I think this may have to do with the undo logic (btw you should add ^z support), even though it still happens if I don't let go, and the memory usage doesn't go down if I "reset" the undo history (undo, make new change). I'm assuming that it saves the previous image instead of just the changes.

    opened by 6gk 2
  • Arguments

    Arguments

    Didn't try out the is_maximized and is_on_top options so you should probably test them. --help (-h) and --version (-v) are automatically handled by argp using the corresponding metadata in the top section of pinsel.c.

    opened by Baseng0815 1
  • Updated shell.nix and Makefile

    Updated shell.nix and Makefile

    The nix shell file needed lua, and for some reason I couldn't build on NixOS, which lead to the Makefile code addition.

    You should try building on your system first to see if it works.

    Related Bug Thread

    opened by JavaCafe01 0
Owner
null
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Dear ImGui (This library is available under a free and permissive license, but needs financial support to sustain its continued improvements. In addit

omar 44.5k Jan 7, 2023
[WIP] Demo of a minimal but functional Dawn-based WebGPU client and server

dawn client-server example The goal of this demo is to create a minimal but functional Dawn-based WebGPU client and server with the following traits:

Rasmus 16 Sep 19, 2022
This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain

This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window and input handling but instead provides a very modular library approach by using simple input state for input and draw commands describing primitive shapes as output.

Micha Mettke 13.5k Jan 8, 2023
HoI4 Modding Tool That Does It All! Now with a QT based GUI, all your work wil be easier!

Kadaif - HoI4 Modding Tool Kadaif is a cross-platform tool meant to help you make mods for Hearts of Iron IV. With VSCode and all it's extensions, man

null 1 Dec 14, 2022
A powerful and fast search tool using regular expressions

A powerful and fast search tool using regular expressions

Stefan Küng 1.3k Jan 8, 2023
Windows GUI version of the age file encryption tool (built on rage, the Rust implementation)

Windows GUI version of the age file encryption tool (built on rage, the Rust implementation)

Theron Spiegl 42 Dec 21, 2022
FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

FLTK - Fast Light Tool Kit - a cross-platform C++ GUI toolkit for UNIX(r)/Linux(r) (X11)

The FLTK Team 1.1k Dec 25, 2022
Minimal screenshot annotation tool

pinsel What This is a program that helps with quick small annotations in screenshots made with maim or something similar. Everything is in progress cu

null 38 Dec 26, 2022
Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

ksnip 1.5k Jan 4, 2023
6D - Pose Annotation Tool (6D-PAT) - is a tool that allows the user to load a set of images and also a set of 3D models and annotate where in the 2D image the 3D object ist placed.

6D - Pose Annotation Tool (6D-PAT) For detiled explanations checkout the WikiPage. What is it? With 6D-PAT you can create 6D annotations on images for

Florian Blume 71 Nov 20, 2022