diff --git a/src/app/screensaver.cpp b/src/app/screensaver.cpp
index 540c8901327407037494008f67b908747b33fc8c..379dfe1c57a83f01fec81f4ef7aea7e2294f8396 100644
--- a/src/app/screensaver.cpp
+++ b/src/app/screensaver.cpp
@@ -31,7 +31,8 @@ ScreenSaver::ScreenSaver(QObject* parent)
 }
 #else
     : QObject(parent)
-{}
+{
+}
 #endif
 
 #ifdef Q_OS_LINUX
@@ -83,6 +84,18 @@ ScreenSaver::inhibit(void)
         qDebug() << "Error inhibiting screen saver: " << error.message() << error.name();
     }
 #endif
+
+#ifdef Q_OS_MACOS
+    CFStringRef reasonForActivity = CFStringCreateWithCString(NULL,
+                                                              "Active Call: Keeping Screen Awake",
+                                                              kCFStringEncodingUTF8);
+    IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep,
+                                                   kIOPMAssertionLevelOn,
+                                                   reasonForActivity,
+                                                   &preventSleepAssertionID);
+    CFRelease(reasonForActivity);
+    return true;
+#endif
     return false;
 }
 
@@ -111,6 +124,12 @@ ScreenSaver::uninhibit(void)
     }
     request_ = 0u;
 #endif
+#ifdef Q_OS_MACOS
+    IOReturn releaseResult = IOPMAssertionRelease(preventSleepAssertionID);
+    preventSleepAssertionID = 0;
+    return true;
+#endif
+
     return false;
 }
 
@@ -119,6 +138,9 @@ ScreenSaver::isInhibited(void)
 {
 #ifdef Q_OS_LINUX
     return request_ != 0u;
+#endif
+#ifdef Q_OS_MACOS
+    return preventSleepAssertionID != 0;
 #endif
     return false;
 }
diff --git a/src/app/screensaver.h b/src/app/screensaver.h
index 62cfe504b2e4d1407424fffdbce054c5e357b799..44303a160b3cfe577608457aa566c1d5073be7f1 100644
--- a/src/app/screensaver.h
+++ b/src/app/screensaver.h
@@ -26,6 +26,10 @@
 #define N_SERVICES 3
 #endif
 
+#ifdef Q_OS_MACOS
+#include "IOKit/pwr_mgt/IOPMLib.h"
+#endif
+
 class ScreenSaver : public QObject
 {
     Q_OBJECT
@@ -40,16 +44,21 @@ public:
 #ifdef Q_OS_LINUX
 private:
     bool createInterface(void);
-    QString services_[N_SERVICES] = { "org.freedesktop.ScreenSaver",
-                                      "org.gnome.ScreenSaver",
-                                      "org.mate.ScreenSaver" };
+    QString services_[N_SERVICES] = {"org.freedesktop.ScreenSaver",
+                                     "org.gnome.ScreenSaver",
+                                     "org.mate.ScreenSaver"};
 
-    QString paths_[N_SERVICES] = { "/org/freedesktop/ScreenSaver",
-                                   "/org/gnome/ScreenSaver",
-                                   "/org/mate/ScreenSaver" };
+    QString paths_[N_SERVICES] = {"/org/freedesktop/ScreenSaver",
+                                  "/org/gnome/ScreenSaver",
+                                  "/org/mate/ScreenSaver"};
 
     uint request_;
     QDBusConnection sessionBus_;
     QDBusInterface* screenSaverInterface_;
 #endif
+
+#ifdef Q_OS_MACOS
+private:
+    IOPMAssertionID preventSleepAssertionID {0};
+#endif
 };