Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Import General
- import XMonad
- import qualified XMonad.StackSet as W
- import qualified Data.Map as M
- import XMonad.Util.EZConfig(additionalKeys)
- import System.Exit
- import Graphics.X11.Xlib
- import System.IO
- -- Import Actions
- import XMonad.Actions.CycleWS
- import XMonad.Actions.CycleWindows
- -- Import Utilities
- import XMonad.Util.Scratchpad
- import XMonad.Util.Run(spawnPipe)
- import qualified XMonad.Prompt as P
- import XMonad.Prompt.Shell
- import XMonad.Prompt
- -- Import Hooks
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.UrgencyHook
- import XMonad.Hooks.ManageHelpers
- -- Import Layouts
- import XMonad.Layout.Tabbed
- import XMonad.Layout.Grid
- import XMonad.Layout.NoBorders
- main = do
- xmproc <- spawnPipe "xmobar"
- xmonad $ withUrgencyHook NoUrgencyHook $ defaultConfig
- { terminal = myTerminal
- , modMask = myModMask
- , focusFollowsMouse = False
- , workspaces = myWorkspaces
- , normalBorderColor = myNormalBorderColor
- , focusedBorderColor = myFocusedBorderColor
- , keys = myKeys
- --, mouseBindings = myMouseBindings
- , layoutHook = myLayoutHook
- , manageHook = myManageHook
- --, handleEventHook = myEventHook
- , logHook = myLogHook xmproc
- --, startupHook = myStartupHook
- }
- -- Hooks
- -- LayoutHook
- myLayoutHook = standardLayouts
- where
- standardLayouts = avoidStruts $ smartBorders $ (Tall ||| Grid ||| simpleTabbed ||| Full)
- -- Workspaces
- myWorkspaces :: [WorkspaceId]
- myWorkspaces = ["@", "#!", "XD"]
- -- Automatically Move App to Workspace or Float
- myManageHook :: ManageHook
- myManageHook = scratchpadManageHook (W.RationalRect 0.25 0.375 0.5 0.35) <+> ( composeAll . concat $
- [[isFullscreen --> doFullFloat
- , className =? "Xmessage" --> doCenterFloat
- , className =? "feh" --> doCenterFloat
- , className =? "MPlayer" --> (doCenterFloat <+> doShift "XD")
- , className =? "Firefox" --> doShift "@"
- , className =? "Opera" --> doShift "@"
- , className =? "Chromium" --> doShift "@"
- ]]
- ) <+> manageDocks
- -- LogHook
- myLogHook :: Handle -> X ()
- myLogHook h = dynamicLogWithPP $ customPP { ppOutput = hPutStrLn h }
- -- Cuteness
- -- Borders
- myBorderWidth :: Dimension
- myBorderWidth = 1
- myNormalBorderColor, myFocusedBorderColor :: String
- myNormalBorderColor = "#151515"
- myFocusedBorderColor = "#DDDDDD"
- -- Xmobar
- customPP :: PP
- customPP = defaultPP {
- ppHidden = xmobarColor "#151515" ""
- , ppCurrent = xmobarColor "#DDDDDD" "" . wrap "[" "]"
- , ppUrgent = xmobarColor "#FF0000" "" . wrap "*" "*"
- , ppLayout = xmobarColor "#DDDDDD" ""
- , ppTitle = xmobarColor "#DDDDDD" "" . shorten 80
- , ppSep = " // "
- }
- -- Tabs
- --myTheme = defaultTheme { decoHeight = 16
- -- , activeColor = "#a6c292"
- -- , activeBorderColor = "#a6c292"
- -- , activeTextColor = "#000000"
- -- , inactiveBorderColor = "#000000"
- -- }
- --------------------------------------------------------------------------
- -- Terminal
- myTerminal :: String
- myTerminal = "urxvt"
- -- Bindings
- -- modMask
- myModMask :: KeyMask
- myModMask = mod4Mask
- -- Keys
- myKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ())
- myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
- [ ((modMask, xK_Return), spawn $ XMonad.terminal conf)
- , ((modMask, xK_z), kill)
- , ((modMask, xK_p), shellPrompt)
- , ((modMask, xK_space), sendMessage NextLayout)
- , ((modMask, xK_n), refresh)
- -- Launch Programs
- , ((modMask, xK_s), scratchpadSpawnAction)
- , ((modMask, xK_w), spawn "firefox")
- , ((modMask, xK_e), spawn "eclipse")
- -- Focus
- , ((modMask, xK_Tab), windows W.focusDown)
- , ((modMask, xK_j), windows W.focusDown)
- , ((modMask, xK_k), windows W.focusUp)
- , ((modMask, xK_m), windows W.focusMaster)
- -- Swapping
- , ((modMask .|. shiftMask, xK_Return), windows W.swapMaster)
- , ((modMask .|. shiftMask, xK_j), windows W.swapDown)
- , ((modMask .|. shiftMask, xK_k), windows W.swapUp)
- -- Resizing
- , ((modMask, xK_h), sendMessage Shrink)
- , ((modMask, xK_l), sendMessage Expand)
- -- ncmpcpp
- , ((), spawn "ncmpcpp prev")
- , ((), spawn "ncmpcpp next")
- , ((), spawn "ncmpcpp toggle")
- -- Volume
- , ((), spawn "amixer -q set Master 2dB+ unmute")
- , ((), spawn "amixer -q set Master 2dB- unmute")
- , ((), spawn "amixer -q set Master toggle")
- -- Quit / Restart
- , ((modMask .|. shiftMask, xK_q), io (exitWith ExitSuccess))
- , ((modMask, xK_q), restart "xmonad" True)
- ]
- ++
- -- mod-[1..9] %! Switch to workspace N
- -- mod-shift-[1..9] %! Move client to workspace N
- [((m .|. modMask, k), windows $ f i)
- | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement