From 766675ca92cac6aa3bb67fa45ae28da28ae86bcc Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Sat, 1 Feb 2020 23:46:55 -0700 Subject: First XMonad-JRahm Commit Have an install script to install XMonad-jrahm on the expected platform. --- src/Internal/Keys.hs | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 src/Internal/Keys.hs (limited to 'src/Internal/Keys.hs') diff --git a/src/Internal/Keys.hs b/src/Internal/Keys.hs new file mode 100644 index 0000000..b00458e --- /dev/null +++ b/src/Internal/Keys.hs @@ -0,0 +1,103 @@ +module Internal.Keys where + +import qualified Data.Map as Map +import Data.Map (Map) +import Internal.Marking +import XMonad.Actions.Submap +import XMonad.Util.CustomKeys +import XMonad +import Control.Monad +import XMonad.Actions.WindowNavigation +import qualified XMonad.StackSet as W + +type KeyMap l = XConfig l -> Map (KeyMask, KeySym) (X ()) + +applyKeys :: XConfig l -> IO (XConfig l) +applyKeys config@(XConfig {modMask = modm}) = do + ks <- newKeys + withWindowNavigation (xK_k, xK_h, xK_j, xK_l) $ + config { keys = ks } + +newKeys :: IO (KeyMap l) +newKeys = + withNewMarkContext $ \markContext -> + return $ \config@(XConfig {modMask = modm}) -> + let workspacesByInt = + Map.fromList $ + zip ['1'..] (XMonad.workspaces config) + + gotoWorkspace :: Char -> X () + gotoWorkspace ch = + mapM_ (windows . W.greedyView) (Map.lookup ch workspacesByInt) + + in + + Map.fromList + [ ((modm, xK_F12), (void $ spawn "spotify-control next")) + , ((modm, xK_F11), (void $ spawn "spotify-control prev")) + , ((modm, xK_F10), (void $ spawn "spotify-control play")) + , ((modm .|. mod1Mask, xK_l), (void $ spawn "xscreensaver-command -lock")) + , ((modm, xK_t), (void $ spawn (terminal config))) + , ((modm, xK_m), (submap $ mapAlpha modm (markCurrentWindow markContext))) + , ((modm, xK_apostrophe), (submap $ + Map.insert + (modm, xK_apostrophe) + (jumpToLast markContext) + (mapAlpha modm (jumpToMark markContext)))) + , ((modm, xK_g), (submap $ mapNumbers 0 gotoWorkspace)) + + , ((modm .|. shiftMask, xK_bracketleft), sendMessage (IncMasterN (-1))) + , ((modm .|. shiftMask, xK_bracketright), sendMessage (IncMasterN 1)) + , ((modm, xK_bracketleft), sendMessage Shrink) + , ((modm, xK_bracketright), sendMessage Expand) + + , ((modm, xK_space), sendMessage NextLayout) + + , ((modm, xK_q), spawn "xmonad --recompile && xmonad --restart") + ] + +mapNumbers :: KeyMask -> (Char -> X ()) -> Map (KeyMask, KeySym) (X ()) +mapNumbers km fn = + Map.fromList [ + ((km, xK_0), fn '0') + , ((km, xK_1), fn '1') + , ((km, xK_2), fn '2') + , ((km, xK_3), fn '3') + , ((km, xK_4), fn '4') + , ((km, xK_5), fn '5') + , ((km, xK_6), fn '6') + , ((km, xK_7), fn '7') + , ((km, xK_8), fn '8') + , ((km, xK_9), fn '9') + ] + +mapAlpha :: KeyMask -> (Char -> X ()) -> Map (KeyMask, KeySym) (X ()) +mapAlpha km fn = + Map.fromList [ + ((km, xK_a), fn 'a') + , ((km, xK_b), fn 'b') + , ((km, xK_c), fn 'c') + , ((km, xK_d), fn 'd') + , ((km, xK_e), fn 'e') + , ((km, xK_f), fn 'f') + , ((km, xK_g), fn 'g') + , ((km, xK_h), fn 'h') + , ((km, xK_i), fn 'i') + , ((km, xK_j), fn 'j') + , ((km, xK_k), fn 'k') + , ((km, xK_l), fn 'l') + , ((km, xK_m), fn 'm') + , ((km, xK_n), fn 'n') + , ((km, xK_o), fn 'o') + , ((km, xK_p), fn 'p') + , ((km, xK_q), fn 'q') + , ((km, xK_r), fn 'r') + , ((km, xK_s), fn 's') + , ((km, xK_t), fn 't') + , ((km, xK_u), fn 'u') + , ((km, xK_v), fn 'v') + , ((km, xK_w), fn 'w') + , ((km, xK_x), fn 'x') + , ((km, xK_y), fn 'y') + , ((km, xK_z), fn 'z') + ] -- cgit