overviewControls: Add shortcut for shifting through overview
This is the same as the vertical swipe gesture, but for keyboard junkies: Analoguous to the <super><alt>left/right shortcuts for switching between workspaces, add <super><alt>up/down to shift between session, window picker and app grid. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1695>
This commit is contained in:

committed by
Marge Bot

parent
ac6337848f
commit
f4b88aac04
@ -358,6 +358,18 @@ class ControlsManager extends St.Widget {
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||
this._toggleAppsPage.bind(this));
|
||||
|
||||
Main.wm.addKeybinding('shift-overview-up',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||
() => this._shiftState(Meta.MotionDirection.UP));
|
||||
|
||||
Main.wm.addKeybinding('shift-overview-down',
|
||||
new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
|
||||
Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
|
||||
() => this._shiftState(Meta.MotionDirection.DOWN));
|
||||
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
|
||||
this._update();
|
||||
@ -513,6 +525,34 @@ class ControlsManager extends St.Widget {
|
||||
}
|
||||
}
|
||||
|
||||
_shiftState(direction) {
|
||||
let { currentState, finalState } = this._stateAdjustment.getStateTransitionParams();
|
||||
|
||||
if (direction === Meta.MotionDirection.DOWN)
|
||||
finalState = Math.max(finalState - 1, ControlsState.HIDDEN);
|
||||
else if (direction === Meta.MotionDirection.UP)
|
||||
finalState = Math.min(finalState + 1, ControlsState.APP_GRID);
|
||||
|
||||
if (finalState === currentState)
|
||||
return;
|
||||
|
||||
if (currentState === ControlsState.HIDDEN &&
|
||||
finalState === ControlsState.WINDOW_PICKER) {
|
||||
Main.overview.show();
|
||||
} else if (finalState === ControlsState.HIDDEN) {
|
||||
Main.overview.hide();
|
||||
} else {
|
||||
this._stateAdjustment.ease(finalState, {
|
||||
duration: SIDE_CONTROLS_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
onComplete: () => {
|
||||
this.dash.showAppsButton.checked =
|
||||
finalState === ControlsState.APP_GRID;
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
global.workspace_manager.disconnect(this._nWorkspacesNotifyId);
|
||||
}
|
||||
|
Reference in New Issue
Block a user