diff --git a/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs b/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
index 47772ea848..38f5ad3688 100644
--- a/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
+++ b/Ryujinx.Common/Configuration/Hid/KeyboardHotkeys.cs
@@ -4,5 +4,6 @@
     {
         public Key ToggleVsync { get; set; }
         public Key Screenshot { get; set; }
+        public Key ShowUi { get; set; }
     }
-}
\ No newline at end of file
+}
diff --git a/Ryujinx/Config.json b/Ryujinx/Config.json
index 3d4ea23b13..504a713f26 100644
--- a/Ryujinx/Config.json
+++ b/Ryujinx/Config.json
@@ -1,5 +1,5 @@
 {
-  "version": 28,
+  "version": 29,
   "enable_file_log": true,
   "res_scale": 1,
   "res_scale_custom": 1,
@@ -58,7 +58,8 @@
   "enable_mouse": false,
   "hotkeys": {
     "toggle_vsync": "Tab",
-    "screenshot": "F8"
+    "screenshot": "F8",
+    "show_ui": "F4"
   },
   "keyboard_config": [],
   "controller_config": [],
@@ -107,4 +108,4 @@
       "player_index": "Player1"
     }
   ]
-}
\ No newline at end of file
+}
diff --git a/Ryujinx/Configuration/ConfigurationFileFormat.cs b/Ryujinx/Configuration/ConfigurationFileFormat.cs
index 4634dafebb..65165d8db3 100644
--- a/Ryujinx/Configuration/ConfigurationFileFormat.cs
+++ b/Ryujinx/Configuration/ConfigurationFileFormat.cs
@@ -14,7 +14,7 @@ namespace Ryujinx.Configuration
         /// <summary>
         /// The current version of the file format
         /// </summary>
-        public const int CurrentVersion = 28;
+        public const int CurrentVersion = 29;
 
         public int Version { get; set; }
 
diff --git a/Ryujinx/Configuration/ConfigurationState.cs b/Ryujinx/Configuration/ConfigurationState.cs
index c98fbcca25..41bd64a7b0 100644
--- a/Ryujinx/Configuration/ConfigurationState.cs
+++ b/Ryujinx/Configuration/ConfigurationState.cs
@@ -543,7 +543,8 @@ namespace Ryujinx.Configuration
             Hid.Hotkeys.Value = new KeyboardHotkeys
             {
                 ToggleVsync = Key.Tab,
-                Screenshot = Key.F8
+                Screenshot = Key.F8,
+                ShowUi = Key.F4
             };
             Hid.InputConfig.Value = new List<InputConfig>
             {
@@ -859,6 +860,20 @@ namespace Ryujinx.Configuration
                 configurationFileUpdated = true;
             }
 
+            if (configurationFileFormat.Version < 29)
+            {
+                Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 29.");
+
+                configurationFileFormat.Hotkeys = new KeyboardHotkeys
+                {
+                    ToggleVsync = Key.Tab,
+                    Screenshot = Key.F8,
+                    ShowUi = Key.F4
+                };
+
+                configurationFileUpdated = true;
+            }
+
             Logger.EnableFileLog.Value             = configurationFileFormat.EnableFileLog;
             Graphics.ResScale.Value                = configurationFileFormat.ResScale;
             Graphics.ResScaleCustom.Value          = configurationFileFormat.ResScaleCustom;
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 387ae63aae..8e579e78ea 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -101,6 +101,7 @@ namespace Ryujinx.Ui
         [GUI] MenuItem        _simulateWakeUpMessage;
         [GUI] MenuItem        _scanAmiibo;
         [GUI] MenuItem        _takeScreenshot;
+        [GUI] MenuItem        _hideUi;
         [GUI] MenuItem        _fullScreen;
         [GUI] CheckMenuItem   _startFullScreen;
         [GUI] CheckMenuItem   _favToggle;
