diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index db6373836..9d018e88e 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -1242,6 +1242,10 @@ bool OBSApp::SetTheme(std::string name, std::string path) themeDarkMode = !(color.redF() < 0.5); } +#ifdef __APPLE__ + SetMacOSDarkMode(themeDarkMode); +#endif + emit StyleChanged(); return true; } diff --git a/UI/platform-osx.mm b/UI/platform-osx.mm index 0e58caf41..a5f36ebf2 100644 --- a/UI/platform-osx.mm +++ b/UI/platform-osx.mm @@ -384,6 +384,17 @@ void OpenMacOSPrivacyPreferences(const char *tab) [[NSWorkspace sharedWorkspace] openURL:url]; } +void SetMacOSDarkMode(bool dark) +{ + if (dark) { + NSApp.appearance = + [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]; + } else { + NSApp.appearance = + [NSAppearance appearanceNamed:NSAppearanceNameAqua]; + } +} + void TaskbarOverlayInit() {} void TaskbarOverlaySetStatus(TaskbarOverlayStatus status) { diff --git a/UI/platform.hpp b/UI/platform.hpp index 746e57848..22ce5ca9c 100644 --- a/UI/platform.hpp +++ b/UI/platform.hpp @@ -101,6 +101,7 @@ bool isInBundle(); void InstallNSApplicationSubclass(); void InstallNSThreadLocks(); void disableColorSpaceConversion(QWidget *window); +void SetMacOSDarkMode(bool dark); MacPermissionStatus CheckPermissionWithPrompt(MacPermissionType type, bool prompt_for_permission);