LunaKit: The Night Realm
It was originally intended to be published May 2, 2023.
Let us skip an introduction and begin with a question: How do Apple's video apps have a blue tint?
Blue Tint?
If you've used any of Apple's Pro Apps video-editing tools, you'll quickly notice all three (Final Cut Pro, Motion, and Compressor) utilize a non-standard UI with blue hues. For example, consider Final Cut Pro's General Settings:

Note that the pop-up menus do not respect the system accent color, and instead utilize a darker blue/purple-y color. Additionally, the view's background is a far darker color than the standard tint for dark mode windows. It's clear that Apple is doing something custom here.
How can we figure out what they're doing?
Investigating
We can first utilize the AppKit debugging menu to see what class is handling this window. One defaults write -g _NS_4445425547 -bool TRUE
1 later, and we have some insight:

Our window is provided by a LKPanel
, instead of a normal NSPanel
! Some rapid grep
ing around, and we can find this symbol inside LunaKit.framework
- tucked away within the application's bundle.
Functionality
Next, we can use nm
for a quick glimpse into what is provided. We can quickly many classes with names similar to their AppKit parents:
LKWindow
LKPanel
LKButton
, andLKButtonCell
LKPopUpButton
, andLKPopUpButtonCell
LKTableView
and so on, and so forth. These classes have a superclass of their AppKit namesakes. Let's take a quick peek at functions within the panel we previously saw.
-[LKPanel awakeFromNib]
-[LKPanel _commonInit]
-[LKPanel _disableDesktopTinting]
-[LKPanel _installEffectView]
-[LKPanel setUseHUDStyle:]
Custom awake behavior? Let's look at awakeFromNib
:
/* -[LKPanel awakeFromNib] */
- awakeFromNib
Hmm... what's "HUD" in this context? Is this our custom styling?
What does _commonInit
do?
/* -[LKPanel _commonInit] */
- _commonInit
Ah, sure enough. Indeed, if we search for HUD, we see several functions related to setting this custom apperance.
Let's take a look at mainAppearance
:
/* +[LunaKit mainAppearance] */
/* Somewhat abbreviated to allow for content */
- mainAppearance
...wait, _wantsConsumerLook
?
iMovie
Of course, iMovie is the consumer version of Final Cut Pro. It, as well, utilizes LunaKit. We can find a NOXConsumer.car
present within all variants of the framework, full of iMovie's general appearance.
_wantsConsumerLook
targets it, and it alone:
/* [LunaKit _wantsConsumerLook] */
+ _wantsConsumerLook
Poor iMovie, stuck with that dreary light grey :(
Due to this, we can simply change the bundle identifier of the applications to view what they look like.
Comparisons
Drag the slider to compare between the two.




I don't know what to feel about that.
To conclude:
- HUD appears to refer to the styling that Pro Apps utilize.
- iMovie is a lot less of an eyesore with color - even if it's a solid blue.
- The About menu is provided by LunaKit. You can have iMovie show the Final Cut Pro trial text, should you desire.
Jumping back
Let's attempt to make a simple application utilizing these classes.
/* +[LunaKit mainAppearance] */
/* Somewhat abbreviated to allow for content */
- mainAppearance
This blog post was not completed beyond this point.
Conclusion
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in these bullet points are to be interpreted as described in RFC 2119:
- LunaKit is a private framework, and SHOULD NOT be used in production applications.
- If you ignore the above advice, Tim Cook MAY show up at your house with a cease and desist letter.
- If you're able to fend yourself against the swarm of corporate lawyers, its private API SHALL change at any notice, and should not be relied on.
- After reading this document, it is RECOMMENDED you read up on NSAppearance.
Footnotes
Is this trick really not known? As of writing, on Google, there are 7 results matching _NS_4445425547
. Two of them are tweets regarding the menu, and remaining four are logs where cfprefsd
looked up the key's value. It's a very valuable resource for poking around :)