summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--src/config.def.nim6
-rw-r--r--src/keys.nim1
-rw-r--r--src/windowmanager.nim15
4 files changed, 21 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 5aac1e3..6ff1669 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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