AYOUB.*
← ALL PROJECTSREPOS ↗
← All projects
⬇️Download Manager
LibraryDownload Managerv4.16.0RustSource-available

Snatch

A fast download manager for Linux — GTK4

Read the full case study

Key Facts & Overview

Snatch is a download manager for Linux with a native GTK4 / libadwaita interface. It splits each file into 16 parts and grabs them in parallel, resumes after connection drops, and handles torrents, site video, image galleries, and whole-site grabs — all from one window. A browser bridge catches downloads before the browser starts them, carrying your cookies along.

  • ›Splits each file into 16 parts and resumes exactly where it left off after a dropout.
  • ›Drives aria2, librqbit, yt-dlp, gallery-dl, ffmpeg, Wget2 and 7-Zip as separate, unprivileged processes.
  • ›Never runs sudo itself — only the one-time install script asks for your password.
  • ›Talks over a local Unix socket, so any program can queue jobs into the running app.

Core Architectural Features

16-way multi-part downloads via aria2
Built-in torrent engine (librqbit) with sequential play
Video / audio & gallery scraping (yt-dlp, gallery-dl)
Whole-site grabs with Wget2
Native GTK4 / libadwaita interface
Browser extension bridge (snatch-nmh)
Checksum verification & auto-extract archives
Scheduled, throttled & proxy-aware downloads

Installation

curl -fsSL https://raw.githubusercontent.com/ayoubzulfiqar/snatch-dl/main/get.sh | sh

# Skip the extra tools
curl -fsSL https://raw.githubusercontent.com/ayoubzulfiqar/snatch-dl/main/get.sh | sh -s -- --no-extras

# Or a package
sudo apt install ./snatch-dl_4.16.0-1_amd64.deb   # Debian, Ubuntu, Mint

Usage

SOCK=~/.local/share/snatch-dl/snatch.sock

# A normal download
printf '{"url":"https://example.com/file.iso"}\n' | nc -U "$SOCK"

# A magnet link
printf '{"url":"magnet:?xt=urn:btih:..."}\n' | nc -U "$SOCK"

# A video
printf '{"kind":"video","url":"https://example.com/watch?v=..."}\n' | nc -U "$SOCK"

# A gallery
printf '{"kind":"scrape","url":"https://example.com/user/gallery"}\n' | nc -U "$SOCK"

# Response: {"ok":true,"gid":"..."} or {"ok":false,"error":"..."}

API Reference

{ "url": "<file-url>" }

Send a normal download job over the Unix socket.

{ "kind": "video", "url": "<page-url>" }

Queue a video / audio extraction job (yt-dlp).

{ "kind": "scrape", "url": "<page-url>" }

Queue a gallery / page-scrape job (gallery-dl).

{ "url": "magnet:?xt=..." }

Queue a torrent by magnet link (librqbit).

Resources & Repositories