module Keybindings where import XMonad import qualified XMonad.StackSet as W -- actions import XMonad.Actions.CopyWindow import XMonad.Actions.WithAll import XMonad.Actions.CycleWS import XMonad.Actions.GridSelect import XMonad.Actions.SwapWorkspaces -- layout modifiers import XMonad.Layout.Spacing import XMonad.Layout.WindowNavigation as WN import XMonad.Layout.Maximize -- Layouts import XMonad.Layout.BinarySpacePartition as BSP -- hooks import XMonad.Hooks.ManageDocks import Util import Defaults import Scratchpads myMouseKeybindings :: [((ButtonMask, Button), Window -> X ())] myMouseKeybindings = [ ((myModMask, 4), \w -> prevWS) , ((myModMask, 5), \w -> nextWS) , ((myModShiftMask, 4), \w -> shiftToPrev >> prevWS) , ((myModShiftMask, 5), \w -> shiftToNext >> nextWS) ] myFnKeybindingsP :: [(String, X())] myFnKeybindingsP = [ ("", spawn backlightUp) , ("", spawn backlightDown) , ("", spawn volUp) , ("", spawn volDown) , ("", spawn volMute) , ("", spawn pausePlay) , ("", spawn pausePlay) , ("", spawn pausePlay) ] myKeybindings :: [((KeyMask, KeySym), X ())] myKeybindings = [ ((myModMask, xK_Return), spawn myTerminal) , ((myModShiftMask, xK_Return), spawn myLockscreen) , ((myModMask .|. shiftMask, xK_c), kill1) , ((myModMask, xK_s), spawn myLauncher) -- view prev/next workspaces , ((myModShiftMask, xK_Tab ), prevWS) , ((myModMask, xK_Tab ), nextWS) --, ((myModMask, xK_semicolon ), prevWS) --, ((myModMask, xK_apostrophe), nextWS) --, ((myModMask', xK_h ), prevWS) --, ((myModMask', xK_l ), nextWS) -- move to prev/next workspaces --, ((myModShiftMask', xK_h ), shiftToPrev >> prevWS) --, ((myModShiftMask', xK_l ), shiftToNext >> nextWS) --, ((myModShiftMask', xK_semicolon ), shiftToPrev >> prevWS) --, ((myModShiftMask', xK_apostrophe), shiftToNext >> nextWS) -- toggle maximize --, ((myModMask, xK_f), withFocused (sendMessage . maximizeRestore)) -- unfloat windows --, ((myModMask .|. shiftMask, xK_f), withFocused $ windows . W.sink) -- cycle through windows --, ((myModMask', xK_j), windows W.focusDown) --, ((myModMask', xK_k), windows W.focusUp) -- 2D navigation , ((myModMask, xK_n), sendMessage $ Go R) , ((myModMask, xK_d), sendMessage $ Go L) , ((myModMask, xK_t), sendMessage $ Go U) , ((myModMask, xK_h), sendMessage $ Go D) -- swap windows , ((myModShiftMask, xK_n), sendMessage $ WN.Swap R) , ((myModShiftMask, xK_d), sendMessage $ WN.Swap L) , ((myModShiftMask, xK_t), sendMessage $ WN.Swap U) , ((myModShiftMask, xK_h), sendMessage $ WN.Swap D) -- resize , ((myModMask .|. myModMask', xK_n), sendMessage $ ExpandTowards R) , ((myModMask .|. myModMask', xK_d), sendMessage $ ExpandTowards L) , ((myModMask .|. myModMask', xK_h), sendMessage $ ExpandTowards D) , ((myModMask .|. myModMask', xK_t), sendMessage $ ExpandTowards U) , ((myModMask .|. myModShiftMask', xK_n), sendMessage $ ShrinkFrom R) , ((myModMask .|. myModShiftMask', xK_d), sendMessage $ ShrinkFrom L) , ((myModMask .|. myModShiftMask', xK_h), sendMessage $ ShrinkFrom D) , ((myModMask .|. myModShiftMask', xK_t), sendMessage $ ShrinkFrom U) --, ((myModMask, xK_B), windows $ W.greedyView "十") ] ++ [ -- workspace switching ((myModMask, key), windows $ W.greedyView ws) | (key,ws) <- myExtraWorkspaces -- ] ++ [ -- -- moving window to workspace -- ((myModShiftMask, key), windows $ W.shift ws) | (key,ws) <- myWorkspaces -- ] ++ [ -- -- to swap workspace -- ((myModShiftMask', key), windows $ swapWithCurrent ws) | (key, ws) <- myWorkspaces -- ] ++ [ -- -- copy -- ((m .|. myModMask, key), windows $ f ws) | (key, ws) <- myWorkspaces, (f, m) <- [(copy, myModShiftMask')] -- ] ++ [ -- -- for not swapping tags while using multihead -- ((m .|. myModMask, key), windows $ f ws) | (key, ws) <- myWorkspaces, (f, m) <- [(W.view, 0), (W.shift, shiftMask)] ] -- ++ [ -- directly focus monitors instead of cycling -- ((m .|. myModMask, key), screenWorkspace sc >>= flip whenJust (windows . f)) -- | (key, sc) <- zip [xK_e, xK_w] [0..] -- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] --] myKeybindingsP :: [(String, X())] myKeybindingsP = []