Ebook readers for the Linux desktop

Fresh from the Press

© Igor Terekhov, 123rf.com

© Igor Terekhov, 123rf.com

Article from Issue 104/2009

A netbook and a good ebook reader are all you need to mine the wealth of free ebooks glimmering from the depths of the web.

Despite the wealth of free ebooks available on the web, the idea of reading books on a computer hasn't really caught on. In part this is because desktop machines, and even laptops, lack one key feature – convenience. But the arrival of netbooks might change this. These tiny and inexpensive machines finally make reading ebooks practical. All you need to do to turn your diminutive travel companion into a nifty reading device is install a good ebook reader. A number of these applications are out there, such as FBReader, GutenPy, or Calibre.


Originally developed for Sharp Zaurus, FBReader [1] is now available on a variety of platforms, including Linux and Google Android. FBReader packages are available for many popular Linux distributions, including Debian, Ubuntu, Fedora, and openSUSE, so you can install FBReader using your distro's package manager.. For Debian and Ubuntu users, the FBReader project provides an official repository [2], so you can install the application with the Synaptic package manager.

Despite its spartan interface, FBReader is loaded with useful features (Figure 1). For starters, the reader supports most popular ebook formats, including EPUB, FictionBook, OpenReader, RTF, OEB, unencrypted MOBI, and plain text. FBReader's interface doesn't stand in your way; instead, it gives you quick access to all essential functions.

Figure 1: FBReader sports a clean interface that doesn't stand in your way.

