An Audiobookshelf client for GNOME
  • Python 95.7%
  • Meson 1.7%
  • Nix 1.6%
  • CSS 0.5%
  • Shell 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jonathan Cremin d14f3e52c2
All checks were successful
Build Flatpak / build (push) Successful in 18s
Show file size on book download actions
2026-07-17 14:15:19 +01:00
.forgejo/workflows flatpak: build blueprint-compiler as a module; drop CI storage diagnostic 2026-07-16 17:52:45 +01:00
build-aux Update org.gnome.Platform to 50 2026-07-16 20:38:17 +01:00
data Add StartupWMClass to the desktop entry 2026-07-17 11:31:39 +01:00
po Fix login stall when a stored token is rejected 2026-07-16 18:39:01 +01:00
src Show file size on book download actions 2026-07-17 14:15:19 +01:00
tests Make chapter seek mode work in the pre-playback resume preview 2026-07-17 11:46:13 +01:00
ui Open the item detail from the player bar cover/title 2026-07-17 13:35:34 +01:00
.gitignore Add Flatpak build pipeline (Forgejo CI) 2026-07-16 16:21:17 +01:00
flake.lock Initial commit 2026-07-16 11:27:04 +01:00
flake.nix Rename internal identity from abs-gtk to stories 2026-07-16 18:18:11 +01:00
meson.build Rename internal identity from abs-gtk to stories 2026-07-16 18:18:11 +01:00
meson_options.txt Initial commit 2026-07-16 11:27:04 +01:00
README.md Rename internal identity from abs-gtk to stories 2026-07-16 18:18:11 +01:00
run.py Rename internal identity from abs-gtk to stories 2026-07-16 18:18:11 +01:00

stories

A modern GTK4 / libadwaita desktop client for Audiobookshelf, the self-hosted audiobook & podcast server.

Status: early development. See MILESTONES below.

Features (planned for v1)

  • Log in to an Audiobookshelf server (URL + username/password), token kept in the system keyring
  • Browse libraries and items, search, view book details & chapters
  • Stream playback with GStreamer — multi-file audiobooks, chapter navigation, playback speed
  • Server-side progress sync (resume where you left off, across devices)
  • Offline downloads with resumable transfers and local playback
  • Offline progress queue that flushes when you reconnect

Tech stack

Python 3 · PyGObject (GTK 4) · libadwaita · GStreamer · SQLite · libsecret. Built with Meson, UI written in Blueprint. Packaged as a Flatpak.

Development (NixOS)

This repo ships a flake.nix dev shell with the full toolchain.

nix develop          # enter a shell with GTK4, libadwaita, GStreamer, blueprint-compiler, meson…
./run.py             # compile resources in-tree and launch straight from src/

./run.py compiles the Blueprints, the GResource bundle, and the GSettings schema into _dev/, then runs the app without needing a full meson install.

Meson build (packaging path)

nix develop
meson setup builddir --prefix="$PWD/install-dev"
meson install -C builddir
./install-dev/bin/stories

Flatpak

flatpak-builder --user --install --force-clean build-flatpak \
    build-aux/flatpak/dev.cremin.Stories.json
flatpak run dev.cremin.Stories

Milestones

  • M0 — scaffolding, dev shell, empty window ← current
  • M1 — login + token persistence
  • M2 — browse libraries & items
  • M3 — streaming playback
  • M4 — online progress sync
  • M5 — offline downloads
  • M6 — offline progress + polish

License

GPL-3.0-or-later.