session: add optional vim-like keybinds (#291)
Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
This commit is contained in:
parent
7dc5b65d22
commit
2539f7b68c
3 changed files with 25 additions and 0 deletions
|
|
@ -224,6 +224,7 @@ All configuration options are in `~/.config/caelestia/shell.json`.
|
||||||
},
|
},
|
||||||
"session": {
|
"session": {
|
||||||
"dragThreshold": 30,
|
"dragThreshold": 30,
|
||||||
|
"vimKeybinds": false,
|
||||||
"commands": {
|
"commands": {
|
||||||
"logout": ["loginctl", "terminate-user", ""],
|
"logout": ["loginctl", "terminate-user", ""],
|
||||||
"shutdown": ["systemctl", "poweroff"],
|
"shutdown": ["systemctl", "poweroff"],
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,9 @@ import Quickshell.Io
|
||||||
JsonObject {
|
JsonObject {
|
||||||
property bool enabled: true
|
property bool enabled: true
|
||||||
property int dragThreshold: 30
|
property int dragThreshold: 30
|
||||||
|
property bool vimKeybinds: false
|
||||||
property Commands commands: Commands{}
|
property Commands commands: Commands{}
|
||||||
|
|
||||||
property Sizes sizes: Sizes {}
|
property Sizes sizes: Sizes {}
|
||||||
|
|
||||||
component Commands: JsonObject {
|
component Commands: JsonObject {
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,28 @@ Column {
|
||||||
Keys.onEnterPressed: Quickshell.execDetached(button.command)
|
Keys.onEnterPressed: Quickshell.execDetached(button.command)
|
||||||
Keys.onReturnPressed: Quickshell.execDetached(button.command)
|
Keys.onReturnPressed: Quickshell.execDetached(button.command)
|
||||||
Keys.onEscapePressed: root.visibilities.session = false
|
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 {
|
StateLayer {
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue