summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortdback <tyler@tdback.net>2025-02-17 19:59:19 -0500
committertdback <tyler@tdback.net>2025-02-17 19:59:19 -0500
commit29a0d61bdf39b77dbd4327560606488eb3e3aaa4 (patch)
tree909d1c898f17522b3937af0785f7e7b99d7b11ae
parent35325f5916787a7e02c07969420b6a6353533903 (diff)
keybindings: add layout-specific bindings, default to colemak
-rw-r--r--lib/KeyBindings.hs98
1 files changed, 65 insertions, 33 deletions
diff --git a/lib/KeyBindings.hs b/lib/KeyBindings.hs
index 45988d4..092dc7a 100644
--- a/lib/KeyBindings.hs
+++ b/lib/KeyBindings.hs
@@ -15,45 +15,77 @@ import qualified Data.Map as M
import qualified WindowState as WS
import qualified XMonad.StackSet as W
+myColemak modm =
+ [ ((modm, xK_h), refresh)
+ , ((modm, xK_t), sendMessage $ Toggle FULL)
+ , ((modm .|. shiftMask, xK_t), withFocused WS.toggleFloat)
+ , ((modm, xK_space), sendMessage NextLayout)
+ , ((modm, xK_Tab), windows W.focusDown)
+ , ((modm, xK_n), windows W.focusDown)
+ , ((modm, xK_e), windows W.focusUp)
+ , ((modm, xK_h), windows W.focusMaster)
+ , ((modm .|. shiftMask, xK_n), windows W.swapDown)
+ , ((modm .|. shiftMask, xK_e), windows W.swapUp)
+ , ((modm, xK_Return), windows W.swapMaster)
+ , ((modm, xK_m), sendMessage Expand)
+ , ((modm, xK_i), sendMessage Shrink)
+ , ((modm, xK_Tab), toggleWS)
+ , ((modm, xK_f), viewEmptyWorkspace)
+ , ((modm .|. shiftMask, xK_f), tagToEmptyWorkspace)
+ , ((modm, xK_b), withFocused $ windows . W.sink)
+ , ((modm, xK_x), spawn "emacsclient -cn")
+ , ((modm, xK_r), spawn "rofi -show drun")
+ , ((altMask, xK_Tab), spawn "rofi -show window")
+ , ((modm, xK_p), spawn "snapshot -f")
+ , ((modm .|. shiftMask, xK_p), spawn "snapshot")
+ ]
+
+myQwerty modm =
+ [ ((modm, xK_n), refresh)
+ , ((modm, xK_f), sendMessage $ Toggle FULL)
+ , ((modm .|. shiftMask, xK_f), withFocused WS.toggleFloat)
+ , ((modm, xK_space), sendMessage NextLayout)
+ , ((modm, xK_Tab), windows W.focusDown)
+ , ((modm, xK_j), windows W.focusDown)
+ , ((modm, xK_k), windows W.focusUp)
+ , ((modm, xK_m), windows W.focusMaster)
+ , ((modm .|. shiftMask, xK_j), windows W.swapDown)
+ , ((modm .|. shiftMask, xK_k), windows W.swapUp)
+ , ((modm, xK_Return), windows W.swapMaster)
+ , ((modm, xK_h), sendMessage Expand)
+ , ((modm, xK_l), sendMessage Shrink)
+ , ((modm, xK_Tab), toggleWS)
+ , ((modm, xK_e), viewEmptyWorkspace)
+ , ((modm .|. shiftMask, xK_e), tagToEmptyWorkspace)
+ , ((modm, xK_t), withFocused $ windows . W.sink)
+ , ((modm, xK_x), spawn "emacsclient -cn")
+ , ((modm, xK_r), spawn "rofi -show drun")
+ , ((altMask, xK_Tab), spawn "rofi -show window")
+ , ((modm, xK_p), spawn "snapshot -f")
+ , ((modm .|. shiftMask, xK_p), spawn "snapshot")
+ ]
+
myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
myKeys conf@(XConfig{XMonad.modMask = modm}) =
M.fromList $
- [ ((modm .|. shiftMask, xK_Return), safeSpawn (XMonad.terminal conf) [])
- , ((modm, xK_b), safeSpawn myBrowser [])
- , ((modm .|. shiftMask, xK_c), kill)
- , ((modm, xK_n), refresh)
- , ((modm, xK_q), spawn "xmonad --recompile && xmonad --restart")
- , ((modm, xK_f), sendMessage $ Toggle FULL)
- , ((modm .|. shiftMask, xK_f), withFocused WS.toggleFloat)
- , ((modm, xK_space), sendMessage NextLayout)
- , ((modm, xK_Tab), windows W.focusDown)
- , ((modm, xK_j), windows W.focusDown)
- , ((modm, xK_k), windows W.focusUp)
- , ((modm, xK_m), windows W.focusMaster)
- , ((modm .|. shiftMask, xK_j), windows W.swapDown)
- , ((modm .|. shiftMask, xK_k), windows W.swapUp)
- , ((modm, xK_Return), windows W.swapMaster)
- , ((modm, xK_h), sendMessage Expand)
- , ((modm, xK_l), sendMessage Shrink)
- , ((modm, xK_Tab), toggleWS)
- , ((modm, xK_e), viewEmptyWorkspace)
- , ((modm .|. shiftMask, xK_e), tagToEmptyWorkspace)
- , ((modm, xK_t), withFocused $ windows . W.sink)
- , ((modm, xK_x), spawn "emacsclient -cn")
- , ((modm, xK_r), spawn "rofi -show drun")
- , ((altMask, xK_Tab), spawn "rofi -show window")
- , ((modm, xK_p), spawn "snapshot -f")
- , ((modm .|. shiftMask, xK_p), spawn "snapshot")
- , ((0, xF86XK_AudioPrev), spawn "mpc prev")
- , ((0, xF86XK_AudioNext), spawn "mpc next")
- , ((0, xF86XK_AudioPlay), spawn "mpc toggle")
- , ((0, xF86XK_AudioRaiseVolume), spawn "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+")
- , ((0, xF86XK_AudioLowerVolume), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-")
- , ((0, xF86XK_AudioMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle")
- , ((0, xF86XK_AudioMicMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle")
+ [ ((modm .|. shiftMask, xK_Return), safeSpawn (XMonad.terminal conf) [])
+ , ((modm, xK_b), safeSpawn myBrowser [])
+ , ((modm .|. shiftMask, xK_c), kill)
+ , ((modm, xK_q), spawn "xmonad --recompile && xmonad --restart")
+ , ((0, xF86XK_AudioPrev), spawn "mpc prev")
+ , ((0, xF86XK_AudioNext), spawn "mpc next")
+ , ((0, xF86XK_AudioPlay), spawn "mpc toggle")
+ , ((0, xF86XK_AudioRaiseVolume), spawn "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+")
+ , ((0, xF86XK_AudioLowerVolume), spawn "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-")
+ , ((0, xF86XK_AudioMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle")
+ , ((0, xF86XK_AudioMicMute), spawn "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle")
]
++
+ -- Workspace management.
[ ((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
]
+ ++
+ -- Layout-specific bindings.
+ myColemak modm