> Add bookmarks and annotations. Reading progress, bookmarks, and annotations are stored in plain JSON files, so you can export or sync them easily with any tool or storage service.
> The data for each book is stored in a JSON file named after the book's identifier.
> How are identifiers generated? For formats or books without unique identifiers, Foliate will generate one with the prefix foliate:, plus the MD5 hash of the file.
Finally, someone recognized the benefit of using file hashes for ID purposes and my PDFs no longer get modified when I annotate them!
Maybe I'm not understanding, but wouldn't using the file hash to keep track of things make it really tricky if the file is modified in any way? E.g. when annotating a PDF it would lose all previous data associated because the hash would change
I download still-running fiction from the internet and read them locally, and periodically replace the files with versions with more chapters. It does not sound like the workflow would work for me.
(This also means hashing the contents wouldn't work.)
But if the annotations get stored directly in the ebook file (as opposed to separately in a JSON file), I don't see how this would work for you, either? You would still have to transfer them to the new file somehow.
If a chain of hashes is associated with a single work ... you might get somewhere.
I've thought through the problem of fingerprinting records (as in, any recorded data: text, images, audio, video, software, etc.) in a way that coherently identifies it despite changes over time. Git and related revision control systems probably offer one useful model. Another is to generate signatures via ngrams of the text in such a way that's resilient (i.e., non-brittle) despite varioius changes: different fonts, charactersets, slight variances in spelling (e.g., British vs. American English, transliterations between languages), omissions or additions, or other changes. Different versions of the same underlying work, e.g., PDF, HTML, or ASCII text, translations, different editions, etc., all have much in common, though in ways that a naive file hash wouldn't immediately recognise or reveal.
We often refer to works through tuples such as author-title-pubdate, or editor-language-title. This is a minute fraction of the actual content of most works, but is remarkably effective in creating namespaces. Controlled vocabularies and specific indexing systems (Dewey Decimal, OCLC, Library of Congress Catalog Number, ISBN, DOI, etc.) all refine this further, but require specific authority and expertise. I'd like to see an approach which both leverages and extends such classifications.
You end up with the ebook file and an annotations and bookmarks file. I'm assuming that the program would just look in the same directory as the ebook file or some configurable location.
I can open PDFs on every OS I've ever used. Like, just open the file, find a PDF file in some directory and open that PDF file and see a render of the PDF.
I've never found anything that can do the same for ebooks without also trying to manage my "library". Like, if I just want to peek at a random epub file it will add it to my "bookshelf" automatically and makes that a very prominent part of the program.
Zathura and okular can do it, as well as Sumatra on windows, but they suffer from ugly defaults. The best reader is koreader (kobo device in my case) as it let you customize the reading experience.
I tried creating a reader (macos) based on mupdf (koreader also used it) and it’s definitely possible to have an epub viewer. I also dislike bookshelf type software if they try to manage the files as well (a simple database can be fine). So far. I just use these to check the epub file and do the reading on the kobo instead (or convert to pdf if I want annotations (ipad)).
Zathura will by default keep a history and your position in each document, which I personally don't like (I want it to start from the beginning each time) but you can change this with 'set database "null"' in the config file. I tried zathura for pdfs a while ago but went back to evince due to the nice feature of showing all search results in a sidebar when you search. Unfortunately evince doesn't support epub. My zathurarc so far is:
set database "null"
set adjust-open "width"
set scroll-wrap false
set font "monospace light 24"
set statusbar-home-tilde true
set window-title-home-tilde true
set window-title-page true
set guioptions "v"
map [fullscreen] <PageDown> scroll full-down
map [fullscreen] <PageUp> scroll full-up
map [normal] <PageDown> scroll full-down
map [normal] <PageUp> scroll full-up
The font option just seems to cover the interface font (which is tiny if you don't set it) and guioptions "v" means no default status bar but always a vertical scroll bar. Page up and down use viewable pages instead of the default document page.
I was also just looking for an epub reader due to this Humble book bundle on game design that mostly only has epub:
It's worth noting that KOReader is available for desktop Linux users, both as a Debian package and AppImage. The interface is better suited to touch screens though. I suspect that is why noone has bothered to port/build it for other desktop operating systems.
Foliate's core function is an ebook reader and not library management. Once installed you can double click your epubs to open them on foliate - it will not move around your stuff.
There is a library view in the app but it is mostly a history of recently accessed files.
Ironically, the best ebook reader that just worked like you said was Microsoft Edge when it had its own engine, before it became "Chrome but even worse".
On Linux, I prefer to use MuPDF for just opening any epub file.
That was originally a PDF reader, but it has been working for some time also with epub files.
It renders the pages not only very fast, but also better than any other epub reader that I have tried (all the others seem to make worse choices about the relative sizes of various page elements).
Calibre works exactly the way you suggest, so I'm not sure why you haven't found it.
It comes with an app called ebook-viewer that doesn't do anything except view ebooks. It doesn't automatically add it to the calibre library management.
I love Calibre, even calibre-web, which I can use as an ebook store by modifying the URLs in my Kobo eReader so that I can download ebooks from my server directly from the eReader over WiFi.
I use Calibre to manage my collection, create book covers if I need to for non-boo k documents, web for organising and occasional looking up of things, and eReader for reading.
So? Don't run the command for the library manager. No one is forcing you to open it. They are completely independent commands. You might as well complain that all you want to do is list directories but linux only provides coreutils which also includes chcon and I don't want to run chcon.
> Calibre works exactly the way you suggest, so I'm not sure why you haven't found it.
JFC, that's not how the installation and the first run of Calibre works at all. I'd write "I'am not sure why you think people would think calibre is first a manager library and not a book reader after installing it" but I'd be lying.
I think Calibre advocates forgot what it's like to setup it for the first time and what a messy ugly process it is for new timers. A containerized version needs VNC access to set it up and perform some un-intuitive UI actions https://docs.linuxserver.io/images/docker-calibre/#applicati...
I've used https://www.kavitareader.com/ but it's not perfect either, this space could be "disrupted" by a Plex like product with opensource + licensed offerings but the target market is pretty small I think.
However, it needs flatpak runtime. If you already have different flatpak apps, this is not an issue, it is going to be shared with them, but if this is going to be your first-and-only flatpak app, you need to add few hundreds MB.
Just recently setup some ebook software on my linux laptop trying not only use Apple for everything these days.
Calibre was the very first thing I tried but it seems like it was going to be a time sink. I can't quantify that precisely maybe because of the design? I didn't seem like I could just get going easily.
Foliate was the next thing I tried and seemed perfect. Easy to start, limited options, good design. It was a lot closer to what I was used to on my mac.
I'm sure Calibre probably does a bunch of things perfectly and I should revisit it, but that's the experience coming from a novice.
I like foliate, certainly one of the slicker options out there, but yes it does have the behaviour you describe.
I do have need of a library, but there's not much point for me if it's just one or two types of document. I've just moved to the new Zotero 7 beta, which has epub support, has always managed PDFs and web snapshots, and since Zotero 6 has supported rich annotation.
Perfect setup for me. One library containing all my notes, citations and reading.
I'm still deep in the trenches, though. That project is like my personal zen garden of deadline-free software development, so don't expect a release soon. Happy if someone would be interested in contributing, though :)
I can't do that, on windows, or linux. I loved the experience that evince on ubuntu gave me for comics/manga some years ago (what I want: continuous pages, no menu or scrollbar visible, centered, fixed width, variable width, scrollbar on edge hover to show progress), and nothing that I've tried comes remotely close.
I was able to come close with HTML + CSS so I am partially content.
- - -
A recent big failure of mine is to find a music player on F-Droid, to listen to albums, that
- is capable to play a song,
- is capable to seek in the song
- doesn't need access to every media file ever on my phone, only the actual file (either by popping up the file chooser, or the file is opened from an another program)
I've checked at least 15 of them, and I think it is possible. I've found multiple examples that can do two (video players that don't need access to every file, can go forward/backward but refuse to play songs, also music players that don't need access to every media file, but can't jump to a position). I eventually had to give up on this one.
I'm pretty sure VLC (from f-droid) does what you want. It might prefer to have full file access, but you can just deny that and just open files from a file browser or whatever.
Is it working for you? It is not working for me, it keeps demanding permissions. It might be something specific to my phone, but also unlikely, since there are video and audio players that can play videos and audio without any permission at all.
Just be aware, that music player without file access won't be able to traverse/list directories, so playlists won't work. This is a limitation of any file-picker based file access (e.g. flatpak applications on linux, accessing files via portals have exactly the same limitations). As the sibling comment says, it is possible to run vlc this way, but be aware of the limitations.
I don't have "2 buttons" on the screen titled "Permission not granted", and no file dialog. Also not working, when asking VLC to play the file from another program. Must be a bug or incompatibility somewhere. Also this must be the reason why I wasn't able to find a music player on F-Droid then :| Thank you for checking!
maybe there’s a firefox extension you could use that when you set the default file opener it works like that? or drag and drop it on firefox with an extension.
I just wanted to chime in to say the Foliate code is really beautifully written too.
I was able to hack together an epub audiobook reader by running a custom version of foliatejs in Microsoft Edge (which has an amazing and free text to speech engine called "read aloud"). It's VERT hacky but you can try it here:
https://nathansherburn.github.io/foliate-js/
I used to read all ebooks on desktop when smartphones didn’t enter the market. Now I read on Kindle and a dedicated tab.
There’s only one kind of book I read on my laptop now- programming books PDFs. To code side by side. That's all. And PDF is better for rendering equations, graphs, code with syntax highlighting, and figures.
I use EPUB for "flat" essays, novels, storybooks, poems, etc. i.e. non-text/non-technical stuff.
And I use my Kindle or my tab always for that.
For the once or twice need of opening EPUBs on my laptop, I just use Okular.
Won't install something via Snap/Flat or compile it for that one-off kinds of use.
A Kindle is a physical device and a tab is a tablet (I initially thought it was browser tab)? My family sat/stepped on two Kindles (crushing the screens to oblivion) growing up and nobody has dared buy another one since; I don't know if it's time to reconsider.
> the experience for managing any content bought/downloaded from outside Amazon is almost unusable
Not at all.
I buy EPUBs from all kinds of vendors, across multiple languages. I also have many downloaded from Standard Ebooks [0].
All EPUB works fine, and provides great experience- as long as a file does not contain one of the following- custom page illustrations, syntax highlighted code, graphs, charts, maps, math equations, color comicstrip etc.
Just use PDF in tablet or laptop for arxiv papers, math/programming books, etc.
Use Kindle for recreational reading- like novels, poetry, essays, etc. I am a huge fan of reading since basically learning to read. And I love Kindle! Am a user for last ~10 years.
I'm really not confortable with projects that treat the Git history as junk, to the point I'd rather avoid that software. I daily use the e-reader Koreader, and sometimes Plato, and their source code and Git history are clear and documented (though I think Koreader's choice of Lua is poorly suited to the task). I could patch Koreader to my taste and send pull requests.
It might be the most awesome software in the world, but if I can't read the majority of bug reports, it's not something I can feel comfortable using.
(This is not a flaw in the software, this is a flaw in me: I don't know how to read -- I'm assuming it's Mandarin Chinese, but I can't even reliably tell that.)
Not to be rude, but if that's the case, and you're unwilling to use "random" translation tools like Google Translate, what is the point of this comment? Not everyone in the world speaks English. Do you want them to learn English and post bug reports in English for you?
I’d love to have a beautifully designed version of Calibre for macOS. I’d even pay for it!
It would be fantastic to have a sleek way to organize my ebook collection, especially if it could also store papers from Arxiv etc.
I would love this too. Calibre is amazingly useful and powerful, there’s nothing else like it, but my goodness the UI is ugly.
I’ve come to appreciate it as some sort of outsider art anti-design, defiantly refusing to follow any notion of design consistency and aesthetics. But still, a nicely designed version would be amazing.
Cover grid, virtual libraries, customizable details pane (select the fields to show), filtering (both tree and search), virtual libraries (collection), export template, metadata editing and embedding (write to file).
Not the OP, but my library management is 90% tagging, format conversion, metadata fetch and editing, and format tune-up (font subsetting or stripping fonts, fixing covers, etc.). Virtual libraries keep me organized based on tags.
I’ve not been happy with the state of desktop ebook readers for a while, so I recently built a simple web-based ebook reader. It’s designed to be a quick and easy way to read books while also providing decent layout and typography.
Although it’s a website, books and reading histories are saved in the browser’s local storage and it doesn’t track anything.
Hey, might I suggest adding a public domain example book? I tried adding a couple of different epubs that I happen to have on my phone, but it just says "Please select an EPUB file." when I do. (Using mobile Firefox.)
I love this on my laptop - but struggling for iOS - particularly iPad - any good suggestions?
I just want to read books, keep my place and not have any ads -is this that hard?
Linux needs more beautiful apps with attention to UX - the same kind of care that developers of macOS apps put into their apps. That's why even when I'm building an app for Linux[1] I start by trying to make the best macOS app first.
Beautiful app, how did you deal with Qt licensing if I may ask?
One nit regarding website, toggling dark mode causes a video change that has some ugly flashing, I think you could improve this by recording the video without dropshadow and adding the shadow with CSS.
Thanks! I'm using the LGPL version of Qt, since I'm not changing Qt's own source code I can release my app has closed-source easily with dynamic linking. I could also release it with static linking with no problem (in my understanding), if I allow people to download the object files as well so they can link them to any version of Qt they want (but that's a bit too much for now).
Thanks for your suggestion, I'll consider it. But what do you mean by ugly flashing? Is it the instant background change that turn you off?
Yes, the background changes instantly, but video replacement is slower, therefore for an moment the old video shadow background appears distinctly from the site's background color. This is on M1 Max 64 with latest Chrome.
Also, there's a problem with responsive text reflow on your personal site, I've only noticed because I'm using a tiling wm.
I think for the first issue, with the flashing, it seems to flash to you, but it's just the theme being changed to light, isn't it? Or you are specifically only talking about the way the video container doesn't fit the rest of the page while it's loading?
Regarding the second issue, good catch! I'll fix that. Thanks!
Ha, I think you're right, it's the empty container with grey background visible whilst the video is being changed, I actually went frame by frame to confirm. It's getting silly and super nitpicky so feel free to ignore :)
I’m using this app’s EPUB engine for my iOS/macOS app, Manabi Reader, which is for learning Japanese through reading (but I want to expand to more languages and general purpose use soon)
This look pretty neat, wish there were some decent ebook readers for Android that can handle both pdf and ebpub....I was looking into moon reader but it requires an obnoxious breadth of permissions that seems very odd. Calibre is still my go-to on windows
I use KOReader to read epubs on Android, but not PDFs. Being geared towards eink devices, KOReader lacks the smooth panning+zooming one would typically expect in an Android PDF reader. I've settled on using Bubble2 when I need to read a PDF, though I'd prefer to use my laptop when possible.
I installed snap version of Foliate on Ubuntu20.04. And it failed to work for me (when I open a valid epub, it is just blank). I’m so disappointed when I see something that I badly want and it doesn’t work.
I have support for this format disabled in browser, because I know of no simple native viewer on Linux, so I in effect cannot save such images, because I cannot view them.
Firefox works fine as a native viewer of the saved webp images on Linux, if you associate the file extension/file type with it. Also Chromium/Chrome can be used for the same purpose.
The only disadvantage is that the browsers are slower and they have much more inconvenient user interfaces than the dedicated image viewers, for functions like zoom and pan or passing to the next or previous image in a directory.
An alternative is to use the movie player "mpv" as the native webp viewer. This is much faster and it has the advantage of easy navigation in a directory with webp images and of easy zoom and pan (you may need to edit the mpv configuration and bind the ZOOMIN and ZOOMOUT commands to whatever keys you prefer).
Is this a feature of the app? Can I bundle an ebook with my own hyphenations and ensure that only those hyphenations will appear when Foliate displays the ebook?
Kindles have incredibly awful hyphenation. It seems to originate from somebody confusing the algorithm for hyphenation -- which is "there's a big list of hyphenation points for every word in existence, and when you want to hyphenate a word, you look it up in the list and choose the best available hyphenation point" -- with the algorithm for compressing the master hyphenation list, which involves representing the list as a priority-ordered set of rules for where a hyphen should appear based on a few surrounding letters.
But the result is that Kindles are constantly trying to hyphenate words based on a compressed list of words that doesn't include the word that needs to be hyphenated, with results like "Q-ingjiao".
This could be easily solved by checking every ebook for words that don't appear in the master list, and bundling a custom list of just those words with every book, falling back to the master list in the common case where a word that needs to be hyphenated isn't present in the custom list. But I guess nobody cares.
The app looks beautiful, but I can’t unsee the clipped buttons at the top and bottom on the left. Why wouldn’t you use the same border radius as the window? Or have the window not be rounded?
foliate is pretty good for epub. I have been using it for several months, and definitely prefer it to fbreader, calibre, etc. It is much faster than those. It has a good TTS interface as well.
I love this app! I recently went shopping for Linux readers and came right back to Foliate for its common sense and feature-richness beneath a clean UX.
It was in Fedora's repo, so I tried on a Fedora machine I have. It installed and worked. And does have a dark mode, it respected system preferences which was set to dark mode in KDE settings!
But it no option menu and no obvious way to turn pages without using the table of contents tool. It didn't respond intuitively to mouse clicks or touch gestures attempts to turn the pages. I will try it some more later, but it doesn't follow hardware ereader (tap to turn page) or normal desktop (no visible buttons or click/drag) UI conventions.
I quite liked ReadEra. Scans your phone for all epubs, allows grouping and organizing them, but most importantly, has a good looking, customizable reading interface.
"Cool Reader GL" is good. Has a lovely page curl animation, etc. It's old though, and hasn't been updated in many years now but it still works fine. I like it because it's very customizable and has fine control of font rendering such as being able to turn off anti-aliasing. It takes time to set-up the way you like, but once you do, it's great and just works.
> Add bookmarks and annotations. Reading progress, bookmarks, and annotations are stored in plain JSON files, so you can export or sync them easily with any tool or storage service.
> The data for each book is stored in a JSON file named after the book's identifier.
> How are identifiers generated? For formats or books without unique identifiers, Foliate will generate one with the prefix foliate:, plus the MD5 hash of the file.
Finally, someone recognized the benefit of using file hashes for ID purposes and my PDFs no longer get modified when I annotate them!
Now I just wish music playlists used hashes, too…