Presenting Books

I am an avid reader, reading everything from stupid comments on heise.de to classics of western literature and recent papers on GPGPU. When I heard about the Amazon Paperwhite and its increased contrast and lighting, I was all ears and researched about e-books and e-readers. I finally came to the conclusion, that an e-reader would be a perfect device for reading text-heavy books during my daily commute. So, despite the current lack of devices in Germany, I pre-ordered a Kobo Glo.

Projecting my reading habits into the future, it became reasonable to think about how to manage my purchases. I am aware of Calibre and FBReader but honestly, I cannot stand their user interfaces. They are very good tools for managing e-books (especially Calibre) but they stick out like a sore thumb on the GNOME desktop due to Qt and a some weird design decisions. Consequently, I began working on a simple e-book application targeting GNOME exclusively:

As you can see, it uses standard widgets to visualize the book database, that is backed by sqlite, and WebKit to show the content of a book. Because I think this application could be useful for more people than just myself, I went full force this time and setup some development infrastructure:

  • The build process is managed by autoconf, automake, intltool & Co. Although it still is a nightmarish conglomerate of shell and m4 scripts, it works surprisingly well for a lof of tasks.
  • Travis CI monitors the build status. This free service is invaluable and very simple to set up. I encourage everyone to check it out for their own open source software. In the future, continuous integration will be even more important when the first unit tests are written.
  • Translations are managed with a free-for-all group at Transifex. Anyone with an account can contribute to the translations or begin translating languages that are not yet covered.
  • The landing page was created with the help of GitHub’s automatic pages generator.

Installation

If you fetched the sources from GitHub you need to run ./autogen.sh first. For this, you will need the autotools, autopoint and intltool:

$ sudo apt-get install intltool autopoint libtool
$ ./autogen.sh

After doing this or extracting from a release tarball, you need to install the dependencies:

$ sudo apt-get install libarchive-dev libsqlite3-dev libwebkitgtk-3.0-dev libgtk-3-dev libxml2-dev

and do the standard dance:

$ ./configure
$ make
$ sudo make install

The Future

Although I am quite satisfied with the current status, there are still some features missing for the magical one-dot-zero release:

  • Synchronization across a wide range of e-reader devices. But for now the Kobo Glo – that needs to be shipped – is my personal goal.
  • Fetching free books from various internet sources such as Project Gutenberg.
  • Fixing meta data using an open database. It is a shame how publishers fill out meta data in their EPUB files.
  • Disabling CSS styles inserted by the publishers or overriding them with custom styles.
  • Better integration with Evince that makes up for a great PDF and CBZ viewer.
  • A plugin mechanism based on libpeas to hook into future editing and conversion facilities.

If you find this little application useful, leave me some feedback. Moreover don’t hesitate to report bugs and issues or contribute code or translations.