Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 30835)
+++ apps/lang/english.lang	(working copy)
@@ -12903,3 +12903,37 @@
     *: "Cancel Sleep Timer"
   </voice>
 </phrase>
+<phrase>
+  id: LANG_QUICKSCREEN_SETTINGS
+  desc: in the display menu
+  user: core
+  <source>
+    *: "Quickscreen"
+    masd: none
+  </source>
+  <dest>
+    *: "Quickscreen"
+    masd: none
+  </dest>
+  <voice>
+    *: "Quickscreen"
+    masd: none
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_QUICKSCREEN_TIMEOUT
+  desc: in the quickscreen menu
+  user: core
+  <source>
+    *: "Timeout"
+    masd: none
+  </source>
+  <dest>
+    *: "Timeout"
+    masd: none
+  </dest>
+  <voice>
+    *: "Timeout"
+    masd: none
+  </voice>
+</phrase>
Index: apps/gui/quickscreen.c
===================================================================
--- apps/gui/quickscreen.c	(revision 30835)
+++ apps/gui/quickscreen.c	(working copy)
@@ -307,7 +307,7 @@
 
 static bool gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter)
 {
-    int button;
+    int button, timeouts, i, j;
     struct viewport parent[NB_SCREENS];
     struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT];
     struct viewport vp_icons[NB_SCREENS];
@@ -336,12 +336,26 @@
     talk_qs_option(qs->items[QUICKSCREEN_LEFT], true);
     talk_qs_option(qs->items[QUICKSCREEN_BOTTOM], true);
     talk_qs_option(qs->items[QUICKSCREEN_RIGHT], true);
+    timeouts = 0;
     while (true) {
         button = get_action(CONTEXT_QUICKSCREEN, HZ/5);
 #ifdef HAVE_TOUCHSCREEN
         if (button == ACTION_TOUCHSCREEN)
             button = quickscreen_touchscreen_button(vps[SCREEN_MAIN]);
 #endif
+        if (global_settings.quickscreen_timeout > 0)
+        {
+            if (button == ACTION_NONE)
+            {
+                if (++timeouts > global_settings.quickscreen_timeout*5)
+                    break;
+            }
+            else
+            {
+                timeouts = 0;
+            }
+        }
+
         if (default_event_handler(button) == SYS_USB_CONNECTED)
             return(true);
         if (gui_quickscreen_do_button(qs, button))
Index: apps/settings.h
===================================================================
--- apps/settings.h	(revision 30835)
+++ apps/settings.h	(working copy)
@@ -495,6 +495,7 @@
 
 #ifdef HAVE_QUICKSCREEN
     int qs_items[QUICKSCREEN_ITEM_COUNT];
+    int quickscreen_timeout; /* How long without action before exiting quickscreen */
 #endif
 
 #if CONFIG_RTC
Index: apps/menus/display_menu.c
===================================================================
--- apps/menus/display_menu.c	(revision 30835)
+++ apps/menus/display_menu.c	(working copy)
@@ -522,7 +522,13 @@
             &touchscreen_menu_calibrate, &touchscreen_menu_reset_calibration);
 #endif
 
+#ifdef HAVE_QUICKSCREEN
+MENUITEM_SETTING(quickscreen_timeout, &global_settings.quickscreen_timeout, NULL);
 
+MAKE_MENU(quickscreen_menu, ID2P(LANG_QUICKSCREEN_SETTINGS), NULL, Icon_NOICON, &quickscreen_timeout);
+#endif
+
+
 MENUITEM_SETTING(codepage_setting, &global_settings.default_codepage, NULL);
 
 
@@ -540,4 +546,7 @@
 #ifdef HAVE_TOUCHSCREEN
             &touchscreen_menu,
 #endif
+#ifdef HAVE_QUICKSCREEN
+          &quickscreen_menu,
+#endif
             );
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c	(revision 30835)
+++ apps/settings_list.c	(working copy)
@@ -1793,6 +1793,9 @@
                   NULL, "qs bottom",
                   qs_load_from_cfg, qs_write_to_cfg,
                   qs_is_changed, qs_set_default),
+   INT_SETTING(0, quickscreen_timeout, LANG_QUICKSCREEN_TIMEOUT, 0,
+               "qs timeout", UNIT_SEC, 0, 30, 1,
+               formatter_unit_0_is_off, getlang_unit_0_is_off, NULL),
 #endif
 #ifdef HAVE_SPEAKER
     OFFON_SETTING(0, speaker_enabled, LANG_ENABLE_SPEAKER, false, "speaker",
