Please bear with us as we work to restore functionality to dotfiles.org.
-- xmonad.hs
import XMonad
import XMonad.Layout
import XMonad.Config (defaultConfig)
import XMonad.Hooks.DynamicLog ( PP(..), dynamicLogWithPP, dzenColor, wrap, defaultPP )
import XMonad.Layout.NoBorders
import XMonad.Util.Run (spawnPipe)
import XMonad.Hooks.UrgencyHook
import Data.Bits
import XMonad.Operations
import qualified XMonad.StackSet as W
import qualified Data.Map as Map
import Data.Ratio
import Graphics.X11.Xlib
import System.IO
statusBarCmd= "dzen2 -y 2 -w 400 -bg '#000000' -fg 'gray70' -sa c -fn '-*-terminus-*-*-*-*-12-*-*-*-*-*-iso8859' -e '' -ta l"
main = do din <- spawnPipe statusBarCmd
xmonad $ defaultConfig
{ borderWidth = 1
, normalBorderColor = "black"
, focusedBorderColor = "#aecf96"
, terminal = "urxvt"
, workspaces = ["main", "dev","net", "mail", "jabber"]
-- ++ map show []
, defaultGaps = [(16,0,0,0)]
, logHook = dynamicLogWithPP $ myPP din
, manageHook = myManageHook
, modMask = mod4Mask
, keys = \c -> myKeys `Map.union`
keys defaultConfig c
, layoutHook = smartBorders $ Mirror tiled ||| Full ||| tiled
}
where
tiled = Tall 1 (3%100) 0.618034
myKeys = Map.fromList $
[ ((mod4Mask , xK_F2 ), spawn "gmrun")
--, ((mod4Mask .|. shiftMask , xK_t ), spawn "thunar")
, ((0 , 0x1008ff11 ), spawn "amixer -q sset Master 5-" ) -- XF86AudioLowerVolume: Lower audio volume
, ((0 , 0x1008ff12 ), spawn "amixer -q sset Master toggle" ) -- XF86AudioMute: Mute audio
, ((0 , 0x1008ff13 ), spawn "amixer -q sset Master 5+" ) -- XF86AudioRaiseVolume: Raise audio volume
, ((mod4Mask , xK_e ), spawn "thunar")
, ((mod4Mask , xK_o ), spawn "urxvt -e screen")
, ((mod4Mask , xK_F12 ), spawn "sudo shutdown -h now")
, ((mod4Mask , xK_p ), spawn "exe=`dmenu_path | dmenu -b -fn '-*-terminus-*-r-*-*-*-*-*-*-*-*-*-*' -nb '#000000' -nf '#FFFFFF'` && eval \"exec $exe\"") -- %! Launch dmenu
, ((mod4Mask , xK_c ), kill)
]
myManageHook = composeAll . concat $
[ [ className =? c --> doFloat | c <- floatsClass]
, [ title =? t --> doFloat | t <- floatsTitle]
, [ resource =? r --> doIgnore | r <- ignore]
, [ className =? "Minefield" --> doF (W.shift "net") ]
, [ className =? "Thunderbird-bin" --> doF (W.shift "mail") ]
, [ resource =? "pidgin" --> doF (W.shift "jabber") ]
, [ className =? c --> doSink | c <- sunken ]
]
where
floatsClass = ["MPlayer", "Gimp-2.4", "Gimp", "Switch2", "Nitrogen", "Wine", "Skype"]
floatsTitle = ["Minefield Preferences", "Add-ons", "Buddy List", "Minefield - Restore Previous Session", "R Graphics: Device 2 (ACTIVE)"]
ignore = ["panel", "trayer", "gnome-panel", "desktop_window", "kicker", "kdesktop"]
sunken = ["Display.py"]
doSink :: ManageHook
doSink = ask >>= \w -> liftX (reveal w) >> doF (W.sink w)
myPP h = defaultPP
{ ppCurrent = wrap "^fg(#000000)^bg(#aecf96)^p(2)^i(/home/buttons/.bitmaps/has_win.xbm)" "^p(2)^fg()^bg()"
, ppVisible = wrap "^bg(grey40)^fg(grey70)^p(2)" "^p(2)^fg()^bg()"
, ppHidden = wrap "^p(2)^fg(#ffffff)^i(/home/buttons/.bitmaps/has_win_nv.xbm)" "^p(2)^fg()^bg()"
, ppHiddenNoWindows = id
, ppSep = " ^fg(gray70)^r(2x2)^fg() "
, ppLayout = dzenColor "#be6b13" "" .
(\x -> case x of
"Tall" -> "^i(/home/buttons/.bitmaps/tall.xbm)"
"Mirror Tall" -> "^i(/home/buttons/.bitmaps/mtall.xbm)"
"Full" -> "^i(/home/buttons/.bitmaps/full.xbm)"
)
, ppUrgent = wrap "^p(2)^fg(#ff0000)^i(/home/buttons/.bitmaps/has_win_nv.xbm" "^p(2)^fg()^bg()"
, ppTitle = dzenColor "white" "" . wrap "< " " >"
--, ppTitle = dzenColor "#000000" "#9ab8c2" . wrap " ^r(4x1)^r(1x10) " " ^r(1x10)^r(4x1) "
, ppOutput = hPutStrLn h
}