]> code.delx.au - show-app-menu-on-key-press/blobdiff - extension.js
gnome-shell 46 compatibility
[show-app-menu-on-key-press] / extension.js
index 6bad7ea8dcac98e147eb3d55c72d46a618f13e95..34b7018b1d5f2b5267c0e745612cc21bd40078fa 100644 (file)
@@ -1,38 +1,37 @@
-const St = imports.gi.St;
-const Main = imports.ui.main;
-const Views = imports.ui.appDisplay.Views;
+import St from 'gi://St';
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
 
-let signalId = null;
+export default class ShowAppMenuOnKeyPressExtension {
 
-function init() {
-}
+    enable() {
+        // show apps on startup
+        Main.layoutManager.connect('startup-complete', () => {
+            Main.overview._overview._controls._toggleAppsPage();
+        });
 
-function enable() {
-    signalId = global.stage.connect('key-press-event', onStageKeyPress);
-}
+        // show apps on key press when there are no windows
+        global.stage.connect('key-press-event', () => {
+            if (!this.hasVisibleWindows() && !Main.overview.visible) {
+                Main.overview.showApps();
+            }
+        });
 
-function disable() {
-    if (signalId) {
-        global.stage.disconnect('key-press-event');
-        signalId = null;
+        // keyboard focus for apps view
+        Main.overview.connect('shown', () => {
+            if (Main.overview._overview.dash.showAppsButton.checked) {
+                Main.overview._overview._controls.appDisplay.navigate_focus(null, St.DirectionType.TAB_FORWARD, false)
+            }
+        });
+        Main.overview._overview.controls.appDisplay.connect('view-loaded', () => {
+            Main.overview._overview._controls.appDisplay.navigate_focus(null, St.DirectionType.TAB_FORWARD, false)
+        });
     }
-}
 
-function onStageKeyPress() {
-    if (!hasVisibleWindows() && !Main.overview.visible) {
-        Main.overview.viewSelector.showApps();
-        const appDisplay = Main.overview.viewSelector.appDisplay;
-        const view = appDisplay._views[Views.FREQUENT].view;
-        view._grid.destroyAll()
-        view._items = new Map();
-        view._orderedItems = [];
-        view._redisplay();
-        appDisplay._showView(Views.FREQUENT);
-        Main.overview.viewSelector._activePage.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
+    disable() {
     }
-}
 
-function hasVisibleWindows() {
-    return global.display.get_tab_list(0, null).find((w) => !w.is_hidden());
-}
+    hasVisibleWindows() {
+        return global.display.get_tab_list(0, null).find((w) => !w.is_hidden());
+    }
 
+}