Usability problems with macOS dark mode

Bug #1847571 reported by Szabolcs
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
calibre
Fix Released
Undecided
Unassigned

Bug Description

Calibre 3.x did not support dark mode on macOS at all. It always stayed in light mode.

Calibre 4 does support it, but not fully. The usability is generally bad. There are many instances of dark text on dark background, and (predictably) many of the icon themes don't work well at all. It is not clear which one would work reasonably well. Also, switching to dark mode while Calibre is running does not work well (a restart is needed).

Personally, I think that making Calibre work perfectly with macOS's dark mode is just not worth the effort.

What I would prefer is to be able to set my OS to dark mode (so that most apps are dark), but still have Calibre run in light mode as version 3.x does. This would give me a mostly dark experience, and a perfectly usable Calibre. I don't want to switch the entire OS back to ligh mode *just because of Calibre*.

Dark mode is generally nice to have in apps, but usability should be of much higher priority than looks.

Please either make Calibre always run in light mode, or if some other users really want the dark mode even in its current no-so-usable state, then please include an option to make it always run in light mode.

----

I added some screenshots to show some of the problems:

 - Even after switching to the default icon theme, some icons have bad visibility (e.g. Cover Grid, Quickview). There is no suitable icon theme I could find.
 - Black text on dark background
 - Near-invisible checkboxes in lists
 - There are other problems which are not shown in these screenshots

Switching the user interface style to System Default helps a little bit, but does not solve all problems. The macOS style is not ideal for Calibre (takes more space, interface was clearly not designed with this style in mind).

Instead of trying to address all these issues (which would certainly be difficult), I would much prefer the option to just force Calibre to light mode, which works perfectly.

Revision history for this message
Szabolcs (szhorvat) wrote :
Revision history for this message
Szabolcs (szhorvat) wrote :
description: updated
Revision history for this message
Kovid Goyal (kovid) wrote : Re: calibre bug 1847571

You can turn off dark mode for individual apps using macOS system
facilities, see https://www.mobileread.com/forums/showthread.php?t=323610

 status fixreleased

Changed in calibre:
status: New → Fix Released
Revision history for this message
Szabolcs (szhorvat) wrote :

Thanks for the link.

Does "status: New → Fix Released" mean that the next version of Calibre will always use light mode?

You can do that like this:

https://developer.apple.com/documentation/appkit/nsappearancecustomization/choosing_a_specific_appearance_for_your_macos_app

Revision history for this message
Eli Schwartz (eschwartz) wrote : Re: [Bug 1847571] Re: Usability problems with macOS dark mode

No, in this case it seems to mean Kovid is marking this ticket as "user
question has been successfully answered".

Revision history for this message
Szabolcs (szhorvat) wrote :

You mean this is a wontfix despite the program being practically unusable with a very common macOS configuration, and despite the fix being as easy as shipping with a slightly changed Info.plist file?

Blaming this on Qt is disingenuous. No other program that I use has problems in dark mode. They either support it properly, or they stay in light mode. This includes multiple Qt and PyQt programs such as Qt Creator, ownCloud, Anki, p4merge, etc. all of which manage stay in light mode even though they were built with recent Qt versions.

Revision history for this message
Eli Schwartz (eschwartz) wrote :

An interesting perspective. Personally, I avoid macOS like the plague. I
also avoid "dark mode"s. So I have no experience with any of the root
causes of your issue.

Kovid is not a macOS user either. His daily driver is Linux, and while I
know he does testing of calibre on Windows and macOS VMs, I have no clue
what additional domain-specific knowledge he may or may not have about
macOS.

Perhaps he did not know it was possible to control this as a per-app
setting? Perhaps he didn't expend effort to research how to do so, even
if he suspected it might be possible?

> despite the fix> being as easy as shipping with a slightly changed Info.plist file?
Does this force it off of dark mode, or simply set the default? I don't
know if any macOS users prefer the dark mode, but it seems plausible to
think some might.

At any rate, you provided links for changing this *after* Kovid answered
your request "or if some other users really want the dark mode [...]
please include an option to make it always run in light mode" with a
statement "A macOS user pointed out on the support forums that macOS has
a built-in option to choose whether it runs in light mode or not". Which
seemed on the surface to be an answer matching the question you asked.

...

One thing I can definitively guarantee you could do to get your way
would be to dive into the code and implement:
- an option in the preferences panel to toggle this
- "assign a value to the appearance property of your NSApplication
  object" (whatever this might be) based on the preference.

(I cannot find any string matches for nsappearance, nsapplication, or
nsview in the calibre source code, so I assume whatever it is it is done
in Qt and calibre doesn't have existing code to modify it. Therefore I
don't have any knowledge of pointers to give for getting this implemented.)

As always, the best way to get something done is to do it yourself, and
you sound like you know a bit about this already. Kovid is as a general
rule extremely receptive to people volunteering to contribute things.

Alternatively, Kovid may respond to this ticket and say "you're right,
let me do some variation of this myself", but that would fall in the
domain of predicting the future, so I cannot tell you whether that will
happen. :(

Revision history for this message
Kovid Goyal (kovid) wrote : Re: calibre bug 1847571

About the only thing in dark mode that is sub-optimal is the link color,
which comes from Qt, not calibre. (and not responding well to dynamic
mode changes, but a simple restart fixes that). All other issues have
already been fixed, and while the link color should ideally be fixed in
Qt, I have an idea for how to workaround the Qt bug in calibre code.

I am not going to disable dark mode in calibre. As I already said there
is a perfectly good way for you to disable dark mode per application
using apple settings. Use it if you want to.

Revision history for this message
Szabolcs (szhorvat) wrote :

If you decide to keep the dark mode, can you try to address the other usability issues I pointed out (not link colours)?

 - dark text on dark background in dropdown boxes
 - inivisible check boxes in lists
 - is there an icon theme that works well both with light and dark modes?

Revision history for this message
Kovid Goyal (kovid) wrote : Re: [Bug 1847571] Re: Usability problems with macOS dark mode

On Mon, Oct 14, 2019 at 02:41:46PM -0000, Szabolcs wrote:
> If you decide to keep the dark mode, can you try to address the other
> usability issues I pointed out (not link colours)?
>
> - dark text on dark background in dropdown boxes

https://bugreports.qt.io/browse/QTBUG-75321

Switch to the system style in the calibre preferences to workaround it
till it is fixed in Qt.

> - inivisible check boxes in lists

Same workaround.

> - is there an icon theme that works well both with light and dark modes?

Am sure there is, try them and see which suits you.

Revision history for this message
Kovid Goyal (kovid) wrote : Re: calibre bug 1847571

And I actually implemented workarounds so changing color themes
dynamically mostly works and the dark text in dropdowns is fixed.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.