diff --git a/embed/ephy-download.c b/embed/ephy-download.c
index b3364e9..042e139 100644
--- a/embed/ephy-download.c
+++ b/embed/ephy-download.c
@@ -518,6 +518,35 @@ acquire_session_inhibitor (EphyDownload *download)
 }
 
 static void
+display_download_finished_notification (WebKitDownload *download)
+{
+  GtkWindow *toplevel;
+  GApplication *application;
+  const char *dest;
+
+  application = G_APPLICATION (ephy_embed_shell_get_default ());
+  toplevel = gtk_application_get_active_window (GTK_APPLICATION (application));
+  dest = webkit_download_get_destination (download);
+
+  if (!gtk_window_is_active (toplevel) && dest != NULL) {
+    GNotification *notification;
+    char *filename;
+    char *message;
+    filename = g_filename_display_basename (dest);
+    message = g_strdup_printf (_("Finished downloading %s"), filename);
+    /* Translators: a desktop notification when a download finishes. */
+    g_free (filename);
+    /* Translators: the title of the notification. */
+    notification = g_notification_new (_("Download finished"));
+    g_notification_set_body (notification, message);
+    g_application_send_notification (application, "download-finished", notification);
+
+    g_free (message);
+    g_object_unref (notification);
+  }
+}
+
+static void
 release_session_inhibitor (EphyDownload *download)
 {
   EphyDownloadPrivate *priv;
diff --git a/lib/widgets/ephy-download-widget.c b/lib/widgets/ephy-download-widget.c
index 445a252..4f5f7dd 100644
--- a/lib/widgets/ephy-download-widget.c
+++ b/lib/widgets/ephy-download-widget.c
@@ -300,6 +300,7 @@ static void
 widget_finished_cb (WebKitDownload *download,
                     EphyDownloadWidget *widget)
 {
+  display_download_finished_notification (download, widget);
   widget->priv->finished = TRUE;
   update_popup_menu (widget);
   update_download_label_and_tooltip (widget, _("Finished"));
