diff --git a/CMakeLists.txt b/CMakeLists.txt
index 00003dc..96e4e0b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -133,6 +133,29 @@ else()
endif()
endif()
+# configure support for D-Bus notifications
+option(DBUS_NOTIFICATIONS "enables support for D-Bus notifications" ${UNIX})
+set(DBUS_NOTIFICATIONS_FILE_NAME misc/dbusnotification)
+if(DBUS_NOTIFICATIONS)
+ list(APPEND HEADER_FILES
+ ${DBUS_NOTIFICATIONS_FILE_NAME}.h
+ )
+ list(APPEND SRC_FILES
+ ${DBUS_NOTIFICATIONS_FILE_NAME}.cpp
+ )
+ list(APPEND DBUS_FILES
+ dbus/org.freedesktop.Notifications.xml
+ )
+ list(APPEND META_PUBLIC_COMPILE_DEFINITIONS QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS)
+ message(STATUS "D-Bus notifications enabled")
+else()
+ list(APPEND DOC_ONLY_FILES
+ ${DBUS_NOTIFICATIONS_FILE_NAME}.h
+ ${DBUS_NOTIFICATIONS_FILE_NAME}.cpp
+ )
+ message(STATUS "D-Bus notifications disabled")
+endif()
+
# find c++utilities
find_package(c++utilities 4.0.0 REQUIRED)
use_cpp_utilities()
diff --git a/dbus/org.freedesktop.Notifications.xml b/dbus/org.freedesktop.Notifications.xml
new file mode 100644
index 0000000..62345f2
--- /dev/null
+++ b/dbus/org.freedesktop.Notifications.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/misc/dbusnotification.cpp b/misc/dbusnotification.cpp
new file mode 100644
index 0000000..8835dc6
--- /dev/null
+++ b/misc/dbusnotification.cpp
@@ -0,0 +1,281 @@
+#include "./dbusnotification.h"
+#include "notificationsinterface.h"
+
+#include
+#include
+#include
+
+#include