diff --git a/data/50-gnome-shell-system.xml.in b/data/50-gnome-shell-system.xml.in
index cb468f934..92858c59d 100644
--- a/data/50-gnome-shell-system.xml.in
+++ b/data/50-gnome-shell-system.xml.in
@@ -8,6 +8,9 @@
+
+
diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in
index e18685e9c..eaeb01aae 100644
--- a/data/org.gnome.shell.gschema.xml.in.in
+++ b/data/org.gnome.shell.gschema.xml.in.in
@@ -106,6 +106,13 @@ value here is from the GsmPresenceStatus enumeration.
Keybinding to toggle the visibility of the message tray.
+
+ ["<Super>n"]
+ <_summary>Keybinding to focus the active notification
+ <_description>
+ Keybinding to focus the active notification.
+
+
r']]]>
<_summary>Keybinding to toggle the screen recorder
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 2bbdfe8b6..2f714b0b4 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -1519,6 +1519,10 @@ const MessageTray = new Lang.Class({
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Lang.bind(this, this.toggleAndNavigate));
+ global.display.add_keybinding('focus-active-notification',
+ new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
+ Meta.KeyBindingFlags.NONE,
+ Lang.bind(this, this._expandActiveNotification));
this._summaryItems = [];
this._chatSummaryItemsCount = 0;
@@ -2338,6 +2342,13 @@ const MessageTray = new Lang.Class({
notification.destroy(NotificationDestroyedReason.EXPIRED);
},
+ _expandActiveNotification: function() {
+ if (!this._notification)
+ return;
+
+ this._expandNotification(false);
+ },
+
_expandNotification: function(autoExpanding) {
// Don't grab focus in notifications that are auto-expanded.
if (!autoExpanding)