diff options
author | Alan Pearce | 2017-03-24 21:22:27 +0100 |
---|---|---|
committer | Alan Pearce | 2017-03-24 21:22:27 +0100 |
commit | bbb26322199d41171595bff6d073bda1fa1fa62c (patch) | |
tree | 799f160f60327a1b026fd9f4065636e611ccafb0 /xmonad | |
parent | 0c4343e413bbc922954b417a639c60dfa007a0da (diff) | |
parent | 53f50286e177abb9d1ac4a7c239dcbcc3fed63b7 (diff) | |
download | dotfiles-bbb26322199d41171595bff6d073bda1fa1fa62c.tar.lz dotfiles-bbb26322199d41171595bff6d073bda1fa1fa62c.tar.zst dotfiles-bbb26322199d41171595bff6d073bda1fa1fa62c.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'xmonad')
-rw-r--r-- | xmonad/xmonad/xmonad.hs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/xmonad/xmonad/xmonad.hs b/xmonad/xmonad/xmonad.hs new file mode 100644 index 0000000..21e197d --- /dev/null +++ b/xmonad/xmonad/xmonad.hs @@ -0,0 +1,92 @@ +import XMonad +import qualified XMonad.StackSet as W +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.EwmhDesktops +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.ManageHelpers +import XMonad.Layout.NoBorders +import XMonad.Layout.WindowNavigation +import XMonad.Util.EZConfig +import XMonad.Util.Run(spawnPipe) +import System.Exit +import System.IO +import Data.List(isPrefixOf) + +myManageHook :: ManageHook +myManageHook = composeOne + [ className =? "Firefox" -?> doShift "2" + , className =? "Pidgin" -?> doShift "3" + , className =? "nuvolaplayer" -?> doShift "8" + , className =? "Transmission-gtk" -?> doShift "9" + , isFullscreen -?> doFullFloat + , fmap ("mpv" `isPrefixOf`) title -?> doFullFloat + ] + +myKeys c = mkKeymap c $ + [ ("M-S-<Return>", spawn $ XMonad.terminal c) + , ("M-k", kill) + + , ("M-<Space>", spawn "exec $(dmenu_path | dmenu)") + , ("M-x M-e", spawn "emacsclient -c") + + , ("M-t", withFocused $ windows . W.sink) + , ("M-m", windows W.focusMaster) + , ("M-S-m", windows W.swapMaster) + + , ("M-<R>", sendMessage $ Go R) + , ("M-<L>", sendMessage $ Go L) + , ("M-<U>", sendMessage $ Go U) + , ("M-<D>", sendMessage $ Go D) + , ("M-M1-<R>", sendMessage $ Swap R) + , ("M-M1-<L>", sendMessage $ Swap L) + , ("M-M1-<U>", sendMessage $ Swap U) + , ("M-M1-<D>", sendMessage $ Swap D) + , ("M-C-<R>", sendMessage $ Move R) + , ("M-C-<L>", sendMessage $ Move L) + , ("M-C-<U>", sendMessage $ Move U) + , ("M-C-<D>", sendMessage $ Move D) + + , ("M-n", windows W.focusDown) + , ("M-p", windows W.focusUp) + , ("M-S-n", windows W.swapDown) + , ("M-S-p", windows W.swapUp) + + , ("M-,", sendMessage (IncMasterN 1)) + , ("M-.", sendMessage (IncMasterN (-1))) + + , ("M-\\", sendMessage NextLayout) + , ("M-S-\\", setLayout $ XMonad.layoutHook c) + + , ("M-+", sendMessage Shrink) + , ("M--", sendMessage Expand) + + , ("M-q", broadcastMessage ReleaseResources + >> restart "xmonad" True) + , ("C-M-q", io (exitWith ExitSuccess)) + ] ++ + + -- mod-[1..9], Switch to workspace N + -- mod-shift-[1..9], Move client to workspace N + [(m ++ k, windows $ f w) + | (w, k) <- zip (XMonad.workspaces c) (map show [1..9]) + , (m, f) <- [("M-",W.greedyView), ("M-S-",W.shift)]] + + +main :: IO () +main = do + xmproc <-spawnPipe "/usr/bin/xmobar /home/alan/.xmobarrc" + xmonad $ defaultConfig + { manageHook = myManageHook <+> manageDocks <+> manageHook defaultConfig + , layoutHook = smartBorders . avoidStruts $ layoutHook defaultConfig + , logHook = dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#859900" "" . shorten 200 + , ppCurrent = xmobarColor "#b58900" "". wrap "[" "]" + , ppHiddenNoWindows = xmobarColor "#93a1a1" "" + , ppUrgent = xmobarColor "#dc322f" "#b58900" + } + , terminal = "urxvt" + , modMask = mod4Mask + , handleEventHook = fullscreenEventHook + , keys = myKeys + } |