@@ -243,6 +244,8 @@ namespace Ryujinx.Ui
             _gameTable.SearchColumn = 2;
             _gameTable.SearchEqualFunc = (model, col, key, iter) => !((string)model.GetValue(iter, col)).Contains(key, StringComparison.InvariantCultureIgnoreCase);
 
+            _hideUi.Label = _hideUi.Label.Replace("SHOWUIKEY", ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi.ToString());
+
             UpdateColumns();
             UpdateGameTable();
 
@@ -1072,15 +1075,6 @@ namespace Ryujinx.Ui
             ConfigurationState.Instance.Graphics.AspectRatio.Value = ((int)aspectRatio + 1) > Enum.GetNames(typeof(AspectRatio)).Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1;
         }
 
-        private void Focus_Menu_Bar(object sender, KeyReleaseEventArgs args)
-        {
-            if (args.Event.Key == Gdk.Key.Alt_L)
-            {
-                ToggleExtraWidgets(true);
-                _menuBar.GrabFocus();
-            }
-        }
-
         private void Row_Clicked(object sender, ButtonReleaseEventArgs args)
         {
             if (args.Event.Button != 3 /* Right Click */)
diff --git a/Ryujinx/Ui/MainWindow.glade b/Ryujinx/Ui/MainWindow.glade
index abe969075f..ff95506af5 100644
--- a/Ryujinx/Ui/MainWindow.glade
+++ b/Ryujinx/Ui/MainWindow.glade
@@ -6,7 +6,6 @@
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Ryujinx</property>
     <property name="window_position">center</property>
-    <signal name="key-release-event" handler="Focus_Menu_Bar" swapped="no" />
     <child>
       <object class="GtkBox" id="_box">
         <property name="visible">True</property>
@@ -15,7 +14,7 @@
         <child>
           <object class="GtkMenuBar" id="_menuBar">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
+            <property name="can_focus">False</property>
             <child>
               <object class="GtkMenuItem" id="_fileMenu">
                 <property name="visible">True</property>
@@ -343,7 +342,7 @@
                       <object class="GtkMenuItem" id="_hideUi">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Hide UI (Alt to show)</property>
+                        <property name="label" translatable="yes">Hide UI (SHOWUIKEY to show)</property>
                         <property name="use_underline">True</property>
                         <signal name="activate" handler="HideUi_Pressed" swapped="no" />
                       </object>
diff --git a/Ryujinx/Ui/RendererWidgetBase.cs b/Ryujinx/Ui/RendererWidgetBase.cs
index e1278b397b..d099d5091b 100644
--- a/Ryujinx/Ui/RendererWidgetBase.cs
+++ b/Ryujinx/Ui/RendererWidgetBase.cs
@@ -568,6 +568,12 @@ namespace Ryujinx.Ui
                     Renderer.Screenshot();
                 }
 
+                if (currentHotkeyState.HasFlag(KeyboardHotkeyState.ShowUi) &&
+                    !_prevHotkeyState.HasFlag(KeyboardHotkeyState.ShowUi))
+                {
+                    (Toplevel as MainWindow).ToggleExtraWidgets(true);
+                }
+
                 _prevHotkeyState = currentHotkeyState;
             }
 
@@ -593,9 +599,10 @@ namespace Ryujinx.Ui
         [Flags]
         private enum KeyboardHotkeyState
         {
-            None,
-            ToggleVSync,
-            Screenshot
+            None = 0,
+            ToggleVSync = 1 << 0,
+            Screenshot = 1 << 1,
+            ShowUi = 1 << 2
         }
 
         private KeyboardHotkeyState GetHotkeyState()
@@ -612,6 +619,11 @@ namespace Ryujinx.Ui
                 state |= KeyboardHotkeyState.Screenshot;
             }
 
+            if (_keyboardInterface.IsPressed((Key)ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi))
+            {
+                state |= KeyboardHotkeyState.ShowUi;
+            }
+
             return state;
         }
     }