Reading books in the ePub format is one of the major technological breakthroughs as far as I am concerned (did I tell you about my 25k ePub files?). I couldn’t care less about everything Kindle, and PDF is a file format best suited to non-fiction books. So I need to be able to read no matter what e-book under Linux too.

Preamble & Android

Mind you, I’ve been advocating eInk-based readers for 15+ years, yet most of the time I use a smartphone to read books. The main reason is that many e-book reading apps are buggy, and that most ePub files are imperfect in one way or another, which typically means that sometimes I need to be able to use another app when a specific file renders rather poorly in my preferred app. With a dedicated reader, there is a mega-choice of 1 (one) app; even with the ability to override the book’s typeface, margins and alignment, sometimes that’s not enough.

In Android, my “battery” of apps consists of:

No, I don’t recommend any of FBReader, FBReader Premium, Moon+, Moon+ Pro, Aldiko Classic, Aldiko Next, ReadEra, ReadEra Premium, Bookeen, Freda, Bookari, eBoox, etc. etc.; nor do I care much about the store-bound apps such as Kobo Books, tolino, Thalia, Osiander, Skoobe, and so on.

This being said, I require a Windows computer to download the DRM-protected books, because I need to be able to remove the DRM protection. Come and handcuff me!

Windows

On Windows, any version of Adobe Digital Editions is pure crap; the newer ones keep insisting that they want to “add the book to the library” each time I open a book (no, shithead, I don’t want you to make copies of my 25k books; just fucking read them from where they are!); the oldest that works, 1.7.2, can’t properly display the EPUB 3.0 e-books, and it has issues with some EPUB 2.0 books too. But I keep an ADE 1.7.2 installed just to be able to purchase books. (Not that I wouldn’t know the best e-book pirates for English, French, Italian, Spanish, and German books.)

To read ePubs, the choice is simple:

Linux

Until recently, I thought that Foliate was the answer to the ePub question in Linux. I even cursed Ubuntu for not including it in their repos (maybe that’s because Debian doesn’t either), while they have a snap for it (there’s however a PPA to fix that); I have to praise MX Linux for maintaining a foliate package (given that Debian doesn’t); Arch has it in Community, Manjaro has it too; and Fedora has it in the official repos.

Then, a challenge came.

The challenge

How about having a 500 MB ePub? This is far from common, but this is how you’d get The New Yorker Encyclopedia of Cartoons if you want it electronically, and not for Kindle, but as ePub (e.g. Kobo, Bücher, Decitre).

This is a challenge for many e-book apps! The ePub format was not meant for books that contain 3,000+ comics; in such a case, anything else would have been a better choice: PDF, CBZ/CBR, to name the most common formats. What’s worse, even with the DRM removed, one cannot make a CBZ/CBR out of the images, because the text for each comic strip is in a separate XHTML file. So this ePub must be used as is.

How are our apps behaving? I won’t be considering Android, because I hate the tablets (so I don’t own any), and phones are not the best choice for comic strips.

Windows: Die Frisur hält! Drei Wetter Taft.

No problem for Aquile:

Sumatra PDF can handle it too:

Both can open the file very quickly. Case closed.

Linux: The Emperor is Naked!

➡️ Umm… Foliate is a big failure with such a big file, unless you’re willing to wait an eternity for something to happen (I didn’t, so I don’t know if it eventually crashes):

We need to look for something else.

➡️ How about Atril? It can read ePubs too!

Nay. It can’t fit the page to the window, it can’t zoom out the images! Fail.

➡️ Okular, maybe?

It is usable, but even with “Fit Page” (and dual-page view), it still cannot scroll down precisely one or two pages at the time. The above screenshot is manually adjusted to display full pages and nothing else, but usually you’d see fragments of the pages that follow. Not a great choice.

➡️ GNOME Books, because people love GNOME so much?

This is a totally retarded app, as there’s absolutely no way to zoom out (or zoom in) a page! And the text is tiny for this book. No go.

➡️ Enter Bookworm, originally developed for Elementary OS. The developers offer a PPA for Ubuntu, but most other Linux users are invited to download a gargantuan Flatpak. Thanks, but no, thanks.

The RPM built for openSUSE requires poppler-tools, while Fedora has poppler-utils. Aaargh! Let’s build it from source.

Ouch, it requires python2, which has been retired from Fedora. Thankfully, I got it from UnitedRPMs; beware that RPM Fusion doesn’t offer it, and you’re not supposed to be using both UnitedRPMs and RPM Fusion! (I wasn’t, and I’m not.)

Funny thing, some required packages have different names in Fedora vs Ubuntu or Elementary OS:

  • libgtk-3-dev -> gtk3-devel
  • ibgee-0.8-dev -> libgee-devel
  • libgranite-dev -> granite-devel
  • libsqlite3-dev -> libsqlite3x-dev
  • libxml2-dev -> libxml2-devel
  • libwebkit2gtk-4.0-dev -> webkit2gtk3-devel
  • webkit2gtk-4.0 -> webkit2gtk3
  • libpoppler-glib-dev -> poppler-glib-devel
  • valac -> vala

This being said… it works… with random zooming, and if you enable the 2-page view, it only honors it when it feels like!

But that was built on Fedora. Maybe I should try the official package for Ubuntu!

Well, it works just about the same, but while trying it on Ubuntu MATE with Yaru Dark, I noticed it doesn’t fully support a dark theme:

Not cool, to force the users towards a light theme!

Also, this is one of those apps who “import” the books instead of just accessing them from where they are, which in this case means that copies of the accessed books will be created under ~/.local/share/com.github.babluboy.bookworm/books/.

➡️ The last contender, a fine product from Beijing (no kidding!): Koodo Reader!

