Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MacOS Change menubar Icon using swift 4

With the new Dark mode in MacOS Mojave I would like to change the menubar icon of my app. In default, it is a white black bear and rather than just inverting the colors I would like to use an icon of a snoozing bear.

I have all my code that sets up the menubar icon in AppDelegate in applicationDidFinishLaunching. So my question is: Is there a way to check if the dark mode was activated and then change the icon using swift 4?

I tried:

var inDarkMode: Bool {
  let mode = UserDefaults.standard.string(forKey: "AppleInterfaceStyle")
  return mode == "Dark"
}

and then an if statement around

button.image = NSImage(named: NSImage.Name(rawValue: "StatusBarButtonImage"))

but because the code is in applicationDidFinishLaunching this will only check once.

Any help much appreciated.

like image 599
Tobias Avatar asked Oct 20 '25 02:10

Tobias


1 Answers

As pointed to by Leo in the comments, Apple's docs explain the process clearly:

  1. open your asset catalog and add a new image asset.
  2. in the right side menu, click on the dropdown at Appearances:

enter image description here

It should be Any by default, change it to Any, Dark, or Any, Light, Dark to customize the icons you want to use for each case.

like image 193
LinusGeffarth Avatar answered Oct 22 '25 18:10

LinusGeffarth