Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import XMonad
- import System.IO
- import qualified XMonad.StackSet as W
- import Data.Ratio ((%))
- import XMonad.Actions.Commands
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.UrgencyHook
- import XMonad.Layout.Grid
- import XMonad.Layout.IM
- import XMonad.Layout.NoBorders
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Reflect
- import XMonad.Layout.ToggleLayouts
- import XMonad.Util.EZConfig (additionalKeys)
- import XMonad.Util.Run(spawnPipe, unsafeSpawn)
- import XMonad.Util.Scratchpad
- ------------------------------------------------------------------------
- -- workspaces
- myWorkspaces = ["1:comm","2:dev","3:test","4:remote"] ++ map show [5..9]
- ------------------------------------------------------------------------
- -- keybindings
- myKeybindings =
- [ ((mod1Mask, xK_BackSpace), focusUrgent )
- , ((mod1Mask, xK_x ), commands >>= runCommand )
- , ((mod1Mask, xK_b ), sendMessage ToggleStruts )
- , ((0, 0x1008ff11), unsafeSpawn "amixer -q sset Master 5-" ) -- XF86AudioLowerVolume
- , ((0, 0x1008ff12), unsafeSpawn "amixer -q sset Master toggle" ) -- XF86AudioMute
- , ((0, 0x1008ff13), unsafeSpawn "amixer -q sset Master 5+" ) -- XF86AudioRaiseVolume
- , ((0, xK_Print ), unsafeSpawn "scrot '%Y-%m-%d-%H%M_$wx$h.png' -e 'mv $f ~/screenshots/'")
- ]
- where commands = defaultCommands
- ------------------------------------------------------------------------
- -- window rules
- myManageHook = scratchpadManageHookDefault <+>
- (composeAll
- [ className =? "psi" --> doF (W.shift "1:comm") ] )
- ------------------------------------------------------------------------
- -- status bar and logging
- myPP statusPipe = xmobarPP
- { ppOutput = hPutStrLn statusPipe
- , ppTitle = xmobarColor "green" "" . shorten 60
- , ppUrgent = xmobarColor "red" "" . wrap "!" "!"
- }
- myLogHook = dynamicLogWithPP . myPP
- ------------------------------------------------------------------------
- -- layouts
- tiled = Tall nmaster delta ratio
- where nmaster = 1
- ratio = 1/2
- delta = 3/100
- imLayout = avoidStruts $
- smartBorders $
- reflectHoriz $
- -- WM_CLASS(STRING) = "main", "psi"
- -- Resource is first string, ClassName is second
- withIM (1%12) (And (Resource "main") (ClassName "psi")) (reflectHoriz tiled)
- -- withIM (1%12) (Role "psimain") (reflectHoriz tiled)
- genericLayouts = avoidStruts $
- smartBorders $
- toggleLayouts (noBorders Full) $
- tiled ||| Mirror tiled ||| (noBorders Full) ||| imLayout
- myLayouts = onWorkspace "1:comm" imLayout $
- genericLayouts
- ------------------------------------------------------------------------
- -- config itself
- myConfig statusPipe = defaultConfig
- { borderWidth = 2
- , focusFollowsMouse = True
- , terminal = "urxvt"
- , normalBorderColor = "grey" -- "#cccccc"
- , focusedBorderColor = "black" -- "#cd8b00"
- , manageHook = manageDocks <+> myManageHook
- , layoutHook = myLayouts
- , logHook = myLogHook statusPipe
- , workspaces = myWorkspaces
- }
- main = do
- statusPipe <- spawnPipe "xmobar ~/.xmonad/xmobar"
- xmonad $
- withUrgencyHook NoUrgencyHook $
- myConfig statusPipe `additionalKeys` myKeybindings
Add Comment
Please, Sign In to add comment