diff options
author | Alan Pearce | 2017-03-17 09:48:24 +0100 |
---|---|---|
committer | Alan Pearce | 2017-03-17 09:48:24 +0100 |
commit | 397ce671bb028802d528faf8811101e08557e527 (patch) | |
tree | 6a3b0004c7fcbe334f05a50aad483316c6577887 /xmonad | |
parent | db6903e6fab9cff359a530ca2eee6ba3c7e44525 (diff) | |
download | dotfiles-397ce671bb028802d528faf8811101e08557e527.tar.lz dotfiles-397ce671bb028802d528faf8811101e08557e527.tar.zst dotfiles-397ce671bb028802d528faf8811101e08557e527.zip |
Re-structure tags to GNU stow format
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 + } |