Ebookrack Finder

Interactively select and open a book in your Calibre library from the terminal

The ebk-find command launches a fuzzy finder program, presenting the titles, authors, and tags of all the books in your library. As you type in key words or names, the list gets narrowed down. When you press Enter, the selected e-book gets opened in your default viewer via xdg-open.

Animation of command-line usage

See the quick start guide for how to get started.

Why not just use Calibre?

If you’re more likely to have a terminal open at any given moment than the Calibre app, opening a book in Calibre is a multi-step process that involves several context switches and takes a several seconds, even with keyboard shortcuts. ebk-find is designed to open your book and get out of the way as fast as possible.

It can also be used on a system that doesn’t have Calibre installed, e.g. if the library was created on a different system and copied across or mounted via USB drive.

Why not use the file manager (or find or fzf)?

This is certainly an option, especially if you have a file manager that lets you save and re-run searches. But the file paths contain extraneous information (database IDs) and don’t include all authors, full titles, or any subject tags. Unless your file manager also supports querying the metadata of various e-book formats, ebk-find provides more precise filtering.

What operating systems does it run on?

ebk-find is designed for systems implementing the freedesktop.org specifications, typically Linux or BSD desktops. It should work on other systems, with some caveats.

Can it only be used for Calibre libraries?

ebk-find should work for any library with the following file structure:

path/to/library
├── Author A
│   └── Title X
│       ├── metadata.opf
│       ├── title-x.epub
│       └── title-x.pdf
└── Author B
    ├── Title Y
    │   ├── metadata.opf
    │   └── title-y.pdf
    └── Title Z
        ├── metadata.opf
        └── title-z.mobi

where:

  • the book directory must be two levels below the library root;
  • it must contain a file named “metadata.opf” in OPF format;
  • the OPF document must contain at least a “dc:title” element;
  • the book directory can contain zero or more e-book files in any format;
  • the e-book files can have any file name that does not end in “.opf” or “.jpg”.