diff options
author | tdback <tyler@tdback.net> | 2025-02-17 19:59:19 -0500 |
---|---|---|
committer | tdback <tyler@tdback.net> | 2025-02-17 19:59:19 -0500 |
commit | 29a0d61bdf39b77dbd4327560606488eb3e3aaa4 (patch) | |
tree | 909d1c898f17522b3937af0785f7e7b99d7b11ae | |
parent | 35325f5916787a7e02c07969420b6a6353533903 (diff) |
keybindings: add layout-specific bindings, default to colemak
-rw-r--r-- | lib/KeyBindings.hs | 98 |
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 |