X-Git-Url: https://code.delx.au/show-app-menu-on-key-press/blobdiff_plain/fc351cc60b707853513217f510b7a0afed86e13c..HEAD:/extension.js?ds=sidebyside diff --git a/extension.js b/extension.js index 6bad7ea..34b7018 100644 --- a/extension.js +++ b/extension.js @@ -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()); + } +}