Skip to content

Instantly share code, notes, and snippets.

@isovector
Created July 16, 2015 22:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save isovector/3cc4412ec6c4cb268af1 to your computer and use it in GitHub Desktop.
Save isovector/3cc4412ec6c4cb268af1 to your computer and use it in GitHub Desktop.
xmonad.hs
import Prelude hiding (mod)
import Control.Monad (when, liftM2)
import System.Environment (getArgs)
import System.IO
import XMonad
import XMonad.Actions.DynamicWorkspaces
import XMonad.Actions.WindowGo
import XMonad.Layout.Fullscreen
import XMonad.Layout.NoBorders
import XMonad.Core
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.SetWMName
import XMonad.Hooks.UrgencyHook
import XMonad.Util.EZConfig (additionalKeys, removeKeys)
import XMonad.Util.Replace (replace)
import XMonad.Util.Run
import qualified XMonad.StackSet as W
import Graphics.X11.ExtraTypes.XF86
import qualified Data.Map as M
mod = mod4Mask
cmus = mod3Mask
setWallpaper :: String -> X ()
setWallpaper strWallpaper = spawn $ "feh --bg-fill /home/bootstrap/" ++ strWallpaper
myManageHook = composeAll
[ className =? "Gvim" --> viewShift "2"
] <+> manageDocks
where viewShift = doF . liftM2 (.) W.greedyView W.shift
-- StartupHook
myStartupHook :: X()
myStartupHook = do
setWMName "LG3D"
setWallpaper "Desktop/majora.png"
myLogHook h = dynamicLogWithPP $ defaultPP
{ ppCurrent = dzenColor "#303030" "#909090" . pad
, ppHidden = dzenColor "#909090" "" . pad
, ppHiddenNoWindows = const "" --dzenColor "#606060" "" . pad
-- , ppLayout = dzenColor "#909090" "" . pad
, ppLayout = const ""
, ppUrgent = dzenColor "#ff0000" "" . pad . dzenStrip
, ppTitle = shorten 100
, ppWsSep = ""
, ppSep = " "
, ppOutput = hPutStrLn h
}
-- add avoidStruts to your layoutHook like so
myLayoutHook = avoidStruts $ tall ||| Mirror tall ||| noBorders (fullscreenFull Full)
where tall = Tall 1 (3/100) (1/2)
main = do d <- spawnPipe "dzen2 -p -ta l -e 'onstart=lower' -fn 'Bitstream Vera Sans-8'"
spawn "xmodmap ~/.xmodmaprc"
safeSpawn "terminator" ["-e", "cmus"]
xmonad $ withUrgencyHook NoUrgencyHook $
defaultConfig { modMask = mod
, terminal = "terminator"
, focusedBorderColor = "blue"
, startupHook = myStartupHook
, manageHook = myManageHook
, handleEventHook = docksEventHook
, logHook = myLogHook d
, layoutHook = myLayoutHook
} `removeKeys` [ (mod, xK_p)
, (mod .|. shiftMask, xK_p)
]
`additionalKeys` myKeys
myKeys =
[ ((mod, xK_f), runOrRaise "luakit" $ className =? "luakit")
, ((mod, xK_g), runOrRaise "gvim" $ className =? "Gvim")
, ((mod, xK_d), safeSpawnProg "synapse")
, ((mod .|. shiftMask, xK_f), runOrRaise "chromium-browser" $ className =? "Chromium-browser")
, ((mod, xK_x), safeSpawnProg "terminator")
, ((mod, xK_t), safeSpawnProg "thunar")
, ((mod, xK_p), safeSpawnProg "scrot")
, ((mod .|. shiftMask, xK_p), spawn "sleep 0.2; scrot -s")
, ((0, xF86XK_AudioRaiseVolume), safeSpawn "amixer" $ words "-q set Master 2dB+")
, ((0, xF86XK_AudioLowerVolume), safeSpawn "amixer" $ words "-q set Master 2dB-")
, ((mod .|. shiftMask, xK_q), kill)
, ((cmus, xK_Left), safeSpawn "cmus-remote" ["--prev"])
, ((cmus, xK_Right), safeSpawn "cmus-remote" ["--next"])
, ((cmus, xK_Down), safeSpawn "cmus-remote" ["--pause"])
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment