diff --git a/src/meson.build b/src/meson.build
index 9fadcc6498dc7f160a9c46c4780eec05a3484c2a..7ebe4c460f14cf6f33de9661f97bdbe51f1ff31f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -73,7 +73,7 @@ executable('pamac-system-daemon',
 
 libpamac = library('pamac',
 	sources: [common_sources, transaction_sources, preferences_sources, transaction_resources],
-	dependencies: [gtk3, gdk3, vte3, posix, math],
+	dependencies: [gtk3, gdk3, vte3, libnotify, posix, math],
 	vala_args: common_vala_args,
 	c_args: common_c_args,
 	install: true,
diff --git a/src/transaction.vala b/src/transaction.vala
index 21d8edce3c6a8466aa5c07b38c5018cf932be2d0..315a4834d43a8ffacc536145a2e78824cac07fd3 100644
--- a/src/transaction.vala
+++ b/src/transaction.vala
@@ -241,6 +241,8 @@ namespace Pamac {
 			timer = new Timer ();
 			success = false;
 			warning_textbuffer = new StringBuilder ();
+			// notify
+			Notify.init (dgettext (null, "Package Manager"));
 		}
 
 		public void run_preferences_dialog () {
@@ -1619,8 +1621,21 @@ namespace Pamac {
 			box.add (scrolledwindow);
 			dialog.default_width = 600;
 			dialog.default_height = 300;
-			dialog.run ();
-			dialog.destroy ();
+			dialog.show ();
+			dialog.response.connect (() => {
+				dialog.destroy ();
+			});
+			Timeout.add (1000, () => {
+				try {
+					var notification = new Notify.Notification (dgettext (null, "Package Manager"),
+																message,
+																"system-software-update");
+					notification.show ();
+				} catch (Error e) {
+					stderr.printf ("Notify Error: %s", e.message);
+				}
+				return false;
+			});
 		}
 
 		void handle_error (ErrorInfos error) {
@@ -1635,6 +1650,16 @@ namespace Pamac {
 			disconnecting_dbus_signals ();
 			transaction_summary.remove_all ();
 			reset_progress_box ("");
+			if (success) {
+				try {
+					var notification = new Notify.Notification (dgettext (null, "Package Manager"),
+																dgettext (null, "Transaction successfully finished"),
+																"system-software-update");
+					notification.show ();
+				} catch (Error e) {
+					stderr.printf ("Notify Error: %s", e.message);
+				}
+			}
 			finished (success);
 			success = false;
 		}