diff --git a/UI/forms/images/obs_macos.png b/UI/forms/images/obs_macos.png
new file mode 100644
index 000000000..57f2e0a7b
Binary files /dev/null and b/UI/forms/images/obs_macos.png differ
diff --git a/UI/forms/images/obs_paused_macos.png b/UI/forms/images/obs_paused_macos.png
new file mode 100644
index 000000000..f80f40d74
Binary files /dev/null and b/UI/forms/images/obs_paused_macos.png differ
diff --git a/UI/forms/images/tray_active_macos.png b/UI/forms/images/tray_active_macos.png
new file mode 100644
index 000000000..5864c61a1
Binary files /dev/null and b/UI/forms/images/tray_active_macos.png differ
diff --git a/UI/forms/obs.qrc b/UI/forms/obs.qrc
index 97118eba7..9ec541bff 100644
--- a/UI/forms/obs.qrc
+++ b/UI/forms/obs.qrc
@@ -11,8 +11,11 @@
images/down.svg
images/up.svg
images/obs.png
+ images/obs_macos.png
images/obs_paused.png
+ images/obs_paused_macos.png
images/tray_active.png
+ images/tray_active_macos.png
images/expand.svg
images/unlocked.svg
images/locked.svg
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index 98ce9fb9e..3423762da 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -5619,10 +5619,19 @@ inline void OBSBasic::OnActivate()
App()->IncrementSleepInhibition();
UpdateProcessPriority();
- if (trayIcon && trayIcon->isVisible())
+ if (trayIcon && trayIcon->isVisible()) {
+#ifdef __APPLE__
+ QIcon trayMask =
+ QIcon(":/res/images/tray_active_macos.png");
+ trayMask.setIsMask(true);
+ trayIcon->setIcon(
+ QIcon::fromTheme("obs-tray", trayMask));
+#else
trayIcon->setIcon(QIcon::fromTheme(
"obs-tray-active",
QIcon(":/res/images/tray_active.png")));
+#endif
+ }
}
}
@@ -5637,19 +5646,42 @@ inline void OBSBasic::OnDeactivate()
App()->DecrementSleepInhibition();
ClearProcessPriority();
- if (trayIcon && trayIcon->isVisible())
- trayIcon->setIcon(QIcon::fromTheme(
- "obs-tray", QIcon(":/res/images/obs.png")));
+ if (trayIcon && trayIcon->isVisible()) {
+#ifdef __APPLE__
+ QIcon trayIconFile =
+ QIcon(":/res/images/obs_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile = QIcon(":/res/images/obs.png");
+#endif
+ trayIcon->setIcon(
+ QIcon::fromTheme("obs-tray", trayIconFile));
+ }
} else if (outputHandler->Active() && trayIcon &&
trayIcon->isVisible()) {
- if (os_atomic_load_bool(&recording_paused))
- trayIcon->setIcon(QIcon::fromTheme(
- "obs-tray-paused",
- QIcon(":/res/images/obs_paused.png")));
- else
- trayIcon->setIcon(QIcon::fromTheme(
- "obs-tray-active",
- QIcon(":/res/images/tray_active.png")));
+ if (os_atomic_load_bool(&recording_paused)) {
+#ifdef __APPLE__
+ QIcon trayIconFile =
+ QIcon(":/res/images/obs_paused_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile =
+ QIcon(":/res/images/obs_paused.png");
+#endif
+ trayIcon->setIcon(QIcon::fromTheme("obs-tray-paused",
+ trayIconFile));
+ } else {
+#ifdef __APPLE__
+ QIcon trayIconFile =
+ QIcon(":/res/images/tray_active_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile =
+ QIcon(":/res/images/tray_active.png");
+#endif
+ trayIcon->setIcon(QIcon::fromTheme("obs-tray-active",
+ trayIconFile));
+ }
}
}
@@ -7536,9 +7568,14 @@ void OBSBasic::ToggleShowHide()
void OBSBasic::SystemTrayInit()
{
+#ifdef __APPLE__
+ QIcon trayIconFile = QIcon(":/res/images/obs_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile = QIcon(":/res/images/obs.png");
+#endif
trayIcon.reset(new QSystemTrayIcon(
- QIcon::fromTheme("obs-tray", QIcon(":/res/images/obs.png")),
- this));
+ QIcon::fromTheme("obs-tray", trayIconFile), this));
trayIcon->setToolTip("OBS Studio");
showHide = new QAction(QTStr("Basic.SystemTray.Show"), trayIcon.data());
@@ -8114,10 +8151,18 @@ void OBSBasic::PauseRecording()
ui->statusbar->RecordingPaused();
- if (trayIcon && trayIcon->isVisible())
- trayIcon->setIcon(QIcon::fromTheme(
- "obs-tray-paused",
- QIcon(":/res/images/obs_paused.png")));
+ if (trayIcon && trayIcon->isVisible()) {
+#ifdef __APPLE__
+ QIcon trayIconFile =
+ QIcon(":/res/images/obs_paused_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile =
+ QIcon(":/res/images/obs_paused.png");
+#endif
+ trayIcon->setIcon(QIcon::fromTheme("obs-tray-paused",
+ trayIconFile));
+ }
os_atomic_set_bool(&recording_paused, true);
@@ -8145,10 +8190,18 @@ void OBSBasic::UnpauseRecording()
ui->statusbar->RecordingUnpaused();
- if (trayIcon && trayIcon->isVisible())
- trayIcon->setIcon(QIcon::fromTheme(
- "obs-tray-active",
- QIcon(":/res/images/tray_active.png")));
+ if (trayIcon && trayIcon->isVisible()) {
+#ifdef __APPLE__
+ QIcon trayIconFile =
+ QIcon(":/res/images/tray_active_macos.png");
+ trayIconFile.setIsMask(true);
+#else
+ QIcon trayIconFile =
+ QIcon(":/res/images/tray_active.png");
+#endif
+ trayIcon->setIcon(QIcon::fromTheme("obs-tray-active",
+ trayIconFile));
+ }
os_atomic_set_bool(&recording_paused, false);