#manga #cli #bbf

bin+lib boundbook

A Rust rewrite of the Bound Book format by ef1500

17 releases

Uses new Rust 2024

0.3.21 Feb 9, 2026
0.3.12 Feb 9, 2026
0.2.51 Feb 6, 2026
0.1.0 Feb 1, 2026

#488 in Encoding


Used in e62rs

Custom license

285KB
6K SLoC

Rust 4.5K SLoC // 0.0% comments BASH 505 SLoC Zsh 325 SLoC PowerShell 171 SLoC Elvish 150 SLoC Nushell 146 SLoC // 0.2% comments

boundbook - A Rust port of libbbf with some extras

Follows the Bound Book Format specification (v3)

Features I've added so far:

  • A CBZ-to-BBF converter
  • An in-terminal book reader

Installing the CLI

To install the boundbook CLI, run:

cargo install boundbook -F cli

Without the cli feature flag, the boundbook binary will do nothing.


Command-Line Help for boundbook

This document contains the help content for the boundbook command-line program.

Command Overview:

boundbook

BBF CLI

Usage: boundbook <COMMAND>

Subcommands:
  • docs — Print help
  • create — Create a BBF file from images
  • info — Display BBF file information
  • verify — Verify BBF file integrity
  • extract — Extract pages from a BBF file
  • from-cbz — Convert CBZ archive to BBF format
  • read — Read a BBF file in the terminal
  • complete — Generate CLI completions

boundbook docs

Print help

Usage: boundbook docs

boundbook create

Create a BBF file from images

Usage: boundbook create [OPTIONS] --output <OUTPUT> <INPUTS>...

Arguments:
  • <INPUTS> — Input files or directories containing images
Options:
  • -o, --output <OUTPUT> — Output BBF file path

  • -O, --order <ORDER> — Page order file (format: filename:index)

  • -S, --sections <SECTIONS> — Sections file (format: Name:Target[:Parent])

  • -s, --section <ADD_SECTIONS> — Add section markers (format: Name:Target[:Parent])

  • -m, --meta <METADATA> — Add metadata (format: Key:Value[:Parent])

  • -a, --alignment <ALIGNMENT> — Byte alignment exponent (default: 12 = 4096 bytes)

    Default value: 12

  • -r, --ream-size <REAM_SIZE> — Ream size exponent (default: 16 = 65536 bytes)

    Default value: 16

  • -v, --variable-ream-size — Enable variable ream size for smaller files

  • -d, --auto-detect-sections — Auto-detect subdirectories with images and create sections from directory names

boundbook info

Display BBF file information

Usage: boundbook info <INPUT>

Arguments:
  • <INPUT>

boundbook verify

Verify BBF file integrity

Usage: boundbook verify [OPTIONS] <INPUT>

Arguments:
  • <INPUT> — BBF file to verify
Options:
  • --index-only — Verify only the index hash (faster)
  • --asset <ASSET> — Verify a specific asset by index

boundbook extract

Extract pages from a BBF file

Usage: boundbook extract [OPTIONS] <INPUT>

Arguments:
  • <INPUT> — BBF file to extract from
Options:
  • -o, --output <OUTPUT> — Output directory for extracted pages

    Default value: ./extracted

  • --section <SECTION> — Extract only pages from a specific section

  • --until <UNTIL> — Stop extraction when reaching a section matching this string

  • --range <RANGE> — Extract a specific page range (e.g., 1-10 or 5)

boundbook from-cbz

Convert CBZ archive to BBF format

Usage: boundbook from-cbz [OPTIONS] --output <OUTPUT> <INPUT>

Arguments:
  • <INPUT> — Input CBZ file or directory containing CBZ files
Options:
  • -o, --output <OUTPUT> — Output BBF file
  • -m, --meta <METADATA> — Add metadata (format: Key:Value[:Parent])
  • -k, --keep-temp — Keep temporary files for debugging
  • -d, --directory-mode — Process directory of CBZ files as chapters

boundbook read

Read a BBF file in the terminal

Usage: boundbook read [OPTIONS] <INPUT>

Arguments:
  • <INPUT> — BBF file to read
Options:
  • -P, --prerender — Pre-render all pages before reading (uses more memory but smoother navigation)

  • -W, --max-width <PIXELS> — Maximum width in pixels (aspect ratio preserved)

  • -H, --max-height <PIXELS> — Maximum height in pixels (aspect ratio preserved)

  • --max-cols <COLS> — Maximum width in terminal columns (overrides max-width if set)

  • --max-rows <ROWS> — Maximum height in terminal rows (overrides max-height if set)

  • -f, --filter <FILTER> — Image scaling filter quality

    Default value: lanczos3

    Possible values: nearest, triangle, catmull-rom, gaussian, lanczos3

  • -g, --enable-gif-animation — Enable GIF animation playback

    Default value: true

  • --gif-speed <MULTIPLIER> — GIF animation frame delay multiplier (1.0 = normal speed)

    Default value: 1.0

  • -l, --gif-loop — Loop GIFs infinitely

    Default value: true

  • -i, --gif-interpolate <COUNT> — Number of interpolated frames to generate between each GIF frame (0 = disabled)

    Default value: 0

  • -m, --interpolation-method <INTERPOLATION_METHOD> — Frame interpolation algorithm

    Default value: blend

    Possible values:

    • blend: Simple linear blending (fastest)
    • smooth: Weighted blending with ease-in/ease-out
    • cosine: Cosine interpolation for smoother transitions
    • cubic: Cubic hermite spline interpolation
    • perlin: Perlin smoothstep (quintic hermite)
    • exponential: Exponential ease-in-out
    • optical-flow-sparse: Optical flow based (Lucas-Kanade sparse)
    • motion-compensated: Motion-compensated blending (simplified Horn-Schunck)
    • catmull-rom: Catmull-Rom spline (requires 4 frames, falls back to cubic)
  • --sidebar-width <SIDEBAR_WIDTH> — Sidebar width in columns

    Default value: 30

  • --slideshow-delay <SECONDS> — Slideshow auto-advance delay in seconds

    Default value: 5.0

boundbook complete

Generate CLI completions

Usage: boundbook complete <SHELL>

Arguments:
  • <SHELL>

    Possible values: bash, elvish, fish, power-shell, zsh, nushell, clink, fig


This document was generated automatically by clap-markdown.

Dependencies

~17–62MB
~1M SLoC