Skip to Content
Odrakir
the garden

A screenshot tool for GNOME

OctoSnap

io.github.odrakirmusic.OctoSnap

Linux Rust

Capture, annotate and record the screen on GNOME. Every shot lands in a small card, ready to copy, save, pin or edit. And Omni, a pixel-art octopus, keeps you company on the desktop, never in your screenshots.

in bloom released · a signed Flatpak

In bloom: released · a signed Flatpak

What it does

Everything a capture needs

Built to the standard of the best macOS capture tools, rather than to the standard of what Linux had.

  • Capture anything Area, window or whole screen on one key, with a pixel loupe.
  • Quick Access cards Every shot lands in a card: copy, save, drag, pin or edit.
  • Annotate Arrows, shapes, text, counters, highlighter and crop.
  • Redact & spotlight Pixelate, blur or black out. Spotlight what matters.
  • Backgrounds Gradients, wallpapers or blur behind any screenshot.
  • Scrolling capture Scroll a long page; OctoSnap stitches it into one image.
  • Text & QR codes Copy the text in any part of the screen, read on your own machine.
  • Pin on top Float a capture above your windows, on every workspace.
  • GIF recording Record, trim to the frame, share.
  • Capture history Every capture kept, ready when you need it again.
  • Editable projects Save as .octosnap and pick up where you left off.
  • Self-timer A countdown over the live screen, for menus and hovers.

On your desktop. Never in your screenshots.

Side by side

More than any other on GNOME

Set beside six other screenshot tools, and read from each one's code rather than its README.

What each can do on GNOME Wayland, of the 353 capabilities found in the seven tools' code

  1. OctoSnap283
  2. ksnip168
  3. Flameshot149
  4. Shutter146
  5. Gradia138
  6. GNOME Shell93
  7. Kooha88

50 of them are in OctoSnap and in none of the others. Counted at OctoSnap 0.1.13; a feature a tool has only on X11, Windows or macOS doesn't count. The full comparison links every mark to the line of code it rests on, and lists where the others go further.

See it

One toolbar, one card

Pick what to capture from one toolbar, then annotate, redact and finish it in the editor.

OctoSnap's editor: a capture of its Settings, with a red arrow, a callout reading Shown first, a framed section and two numbered steps
Annotate a capture with arrows, shapes, numbered steps, text and redaction.
All-In-One: an area selected with handles, its size typed in, and a toolbar of Area, Fullscreen, Window, Scrolling, Timer, Text and Record
Pick an area, a window or the whole screen from one toolbar.
OctoSnap's Settings, on what happens after a capture: show the card, copy, save, open in the editor, pin
Settings for what happens after each capture.

OctoSnap's own windows over a capture of its own Settings, made in a nested GNOME Shell at 1280 × 800, so nothing in them is anyone else's work.

Company on the desktop

Meet Omni

OctoSnap's octopus. Turn on Desktop Pets, and it glides along the bottom of your screen, sits on your pinned screenshots and reacts to what you capture.

Glides along the bottom of your screen, on its arms
Changes colour teal, gold or coral, like a real octopus
Inks a puff, and it turns up somewhere else
Waves now and then, just to say hello
  • Never in a capture. Pets hide while you choose what to capture, walk out of a recording's area before it starts, and no screenshot or recording ever has one in it.
  • Four friends. Pengu the penguin, Hops the frog, Morel the mushroom and Spud the potato, in six sizes from Tiny to Huge, from Silent to Lively.
  • Pets of your own. A pet pack is a folder with a sheet.png and a pet.json. Put it in ~/.local/share/octosnap/pets/, and its pet gets a card in Settings → Pets.

Under the hood

Fast. Light. Built in Rust.

Measured, not promised.

15ms

from shortcut to the capture overlay

Capture Area, median of 10

0.28s

to open a 5K screenshot in the editor

5120 × 2880, median of 5

0.18s

to export a 5K image with 30 annotations

median of 5

46MB

of memory while it waits

idle, 10 s after start

Built in Rust

Rust 2024, with unsafe code forbidden in all eight of its crates.

Native to GNOME

GTK 4 and libadwaita, and a Shell extension in TypeScript that draws the overlay.

Text read on your machine

PaddleOCR models on ONNX Runtime. The network is used only to fetch a language pack, when you ask.

1,750 tests

All passing for 0.1.13: 1,135 in Rust, 611 for the extension, 4 for packaging.

Fuzzed

Property tests and six fuzzers on what it reads from outside: links, projects, GIFs.

