Skip to content

mbayue/gdl-gui

Repository files navigation

GDL GUI

Modern desktop GUI wrapper for gallery-dl, built with Tauri, React, TypeScript, Tailwind CSS, and Bun.

What this GUI does

GDL GUI runs gallery-dl without manual CLI typing.

Features:

  • Dashboard with multi-URL queue input
  • Quick Download panel for simple one-off downloads
  • Advanced options for common gallery-dl flags
  • Config profiles with visual fields and JSON validation
  • Realtime stdout/stderr logs
  • Queue status, progress estimates, copied commands, retry, cancel, remove
  • Local download history stored in SQLite through the Tauri SQL plugin
  • Settings for executable path, theme, concurrency, notifications, and safe mode
  • Portable storage mode for USB/self-contained app folders

Requirement

Install gallery-dl separately. GDL GUI wraps your installed executable. It does not bundle or rewrite it.

Check install instructions here:

Example:

python -m pip install -U gallery-dl
gallery-dl --version

Install dependencies with Bun

bun install

If Bun is not compatible on your machine, use pnpm:

pnpm install

Run dev mode

bun run tauri dev

pnpm fallback:

pnpm tauri dev

Build desktop app

bun run tauri build

pnpm fallback:

pnpm tauri build

Portable mode

GDL GUI stores data in the OS app-data directory by default. Portable mode stores data next to the executable:

<app folder>/
  gdl-gui.exe
  gdl-gui.portable
  data/
    settings.json
    profiles.json
    queue.json
    history.db

Enable portable mode with either method:

bun run portable:marker

Or create an empty file named gdl-gui.portable next to the built executable.

You can also set:

GDL_GUI_PORTABLE=1

The Settings page shows the active storage mode and app data directory.

Portable ZIP

For a simple portable ZIP, include these files from src-tauri/target/release/:

GDL-GUI-Portable/
  gdl-gui.exe
  gdl-gui.portable
  data/              # optional; app creates this on first run

Steps:

bun run tauri build
bun run portable:marker

Then zip:

src-tauri/target/release/gdl-gui.exe
src-tauri/target/release/gdl-gui.portable

Usage:

  1. Unzip anywhere.
  2. Run gdl-gui.exe.
  3. App detects gdl-gui.portable.
  4. App stores data in adjacent data/.

Notes:

  • Install gallery-dl on the target PC, or set the exact path in Settings.
  • Use the installer build if the portable exe fails to start (missing Windows WebView).
  • Keep the marker filename exactly gdl-gui.portable.

Security & Privacy

  • Arguments pass as arrays, avoiding shell injection.
  • Unsafe flags (--exec, --exec-before, --exec-after) are blocked.
  • Secrets (cookies, tokens, passwords) are redacted from logs and UI.
  • The UI warns before passing browser cookies.
  • Obey site terms, robots.txt, and rate limits.
  • Use rate limits and archive files for repeat downloads.
  • Do not bypass paywalls or login restrictions.

Architecture

src/
  App.tsx
  types.ts
  services/
    galleryDlService.ts
    queueService.ts
    profileService.ts
    appStorageService.ts
    historyService.ts
    settingsService.ts

src-tauri/
  src/lib.rs

Responsibilities:

  • src-tauri/ handles process execution, event streaming, cancellation, filesystem/runtime access, portable path detection, and SQLite plugin wiring.
  • src/ handles React UI, client state, profiles, command generation, logs, and history display.
  • galleryDlService builds safe argument arrays and calls Tauri commands.
  • queueService updates queue state from process events.
  • profileService imports/exports profile data.
  • appStorageService resolves portable/system data paths and reads/writes app JSON data.
  • historyService stores history in SQLite with localStorage fallback.
  • settingsService persists app settings and theme through portable-aware storage.

Screenshots

GDL GUI Screenshot

License note

This GUI is a separate wrapper application. gallery-dl is licensed GPL-2.0. Review and comply with gallery-dl licensing when distributing binaries or bundles that include or depend on it.

See:

About

A lightweight desktop GUI for gallery-dl.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages