Search tool for EPUB e-books
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tastytea b557656649 Merge commit '6c33fb4dcebd5464d89ca3fb98bdf23847d81fbf' as 'dist/termcolor' 1 year ago
cmake Squashed 'dist/termcolor/' content from commit 9a832a1 1 year ago
dist/termcolor Merge commit '6c33fb4dcebd5464d89ca3fb98bdf23847d81fbf' as 'dist/termcolor' 1 year ago
man Fix typo in man page. 1 year ago
src Only initialize search::options once. 1 year ago
tests Add test for search helpers. 1 year ago
translations Make file paths in pot-file relative to project directory. 1 year ago
.clang-format Add .clang-tify and .clang-format. 1 year ago
.clang-tidy Add .clang-tify and .clang-format. 1 year ago
.drone.yml Support CMake 3.12. 1 year ago
.editorconfig Initial commit. 1 year ago
.gitignore Squashed 'dist/termcolor/' content from commit 9a832a1 1 year ago
AUTHORS Initial commit. 1 year ago
CMakeLists.txt Squashed 'dist/termcolor/' content from commit 9a832a1 1 year ago
CODE_OF_CONDUCT.adoc Initial commit. 1 year ago
CONTRIBUTING.adoc Add translator's information. 1 year ago
CREDITS Update credits. 1 year ago
LICENSE Squashed 'dist/termcolor/' content from commit 9a832a1 1 year ago
README.adoc Bump version to 0.1.3, fix typos. 1 year ago




See manpage.


Packaging status

From source


  • Tested OS: Linux

  • C++ compiler with C++17 support (tested: GCC 7/10, clang 6/11)

  • CMake (at least: 3.12)

  • Boost (tested: 1.75.0 / 1.65.0)

  • gettext (tested: 0.21 / 0.19)

  • libarchive (tested: 3.5 / 3.2)

  • fmt (tested: 7.0 / 4.0)

  • AsciiDoc (tested: 8.6 / 9.0)

  • Optional

    • Tests: Catch (tested: 2.13 / 1.10)

Get sourcecode


Download the current release at

Development version
git clone


mkdir -p build && cd build
cmake ..
cmake --build . -- --jobs=$(nproc --ignore=1)
# cd tests && ctest
CMake options:
  • -DCMAKE_BUILD_TYPE=Debug for a debug build.

  • -DWITH_TESTS=YES if you want to compile the tests.

  • -DXGETTEXT_CMD=String The program to use instead of xgettext.

How to contribute

Read the Code of Conduct.

Reporting bugs or suggesting enhancements

Before reporting a bug, please perform a search to see if the problem has already been reported. If it has, add a comment to the existing issue instead of opening a new one. Same for enhancements. It is helpful to re-run the command producing a bug with --debug and attaching the log file to the bug report. The log file of the last run is usually in ~/.local/state/epubgrep/epubgrep.log.

You can also contact me via E-Mail, XMPP or the Fediverse if you don’t want to open an account.

Pull requests

Please use similar coding conventions as the rest of the project. The basic rule to remember is to write code in the same style as the existing/surrounding code.

Add a copyright line with the year, your name and your email address to the files you edited. Add your name and email to AUTHORS. Unless you don’t want to.

You can also send me your patches via E-Mail, ideally using git send-email.


Creating a new translation

To create a new translation, copy translations/epubgrep.pot to translations/[LANGUAGE ABBREVIATION].po (Replace [LANGUAGE ABBREVIATION] with the correct abbreviation for your language, e.g. “es” if you are translating into Spanish or “pt_BR” if you are translating into Brazilian Portuguese). The pot-file is generated during the build process.

Open your new po file with your favourite text editor, (or you may prefer to use a translation catalog editor like Poedit), and first edit the header section of your file. You will need to replace the text in UPPERCASE with the correct values. The easiest way to work out how to do this is to compare it to another po file that already exists.

Updating your translation

When it is time to update your translation, first update your Git working directory. Then do the following:

cmake --build build
cd translations
msgmerge --update es.po epubgrep.pot

Then open your file and locate the strings that need updating. These will have an empty msgstr or will be marked “fuzzy”.

The translation guide is based on's_Information, licensed under GFDL-1.2-only.