Signed updates

Installs and updates from its own signed Flatpak repository.

The extension

On GNOME Wayland an ordinary app can't read pixels, grab a global key or place its own windows; GNOME's own screenshot tool can because it is Shell code. So one half of OctoSnap is a Shell extension, in TypeScript: the keys, the capture overlay, the pixels, window geometry, placing the app's windows, the clipboard and the sounds.

The app

The other half is a GTK 4 and libadwaita app in Rust, running as a background service: the cards, the editor, the recorder, the pins, the history, settings, text recognition and notifications. The two speak over D-Bus, and images cross between them as files, never as bytes.

How it was measured. On an everyday laptop, not a test rig: the installed Flatpak, timed on 12 October 2026 by pressing the real shortcuts and opening real editor windows. The build is OctoSnap 0.1.13's code, installed just before its release, so it still reports 0.1.12. Each figure is a median of what the app and its extension log about themselves: 10 presses of Ctrl+Alt+Super+A, 5 opens and 5 exports of a synthetic 5120 × 2880 picture, and memory 10 s after a fresh start with no window open. The laptop: a Lenovo ThinkPad T14 Gen 4, Intel Core i7-1355U (10 cores, 12 threads, up to 5.0 GHz), 16 GB of RAM, Intel UHD Graphics, its own 1920 × 1200 screen at 100 %, Ubuntu 26.04.1 LTS, GNOME Shell 50.1, Linux 7.0, on mains power.

OctoSnap is written by Claude, Anthropic's AI coding agent, under my direction. Each release's commit names the Claude models that wrote it.

Plant it

One line in a terminal

The Flatpak brings everything, its extension included, and keeps itself up to date from OctoSnap's own signed repository.

  1. Install it

    flatpak install --user https://odrakirmusic.github.io/OctoSnap/io.github.odrakirmusic.OctoSnap.flatpakref

    Or open the .flatpakref in a software centre that installs Flatpaks. The runtime, GNOME 50, comes from Flathub.

  2. Let in its extension

    Open OctoSnap from the app grid. The welcome window checks its GNOME Shell extension and installs it; log out and back in, and the next start turns it on. Then it can take over the Print Screen keys from GNOME's own screenshot tool.

  3. Take a shot

    • Ctrl+Alt+Super+A Capture Area: drag over what you want, and it is taken when you let go
    • Ctrl+Alt+Super+W Capture Window: choose a window
    • Ctrl+Alt+Super+Space All-In-One: the last area again, with a toolbar to adjust it and choose what to do

    Or start from OctoSnap's menu in the top bar. The user guide has every shortcut and every tool.

Every release is signed, and Flatpak installs nothing its key did not sign. The key's fingerprint is BBCF EEBF BF63 B258 12FC D90E AB14 542B C463 67A7, and the key itself is octosnap.gpg.

Updates come from the same repository, three ways: Software, flatpak update, or OctoSnap itself, which says once when a newer release is out.

Installed from a release's .flatpak file of 0.1.8 or older? That copy updates from nowhere. Uninstall it first, which keeps your settings and history, then install it as above:

flatpak uninstall --user io.github.odrakirmusic.OctoSnap

To build it yourself, natively or as a Flatpak, the README has every step.

To dig it up again: the extension, the app, then its repository.

gnome-extensions uninstall octosnap@odrakirmusic.github.io
flatpak uninstall io.github.odrakirmusic.OctoSnap
flatpak remote-delete --user octosnap

Honest limits

What it doesn't do yet

  • GNOME 50 on Wayland. Its extension also declares GNOME 48 and 49, which haven't been tested, and no other desktop.
  • Not on Flathub or extensions.gnome.org yet. Both pieces come from OctoSnap's own repository and its releases.
  • GIFs, not video. It records GIFs with no sound, and it uploads nowhere.
  • English only, for now.
  • One licence, with one exception. OctoSnap is GPL-3.0-or-later; its GIF encoder, gifski, is AGPL-3.0-or-later, so a build carries both.

Issues and pull requests are welcome. A pull request is carried into the next release, with you as its author.

The back of the packet

The small print

Licence
GPL-3.0-or-later
Tags
Linux Rust
Works with
GNOME 50 on Wayland
Needs
Its GNOME Shell extension, which the app installs for you
Status
in bloom released · a signed Flatpak
Source
odrakirmusic/OctoSnap
Latest release
v0.1.13
Last tended
12 October 2026

Elsewhere in the garden

More seeds