]> code.delx.au - show-app-menu-on-key-press/blob - extension.js
Compatibility with Gnome 3.38
[show-app-menu-on-key-press] / extension.js
1 const St = imports.gi.St;
2 const Main = imports.ui.main;
3 const Views = imports.ui.appDisplay.Views;
4
5 let signalId = null;
6
7 function init() {
8 }
9
10 function enable() {
11 signalId = global.stage.connect('key-press-event', onStageKeyPress);
12 }
13
14 function disable() {
15 if (signalId) {
16 global.stage.disconnect('key-press-event');
17 signalId = null;
18 }
19 }
20
21 function onStageKeyPress() {
22 if (!hasVisibleWindows() && !Main.overview.visible) {
23 Main.overview.viewSelector.showApps();
24 const appDisplay = Main.overview.viewSelector.appDisplay;
25 let view = appDisplay;
26 if (appDisplay._views) { // Gnome 3.36 or older
27
28 view = appDisplay._views[Views.FREQUENT].view;
29 }
30 view._grid.remove_all_children()
31 view._items = new Map();
32 view._orderedItems = [];
33 view._redisplay();
34 if (appDisplay._showView) { // Gnome 3.36 or older
35 appDisplay._showView(Views.FREQUENT);
36 }
37 Main.overview.viewSelector._activePage.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
38 }
39 }
40
41 function hasVisibleWindows() {
42 return global.display.get_tab_list(0, null).find((w) => !w.is_hidden());
43 }
44