diff options
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | config/SessionConfig.qml | 2 | ||||
| -rw-r--r-- | modules/session/Content.qml | 22 |
3 files changed, 25 insertions, 0 deletions
@@ -224,6 +224,7 @@ All configuration options are in `~/.config/caelestia/shell.json`. }, "session": { "dragThreshold": 30, + "vimKeybinds": false, "commands": { "logout": ["loginctl", "terminate-user", ""], "shutdown": ["systemctl", "poweroff"], diff --git a/config/SessionConfig.qml b/config/SessionConfig.qml index e47f294..22b926c 100644 --- a/config/SessionConfig.qml +++ b/config/SessionConfig.qml @@ -3,7 +3,9 @@ import Quickshell.Io JsonObject { property bool enabled: true property int dragThreshold: 30 + property bool vimKeybinds: false property Commands commands: Commands{} + property Sizes sizes: Sizes {} component Commands: JsonObject { diff --git a/modules/session/Content.qml b/modules/session/Content.qml index d90c0bc..4c0bc88 100644 --- a/modules/session/Content.qml +++ b/modules/session/Content.qml @@ -98,6 +98,28 @@ Column { Keys.onEnterPressed: Quickshell.execDetached(button.command) Keys.onReturnPressed: Quickshell.execDetached(button.command) Keys.onEscapePressed: root.visibilities.session = false + Keys.onPressed: event => { + if (!Config.session.vimKeybinds) + return; + + if (event.modifiers & Qt.ControlModifier) { + if (event.key === Qt.Key_J && KeyNavigation.down) { + KeyNavigation.down.focus = true; + event.accepted = true; + } else if (event.key === Qt.Key_K && KeyNavigation.up) { + KeyNavigation.up.focus = true; + event.accepted = true; + } + } else if (event.key === Qt.Key_Tab && KeyNavigation.down) { + KeyNavigation.down.focus = true; + event.accepted = true; + } else if (event.key === Qt.Key_Backtab || (event.key === Qt.Key_Tab && (event.modifiers & Qt.ShiftModifier))) { + if (KeyNavigation.up) { + KeyNavigation.up.focus = true; + event.accepted = true; + } + } + } StateLayer { radius: parent.radius |