diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | src/config.def.nim | 6 | ||||
-rw-r--r-- | src/keys.nim | 1 | ||||
-rw-r--r-- | src/windowmanager.nim | 15 |
4 files changed, 21 insertions, 2 deletions
@@ -1,3 +1,4 @@ *.kra* +*.swp */config.nim kauw
\ No newline at end of file diff --git a/src/config.def.nim b/src/config.def.nim index 638b04b..c72d8e6 100644 --- a/src/config.def.nim +++ b/src/config.def.nim @@ -31,6 +31,12 @@ const nextWindow, key = "Tab", mods = modifier), + + # alt + . will set the focused window to the master window + initKey( + setMaster, + key = "period", + mods = modifier), # alt + return will open st, you can replace this with whatever your preferred terminal is initKey( diff --git a/src/keys.nim b/src/keys.nim index bfe79aa..a56412a 100644 --- a/src/keys.nim +++ b/src/keys.nim @@ -2,6 +2,7 @@ type KeyFunc* = enum closeWindow, nextWindow, + setMaster, spawnCustom Key* = object diff --git a/src/windowmanager.nim b/src/windowmanager.nim index 7f5c111..0ccbe87 100644 --- a/src/windowmanager.nim +++ b/src/windowmanager.nim @@ -152,6 +152,16 @@ proc λnextWindow (wm: WindowManager) = tileWindows wm lvlDebug.log $wm.focused +proc λsetMaster (wm: WindowManager) = + var n = wm.focused + if n != 0: + let temp = wm.clients[n] + wm.clients[n] = wm.clients[0] + wm.clients[0] = temp + wm.focused = 0 + tileWindows wm + lvlDebug.log $wm.focused + proc λspawnCustom (wm: WindowManager, key: keys.Key) = if fork() == 0: discard execvp(key.command, nil) @@ -267,8 +277,9 @@ proc onKeyPress (wm: WindowManager, e: PXKeyEvent) = lvlDebug.log "key event " & $e.keycode let key = wm.keys[e.keycode] case key.keyfunc: - of closeWindow: wm.λcloseWindow() - of nextWindow: wm.λnextWindow() + of closeWindow: wm.λcloseWindow + of nextWindow: wm.λnextWindow + of setMaster: wm.λsetMaster of spawnCustom: wm.λspawnCustom key proc onKeyRelease (wm: WindowManager, e: PXKeyEvent) = return |