diff -aur 11.9-1/FreeFileSync/Source/Makefile 11.9-2/FreeFileSync/Source/Makefile --- 11.9-1/FreeFileSync/Source/Makefile 2021-05-06 16:24:53.987902373 -0400 +++ 11.9-2/FreeFileSync/Source/Makefile 2021-05-06 17:09:31.512474440 -0400 @@ -21,6 +22,13 @@ #treat as system headers so that warnings are hidden: cxxFlags += -isystem/usr/include/gtk-3.0 +with_notifications ?= NO +ifeq ($(with_notifications),YES) +# package libglibmm-2.4-dev or glibmm24-devel +cxxFlags += `pkg-config --cflags giomm-2.4` -Dwith_notifications +linkFlags += `pkg-config --libs giomm-2.4` +endif + #support for SELinux (optional) SELINUX_EXISTING=$(shell pkg-config --exists libselinux && echo YES) ifeq ($(SELINUX_EXISTING),YES) diff -aur 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp --- 11.9-1/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 15:20:34.286831934 -0400 +++ 11.9-2/FreeFileSync/Source/ui/progress_indicator.cpp 2021-05-06 17:11:45.486004158 -0400 @@ -32,6 +32,9 @@ #include "../perf_check.h" #include "../icon_buffer.h" +#ifdef with_notifications +#include +#endif using namespace zen; using namespace fff; @@ -1359,6 +1362,22 @@ pnl_.m_staticTextPhase->SetLabel(getSyncResultLabel(syncResult)); //pnl_.m_bitmapStatus->SetToolTip(); -> redundant +#ifdef with_notifications + // Desktop notification for Linux + char title[] = "FreeFileSync"; + // from https://stackoverflow.com/a/12097772 + std::wstring ssR {getSyncResultLabel(syncResult)}; + std::string body; + std::transform(ssR.begin(), ssR.end(), std::back_inserter(body), [] (wchar_t c){ return (char)c;}); + char icon[] = "freefilesync"; + auto Application = Gio::Application::create("org.zenju.freefilesync", Gio::APPLICATION_FLAGS_NONE); + Application->register_application(); + auto Notification = Gio::Notification::create(title); + Notification->set_body(body); + auto Icon = Gio::ThemedIcon::create(icon); + Notification->set_icon (Icon); + Application->send_notification(Notification); +#endif //show status on Windows 7 taskbar if (taskbar_.get()) switch (syncResult)