Before you can start using FBReader, you have to populate it with books. To do this, press the Add File to Library button and select the ebook file you want. Alternatively, you can copy all your ebooks into the library directory (by default, it's either the FBooks or Books folder in your home directory).

If you don't have any books on your machine, you might find the Network Library search feature rather handy (Figure 2). As the name suggests, you can use this feature to find ebooks in online repositories. FBReader currently supports two online ebook repositories: Feedbooks.com, which offers a decent collection of classic and modern authors, and LitRes, which provides books in Russian.

Figure 2: Using the Network Library search feature, you can search for ebooks in online ebook repositories.

Using the search field, you can quickly search for a title you like, and the Advanced Network search allows you to specify additional search criteria, such as title, author, series, category, and description. The list of found ebooks returned by FBReader contains not only book titles but also a short summary of each book along with icons indicating the available ebook formats. By clicking on the desired format icon, you can load the book directly into FBReader.

After the book is loaded, you can start reading it. FBReader offers a few features that make the reading process more comfortable. Using the Table of Contents button, you can view a hyperlinked table of contents, which lets you easily jump to a specific chapter in the book. The Text Search button allows you to search for a specific word or text fragment in the book, and the Rotate Text button rotates the text, so you can hold your netbook or laptop like a conventional book. When you close the book or quit FBReader, the application remembers your current position in the book, and the next time you open the book, you can continue reading where you left off.

FBReader can handle embedded graphics and hyperlinks, provided they are supported by the format of the currently viewed ebook. The reader opens links to websites in the default browser, but if you click on a link that points to an ebook file or document, FBReader conveniently downloads and adds it to your library.

FBReader offers a tagging feature that helps you keep your library organized (Figure 3). To add tags to the currently opened book, press the Book Info button, switch to the Tags section, and enter the relevant tags. When you press the Show Library Tree button, FBReader displays your book collection grouped by authors. Icons next to each title let you view and edit the book's info, as well as remove the book from the library. When reading an ebook on your laptop or netbook, using the mouse can be rather awkward. Fortunately, the reader supports keyboard shortcuts that make it significantly easier to control the application. Table 1 provides a few keyboard shortcuts you might find useful.

Figure 3: Grouping your ebooks by tags.

The Preferences button opens FBReader's settings window, and you can use the available options to tweak the reader to your liking. Using the options available in the Format and Style sections, you can modify spacing and alignment settings, as well as change the default font and font settings for each style. If the black-on-white scheme doesn't work for you, you can pick different font and background colors in the Colors section. In the Web section, you can choose which browser FBReader should use.

FBReader does lack a few features some users might consider essential. For example, you have no dictionary lookup feature, no support for bookmarks, no text annotation, and no auto-scroll feature. Still, if you can live without these, FBReader could quickly become your ebook reader of choice.


Project Gutenberg is a treasure trove for bookworms, and GutenPy [3] lets you access and use the project's vast collection of free ebooks from your desktop. In fact, GutenPy is not just a regular reader, but a hybrid application consisting of a Project Gutenberg catalog browser and a lightweight ebook reader. GutenPy is written in Python, and the project's website provides a .deb package for Debian-based distributions, along with a tar.gz archive for other distros. Installing the tarball is not too difficult: Unpack the archive, then open a terminal window, and, in the newly created directory, run python setup.py install as root.

The first thing to do when you launch GutenPy is download the Project Gutenberg catalog, find the books you like, and download them into GutenPy. To do all this, press the Browse the Catalog button (Figure 4). This prompts you to load the catalog, which should take a few minutes. Once the catalog has been loaded, you should see the catalog browser window listing all the available titles. GutenPy caches the catalog data, so you can use the catalog browser offline (you do need an Internet connection to download ebook files, though).

Figure 4: GutenPy's Catalog browser lets you easily browse, find, and download ebooks.

To make it easier to find the title you want, you can enable and specify one or multiple filters, such as author, title, subject, or language. After you've found the ebook you want, add it to the book list by pressing the Add To Booklist button. Repeat these steps for other ebooks you want to add to your library. Then press the Download Booklist button to fetch the selected ebooks. Pressing Quit closes the catalog browser; then choose File | Open and pick the book you want to read. Although GutenPy's reader interface is not exactly brimming with features, it does offer a couple of handy tools (Figure 5). For starters, GutenPy allows you to add and manage bookmarks. When you quit GutenPy, it prompts you to bookmark the current position in the book, so you can quickly jump to the bookmarked location next time you launch the reader. Dictionary Lookup is another useful tool that allows you to look up words from the Dict server, but to use this feature, you have to be connected to the Internet. Similar to FBReader, GutenPy supports several keyboard shortcuts, such as F to toggle full-screen mode, D to evoke the dictionary lookup dialog, and slash (/) to search text. Also, you can use the Spacebar to go to the next page, Backspace to go back, and Home and End to jump to the beginning and the end of the book, respectively.

Figure 5: GutenPy allows you to access and use Project Gutenberg from the convenience of your desktop.

Because GutenPy is closely tied to Project Gutenberg, it can't replace a dedicated ebook reader. However, if you use Project Gutenberg occasionally to grab and read a good classic ebook, you might want to keep the GutenPy application handy.


If your ebook library contains more than a dozen titles and you use a dedicated hardware device for ebook reading, then you need something more powerful than a lightweight ebook reader application. Enter Calibre [4], a comprehensive suite of tools for all your ebook needs. Not only can you use Calibre to read ebooks, you can also manage your library, convert documents into different ebook formats, transfer files to a reading device, serve your library on the web, and much more (Figure 6).

Figure 6: Calibre is a comprehensive suite of tools for all your ebook needs.

Although the Calibre project doesn't provide distro-specific packages of the application, installing it on Linux is not all that difficult. On Debian-based distros, it's a matter of running the following command as root:

python -c "import urllib2; exec urllib2.urlopen('http://calibre.kovidgoyal.net/download_linux_binary_installer').read(); main()"

Alternatively, you can install Calibre from source, and the project's download page [5] provides a description of the installation process.

When you start Calibre, it immediately becomes apparent that it's not your regular ebook reader. In fact, Calibre's interface is geared toward managing your ebook library. The main toolbar contains buttons that let you add ebooks to the library, edit their metadata, convert books to other formats, and send ebook files to reading devices. The Quick Search bar allows you to find the ebooks you want quickly, whereas the Advanced Search button allows you to perform more advanced searches. Using the Quick Search bar, you can narrow the search to specific properties, such as format, title, or publisher. For example, if you want to find books by Sigmund Freud published by Feedbooks.com, you can use the following search query:

Sigmund Freud publisher:feedbooks.com

To find all of Freud's books containing the word dream in the title, the query should be:

Sigmund Freud title:dream

And if you need to find books in a specific format – for example, EPUB – the search query would look like this:

Sigmund Freud format:epub

The Tags pane on the left displays your library grouped by authors, series, formats, publishers, news, and tags. To show the Tags pane, press the Tags button in the bottom-right corner of Calibre's window. Now you want to click on the Tags section to view a list of all available tags. Calibre also sports a more user-friendly approach for browsing your book collection, called Cover Browsing (Figure 7), which bears a strong resemblance to the Cover Flow feature in iTunes.

Figure 7: Calibre's Cover Browsing feature.

As if this wasn't enough, Calibre also allows you easily to locate books similar to the one currently selected. To select similar books, right-click on a book in the library listing and select the Similar books list, which offers several options like Books by same author and Books by this publisher.

The library listing, which occupies most of Calibre's interface, gives you a quick overview of the ebooks in your library. By clicking on the appropriate column, you can sort the list by specific criteria; by double-clicking in the appropriate field, you can edit metadata and ratings. The Edit meta information button opens a metadata editor that provides additional tools for tweaking ebook info. Instead of entering metadata manually, you can use the editor to fetch the data and a book cover from the LibraryThing [6] service. To do this, however, you need a LibraryThing account (you can create one free of charge) and the book's ISBN.

Before you can do all this, though, you have to populate your library with ebooks, which can be done with the Add books button. Calibre supports files in the LRF, EPUB, LIT, MOBI, RTF, PRC, HTML, PDF, and ODT formats. During import, Calibre reads and processes the metadata, such as author, title, book description, and tags, making it easier for you to manage and search ebooks in your library. Although Calibre can't display documents in some formats (notably PDF and ODT), with the built-in reader, it can open them in the appropriate external applications. Moreover, it can convert the documents in all supported formats to EPUB, LRF, or MOBI ebooks.

But the real gem in Calibre's feature set is the ability to fetch content from web sources and turn it into an ebook with the use of so-called recipes. Calibre comes with a large collection of predefined recipes that allow you to fetch content from many popular sources, such as CNN, Newsweek, The New Yorker, The Economist, Ars Technica, Linux Magazine/Linux Pro Magazine, and a slew of international blogs and web publications. Calibre pulls down not only headlines and short descriptions, but also full articles and posts. Better yet, the application converts everything into a neatly formatted ebook complete with a hyperlinked table of contents. To use one of these recipes to fetch content, press the Fetch news button in the main toolbar and select the recipe you want. Pressing the Download now button lets you download content immediately or schedule the download for later. To schedule a download time, tick the Schedule for download checkbox and specify the desired schedule. In this way, you can configure Calibre to fetch and convert your favorite magazines and blogs and have them ready for your morning coffee (Figure 8).

Figure 8: Calibre sports a large number of built-in recipes.

If your favorite news source is not included in the default recipes, you can create a custom recipe, which is pretty easy to do (Figure 9). Just press the Fetch news button and select the Add a custom news source menu item. In the dialog window that appears, enter a name for the new recipe in the Recipe title field. The Oldest article and Max. number of article per feed fields specify the time frame and number of articles the recipe should fetch, respectively. Then enter the feed's name and URL in the appropriate fields and press the Add feed button. Because a single recipe can process multiple feeds, you can add as many feeds to it as you want. This can come in handy when the source publication provides separate URLs for different content categories. When the recipe is ready, press the Add/Update recipe button. By pressing OK, the created recipe appears in the Custom section of the recipe list. Besides simple recipes that fetch the content of the RSS feed, Calibre allows you to create rather advanced recipes that grab and process articles and web pages. This does require a basic knowledge of the Python programming language, but Calibre's user manual provides an easy-to-follow introduction to creating advanced recipes [7]. Naturally, the best way to learn the inner workings of advanced recipe work is to tinker with the default recipes – and Calibre allows you to do just that In the Add Custom News Source dialog window, press the Customize built-in recipe button and select the recipe you want to dissect, and Calibre will create a copy of it for you to experiment with.

Figure 9: Calibre allows you to create custom recipes.

Calibre allows you to manage and read ebooks and share them with others. The application sports a built-in server that can publish your entire ebook library on the web. To start the server, press the Preferences button on the main toolbar, switch to the Content server section, and press the Start server button. Then press the Test server button to open the published library in the default browser. Calibre's web interface provides a list of ebooks in your collection, along with detailed information about each title. Each entry contains a link to the downloadable ebook file, so anyone can fetch any ebook in your library.

Another way to share ebooks with other users is to use good old email, and Calibre allows you to do that directly from within the application. To be able to send books by email, you have to configure your email settings, which can be done in the Email delivery section of the Preferences dialog box. Just enter your email address in the Send email from field, and use the Add email button to add the email addresses of the users with whom you want to share your ebooks. If you want to send the books automatically, tick the Auto send checkbox next to each email entry. Then specify your email settings – the SMTP server, your user name, and passwords – in the appropriate fields and press OK. After you've done that, you can send any ebook in your library by right-clicking on it and selecting the Send to device entry, which offers several emailing options.

Finally, Calibre sports an ebook viewing module that offers all the essential reading tools, such as the the Table of Contents button, which displays a sidebar with a hyperlinked table of contents, the navigation buttons, and font size buttons. Besides all this, the reader sports a full-screen mode and a bookmarking feature, as well as the rather unusual Reference mode function that allows you to view the paragraph's reference number by mousing over it. The Search field at the top of the viewing window allows you to perform text searches, and, similar to other ebook readers, Calibre remembers the last position in the book (Figure 10).

Figure 10: Calibre's Ebook viewer offers all the essential reading tools.

All in all, Calibre is a well thought out application that provides a complete solution to all your ebook needs – from fetching, organizing, managing, converting, and sharing ebooks to reading them on your machine. With all of these features, Calibre is an indispensable application for any serious ebookworm.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More