|
|
|
@ -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 } \
|
|
|
|
|