The website is nice, the GitHub is useful to those who want to build it from source. For the more practical ones, the binary offer includes: Koodo-Reader-1.3.4.deb, Koodo-Reader-1.3.4.AppImage, Koodo-Reader-1.3.4.snap, Koodo-Reader-1.3.4.rpm. Unfortunately and unpleasantly, there are no direct download links, but rather the links are JS-created in the download page, and they expire; I suppose the developer really wanted to be able to count the downloads! (Hi, Uncle Xi, count me in!)

This being said, the DEB/RPM are 60 MB in size, and they install easily… except that in Ubuntu you might need to do this first:

sudo apt install libappindicator3-1

Koodo Reader (koodo-reader) is not a bad app at all, but it’s one of those who wants to “import” books in a “library”; this means that, by default, copies of the accessed books will be stored under ~/.config/koodo-reader/uploads/data/book/. However, there is the possibility to enable Import books as link, which means the books won’t be copied anywhere anymore!

One more thing to enable in Settings: Disable analytics service.

🇨🇳 Note to all the Chinese on planet Earth: even if Mandarin doesn’t have plural forms for nouns, most languages (if not all) do, therefore please STOP LABELING everything Setting instead of Settings! Thank you. (Also note that in the local storage, the books are stored in ~/.config/koodo-reader/uploads/data/book/, not in ~/.config/koodo-reader/uploads/data/books/.)

Back to the beast. First thing, Fedora.

Note that, after having imported a book, sometimes you need to refresh the view, or to click on something else than “Books” and back on “Books” to have the book listed:

The book is displayed just fine:

It would zoom any clicked image:

All the controls, grouped at the edges (triggered by moving the mouse to the respective windows edge):

I then tried it in Ubuntu MATE. The behavior was identical, except that, for some reason, the opening of this huge ePub took longer than in Fedora:

Still, everything went well:

Linux: The Bottom Line

For “normal” fiction books, Foliate should still be fine, and practical enough at that. For “size-challenged” files, I’d strongly recommend Koodo Reader instead.

A last advice: should you be using Foliate in a distro that doesn’t package it (Ubuntu, Debian), try avoiding the stupid snap Flatpak! While the .deb is only 872 KB in size (it’s tiny!), the snap Flatpak weights 768 MB, and requires 2.6 GB of disk space!

Over and out.

A NEW CASE! And a new test for the ePub-reading apps!

Sometimes, things are more complex as they seem, and there are good reasons to REJECT the stupid approach of some people and of some distros called “one application per task”: there are always some files for which an alternate/fallback app must be available. There is always some image file, or PDF file, etc. that doesn’t display as intended in one’s preferred image or PDF or whatever viewer. That’s exactly why everyone who’s not retarded should have more than one image viewer, more than one video player, more than one PDF viewer, and… more than one ePub viewer! (Even for text editing, I prefer to have several text or code editors.)

The new case at hand is the graphic novel version of Yuval Harari’s Sapiens, in two volumes, in the ePub format. Each volume comes as a huge ePub (430 MB and 446 MB!), and I suspect they were optimized for iOS and macOS, because… Houston, we have a problem!

Sapiens as ePub in Windows

So far, I said that both SumatraPDF and Aquile Reader were winners. Well, I was wrong!

➡️ Here’s Aquile Reader FAILING with both ePub files (no DRM):

➡️ AN EXPLANATION: These two books aren’t your regular ePub files, but smarter ones, made for easier translation. Each page is an image with empty speech bubbles…

…then the text is drawn, using the embedded fonts, in the right places! Most of the time, this is the typeface for bubbles:

For some reason, this font renders poorly at two specific sizes, at least in Linux

➡️ Now, here’s Sumatra PDF, FAILING in a similar way:

➡️ What works in Windows? Partially working, meaning that it can’t use the right typefaces, but at least the comics can be read… Adobe Digital Editions 4.5.11! (I guess it was released in early-2018, but there isn’t any update ever since.)

It’s quite sad that it can’t use the proper typefaces! To see how these comic strips should look like, you have two choices, other than (I’m just guessing here!) using Apple’s devices:

  • Purchase the printed books.
  • Use Linux.

Sapiens as ePub in Linux

There are surprises here too.

➡️ Foliate FAILING is no surprise here:

➡️ Here’s Koodo Reader, previously a winner, FAILING, not just because it uses the wrong typeface, but because it also uses wrong positioning and/or size:

It also fails to display two pages in the 2-page mode, and in such a case both bottoms of the page read “Page 1”:

➡️ GNOME Books, surprisingly, WORKS! (The books must be in ~/Documents.)

➡️ Atril, this time, WORKS too!

Note that Atril has a few quirks, which I didn’t explain in the previous case of the New Yorker cartoon collection. It’s what I called “the lucky window width”; here’s what I mean by that.

Sometimes you can be lucky to see the images properly fitting the window, as it’s the case with the two Sapiens graphic volumes, and also with some of the cartoons from the New Yorker:

Some other times you aren’t that lucky, and the zoom factor (e.g. 50%) simply doesn’t work for images!

What you need to do in such cases is to decrease Atril’s window width:

I remember that in the past I was using this “window width vs height” trick in Adobe Digital Editions too!

➡️ Bookworm, since I had it installed, is QUITE GOOD, albeit not perfect:

Linux: In lieu of a conclusion

Previously, I said your shortlist should include Foliate for “normal” books, and Koodo Reader for “size-challenged” books.

Now I learned that there are cases when you’d need Atril, Bookworm, or GNOME Books.

If you dreamed of using “one app per task”… you were a bit dumb. You need… five apps per task!

Welcome to the world of (bad) software.