keybindings to move windows left or right in the win list

master
Dustin Swan 1 week ago
parent 3d7559845e
commit 988d2f8ee4
Signed by: dustinswan
GPG Key ID: 30D46587E2100467

@ -183,6 +183,38 @@ os =
newIndex = min (len osState.windows - 1) (osState.wm.focusedIndex + 1); newIndex = min (len osState.windows - 1) (osState.wm.focusedIndex + 1);
{ state = state, emit = [focusWindow newIndex] }; { state = state, emit = [focusWindow newIndex] };
handleMoveLeftEvent = state \
idx = osState.wm.focusedIndex;
idx == 0
| True \ { state = state, emit = [] }
| False \ (
newIdx = idx - 1;
windows = osState.windows;
newWindows = [
...take newIdx windows,
nth idx windows ~ unwrapOr {},
nth newIdx windows ~ unwrapOr {},
...drop (idx + 1) windows
];
{ state = state, emit = [osState.windows := newWindows, focusWindow newIdx] }
);
handleMoveRightEvent = state \
idx = osState.wm.focusedIndex;
idx == len osState.windows - 1
| True \ { state = state, emit = [] }
| False \ (
newIdx = idx + 1;
windows = osState.windows;
newWindows = [
...take idx windows,
nth newIdx windows ~ unwrapOr {},
nth idx windows ~ unwrapOr {},
...drop (newIdx + 1) windows
];
{ state = state, emit = [osState.windows := newWindows, focusWindow newIdx] }
);
ui.stateful { ui.stateful {
key = "os", key = "os",
autoFocus = True, autoFocus = True,
@ -192,10 +224,19 @@ os =
update = state event \ event update = state event \ event
| Key { key = "p", meta = True } \ | Key { key = "p", meta = True } \
{ state = state, emit = [openPalette] } { state = state, emit = [openPalette] }
| Key { key = "ArrowLeft", meta = True, shift = True } \ handleMoveLeftEvent state
| Key { key = "h", meta = True, shift = True } \ handleMoveLeftEvent state
| Key { key = "ArrowRight", meta = True, shift = True } \ handleMoveRightEvent state
| Key { key = "l", meta = True, shift = True } \ handleMoveRightEvent state
| Key { key = "ArrowLeft", meta = True } \ handleFocusLeftEvent state | Key { key = "ArrowLeft", meta = True } \ handleFocusLeftEvent state
| Key { key = "h", meta = True } \ handleFocusLeftEvent state | Key { key = "h", meta = True } \ handleFocusLeftEvent state
| Key { key = "ArrowRight", meta = True } \ handleFocusRightEvent state | Key { key = "ArrowRight", meta = True } \ handleFocusRightEvent state
| Key { key = "l", meta = True } \ handleFocusRightEvent state | Key { key = "l", meta = True } \ handleFocusRightEvent state
| Key { key = "d", meta = True } \ | Key { key = "d", meta = True } \
{ state = state, emit = [closeFocusedWindow 0] } { state = state, emit = [closeFocusedWindow 0] }
| Key { key = "f", meta = True } \ | Key { key = "f", meta = True } \

Loading…
Cancel
Save