IDA 7.7: out-of-the-box support for macOS’s “dark mode”

Before IDA 7.7

IDA versions up to and including 7.6 have been shipping with versions of the Qt toolkit, that didn’t support macOS‘s “dark mode”.

Due to popular demand, we came up with a solution in the form of a specific IDA theme, called IDA’s “dark theme”:

IDA’s dark theme has been very well received, and a lot of users have been using it for their work.

However, the problem with IDA’s dark theme is that it is not native: it consists of a (fairly large) set of CSS statements meant to style widgets so they look as close to what a native dark mode would look like. It has been working reasonably well, but falls short in certain areas.

IDA 7.7: support for macOS’s dark mode out-of-the-box

With IDA 7.7, we have moved to a newer version of Qt – one that supports the OS’s “dark mode”. Consequently, IDA should now follow the user’s preferences and switch to a dark palette, without the need to switch to IDA’s dark theme.

We therefore suggest that users who previously switched to IDA’s dark theme switch back to the “default” theme (see Options > Colors), and see if they don’t prefer it over the dark theme when macOS is running in dark mode.

Here is IDA 7.6’s dark theme:

…compared to IDA 7.7’s default theme, when macOS is running in dark mode:

(notice the dialog buttons, the input fields, the “Function”‘s title buttons, …)

But I like my IDA white!

Immediately after 7.7 was shipped, we received requests from some users who are so used to IDA’s default (i.e., “white”) theme, that they never wanted to switch to IDA’s dark theme (even when macOS is running in dark mode!), and who find it inconvenient that IDA now automatically follows the OS’s natural color palette.

Fortunately, a knowledgeable user let us know about the following workaround; just issue the following commands in Terminal, and restart IDA:

defaults write com.hexrays.ida NSRequiresAquaSystemAppearance -bool yes
defaults write com.hexrays.ida64 NSRequiresAquaSystemAppearance -bool yes

and IDA will stick to the white default theme (i.e., it will not receive “dark mode” notifications anymore, and thus won’t switch to a dark palette.)