hassan@alsallam:~/projects/raff$ bat README.md

Raffرَفّ

A shelf that batches GNOME screenshots and hands their paths to terminal AI agents

Working build2026linux-appsource: private · ask me
Onboarding welcome screen
Onboarding welcome screen
Onboarding step for the summon hotkey
Onboarding step for the summon hotkey
Onboarding step explaining Agent Mode
Onboarding step explaining Agent Mode
Empty shelf ready for screenshots
Empty shelf ready for screenshots
Shelf holding a batch of screenshots
Shelf holding a batch of screenshots

What it is

Raff is a screenshot shelf. It catches every screenshot the moment GNOME saves it, groups them into batches, and hands them to terminal AI agents as pasteable paths, which kills the drag-and-drop safari of feeding images to a command-line tool. Raff means shelf in Arabic, the place things rest between one hand and the next.

It is a single Rust crate on GTK4 and libadwaita, built programmatically. The clever bit is Agent Mode, on by default: on every capture the clipboard becomes a dual-MIME source carrying both the image bytes and the batch’s quoted file paths, so a terminal pastes the paths while an image editor still gets the image. It also talks to Herdr to send a batch to a running agent. File custody is strictly read-only; Raff only ever deletes to the trash.

Two lessons from earlier projects are baked in: it never watches the clipboard, because Mutter forbids background capture, and it never auto-submits a prompt.

Features

Stack

RustGTK4libadwaitaWaylandrusqliteD-Bus

~8,800 lines of Rust · 21 tests