From 251dae085f737c974049479b3b42fb01a9d9dedf Mon Sep 17 00:00:00 2001 From: kyle Date: Sun, 25 Jan 2026 00:35:16 +1100 Subject: [PATCH] feat(launcher): add complete vim navigation support to the launcher grid view --- Modules/MainScreen/MainScreen.qml | 12 ++++++++++++ Modules/Panels/Launcher/Launcher.qml | 24 ++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/Modules/MainScreen/MainScreen.qml b/Modules/MainScreen/MainScreen.qml index 99d713290..6bdff05a0 100644 --- a/Modules/MainScreen/MainScreen.qml +++ b/Modules/MainScreen/MainScreen.qml @@ -491,6 +491,12 @@ PanelWindow { onActivated: PanelService.openedPanel.onPageDownPressed() } + Shortcut { + sequence: "Ctrl+H" + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlHPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlHPressed() + } + Shortcut { sequence: "Ctrl+J" enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlJPressed !== undefined) @@ -503,6 +509,12 @@ PanelWindow { onActivated: PanelService.openedPanel.onCtrlKPressed() } + Shortcut { + sequence: "Ctrl+L" + enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlLPressed !== undefined) + onActivated: PanelService.openedPanel.onCtrlLPressed() + } + Shortcut { sequence: "Ctrl+N" enabled: root.isPanelOpen && (PanelService.openedPanel.onCtrlNPressed !== undefined) diff --git a/Modules/Panels/Launcher/Launcher.qml b/Modules/Panels/Launcher/Launcher.qml index 45fc794ba..e726699e7 100644 --- a/Modules/Panels/Launcher/Launcher.qml +++ b/Modules/Panels/Launcher/Launcher.qml @@ -318,12 +318,32 @@ SmartPanel { selectNextPage(); } + function onCtrlHPressed() { + if (isGridView) { + selectPreviousWrapped(); + } + } + function onCtrlJPressed() { - selectNextWrapped(); + if (isGridView) { + selectNextRow(); + } else { + selectNextWrapped(); + } } function onCtrlKPressed() { - selectPreviousWrapped(); + if (isGridView) { + selectPreviousRow(); + } else { + selectPreviousWrapped(); + } + } + + function onCtrlLPressed() { + if (isGridView) { + selectNextWrapped(); + } } function onCtrlNPressed() {