A macOS public preview of calibre-zen
calibre-zen now has an identity of its own. You can download and try it on your own. Your existing library and settings are untouched, and both apps can be open at once.
calibre-zen rethinks calibre's interface so the hard things get easy and the easy things get trivial. Same library manager, far less friction.
It installs as a separate app, so calibre stays untouched. Run both at once. Your libraries, settings and plugins do not move.
A fork of calibre, by Nadeem Siddique
calibre-zen now has an identity of its own. You can download and try it on your own. Your existing library and settings are untouched, and both apps can be open at once.
A stylesheet reaches a widget only as far as the widget allows. calibre’s tag browser, book list, cover grid and status bar all paint themselves, so no rule was ever going to change them. Those get widgets of our own: built by composition, put in front of calibre’s existing models and signals, with the behaviour left exactly where it was.
Keeping it that way is what keeps the fork pullable. Nothing here edits calibre. Each piece wraps a method from the outside and can be turned off with an environment variable, so an idea that does not work out costs one variable rather than a merge conflict.
CALIBRE_ZEN_FILTERS=0, CALIBRE_ZEN_CENTRE=0 and CALIBRE_ZEN_STATUS=0 each give calibre’s own backThe numbers all come from one place. A colour ramp, a radius scale, a type scale and a single density sit behind the whole stylesheet, so a button, a menu row, a text field and a tab agree on their padding, their corner and their weight instead of each having been drawn on its own day. Variants sit on top of that, which means a primary button and a destructive one differ because their intent differs, not because they were styled apart.
Icons follow the same rule. Every one of calibre’s top-level icons is redrawn as a line glyph and inked in the palette colour at paint time, so nothing is a small colour photograph sitting next to a label. An unmapped name falls through to calibre’s own icon, so a pack is never required to be complete.
calibre is the best library manager there is, and it looks like it was designed in 2008, because it was.
I have used calibre for years and it is genuinely powerful. But the onboarding is rough and the interface is inconsistent enough that simple things feel hard. Buttons that look the same behave differently. Spacing changes from one panel to the next. I have OCD and ADHD, and the more I used calibre the more that inconsistency pulled my attention away from what I was actually trying to do.
I do not mean this unkindly. calibre is Kovid’s labour of love and it does more than any other tool in its category. I had let this idea go several times before, because the answer was always the same: it is old Qt, that is just how it is. But it kept bothering me, so I opened the codebase to see how far I could get.
I mostly build web applications and I am not a Qt expert. What I do have is a sense of how to model an interface and move around one. I used AI to throw together some cheap prototypes, pulled theme tokens from shadcn and Tailwind, and built a consistent layer first, so every button, label, menu and icon shares the same padding and sizing. Then I added variants so each one can match its intent. Once that held up, I spent a weekend getting it into a state other people could try.
I hope you find it useful.