|
|
@@ -69,7 +69,7 @@ final class ViewController: NSViewController {
|
|
|
private var darkModeEnabled: Bool {
|
|
|
get {
|
|
|
let hasValue = UserDefaults.standard.object(forKey: darkModeDefaultsKey) != nil
|
|
|
- return hasValue ? UserDefaults.standard.bool(forKey: darkModeDefaultsKey) : true
|
|
|
+ return hasValue ? UserDefaults.standard.bool(forKey: darkModeDefaultsKey) : systemPrefersDarkMode()
|
|
|
}
|
|
|
set { UserDefaults.standard.set(newValue, forKey: darkModeDefaultsKey) }
|
|
|
}
|
|
|
@@ -96,6 +96,8 @@ final class ViewController: NSViewController {
|
|
|
|
|
|
override func viewDidLoad() {
|
|
|
super.viewDidLoad()
|
|
|
+ // Sync toggle + palette with current macOS appearance on launch.
|
|
|
+ darkModeEnabled = systemPrefersDarkMode()
|
|
|
palette = Palette(isDarkMode: darkModeEnabled)
|
|
|
setupRootView()
|
|
|
buildMainLayout()
|
|
|
@@ -136,6 +138,14 @@ private extension ViewController {
|
|
|
view.layer?.backgroundColor = palette.pageBackground.cgColor
|
|
|
}
|
|
|
|
|
|
+ func systemPrefersDarkMode() -> Bool {
|
|
|
+ // Use the system-wide appearance setting (not app/window effective appearance).
|
|
|
+ // When the key is missing, macOS is in Light mode.
|
|
|
+ let global = UserDefaults.standard.persistentDomain(forName: UserDefaults.globalDomain)
|
|
|
+ let style = global?["AppleInterfaceStyle"] as? String
|
|
|
+ return style?.lowercased() == "dark"
|
|
|
+ }
|
|
|
+
|
|
|
func buildMainLayout() {
|
|
|
let splitContainer = NSStackView()
|
|
|
splitContainer.translatesAutoresizingMaskIntoConstraints = false
|