Xmonad/Config archive/And1's xmonad.hs
From HaskellWiki
< Xmonad | Config archive
xmonad.hs
------------------------------------------------------------------------ -- ~/.xmonad/xmonad.hs -- validate syntax: xmonad --recompile {-# LANGUAGE NoMonomorphismRestriction #-} ------------------------------------------------------------------------ import XMonad hiding (Tall) import XMonad.Actions.CycleWS import XMonad.Actions.FloatKeys import XMonad.Actions.GridSelect import XMonad.Hooks.DynamicHooks import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Hooks.ManageHelpers import XMonad.Hooks.UrgencyHook import XMonad.Layout.ComboP import XMonad.Layout.LayoutCombinators hiding ((|||)) import XMonad.Layout.LayoutHints import XMonad.Layout.NoBorders import XMonad.Layout.PerWorkspace import XMonad.Layout.ResizableTile import XMonad.Layout.Tabbed import XMonad.Layout.TwoPane import XMonad.ManageHook import XMonad.Prompt import XMonad.Prompt.Shell --import XMonad.Util.Cursor import XMonad.Util.Run import Control.Monad (liftM2) import Data.Monoid import Graphics.X11 import Graphics.X11.Xinerama import System.Exit import System.IO import qualified XMonad.Actions.FlexibleResize as Flex import qualified XMonad.StackSet as W import qualified Data.Map as M -- XMonad: main = do dzen <- spawnPipe myStatusBar conkytop <- spawnPipe myTopBar conkympd <- spawnPipe myMPDBar conkyhdd <- spawnPipe myHDDBar xmonad $ myUrgencyHook $ defaultConfig { terminal = myTerminal , focusFollowsMouse = myFocusFollowsMouse , borderWidth = myBorderWidth , modMask = myModMask , workspaces = myWorkspaces , normalBorderColor = myNormalBorderColor , focusedBorderColor = myFocusedBorderColor , keys = myKeys , mouseBindings = myMouseBindings , layoutHook = myLayout , manageHook = myManageHook <+> manageDocks <+> dynamicMasterHook , handleEventHook = myEventHook , logHook = dynamicLogWithPP $ myDzenPP_ dzen , startupHook = myStartupHook } myTerminal = "urxvt" myFocusFollowsMouse = True myBorderWidth = 1 myModMask = mod1Mask myWorkspaces = ["1:irc", "2:www", "3:music", "4:misc", "5:xbmc", "6:GIMP", "7:slideshow!", "8:foo()", "9:vbox"] myNormalBorderColor = "#0f0f0f" myFocusedBorderColor = "#1f1f1f" myEventHook = mempty --myLogHook = dynamicLogWithPP $ myDzenPP dzen myStartupHook = return () --myStartupHook = setDefaultCursor xC_left_ptr -- Color, font and iconpath definitions: --myFont = "-xos4-terminus-medium-r-normal-*-12-*-*-*-c-*-iso10646-1" myFont = "-*-montecarlo-medium-r-normal-*-11-*-*-*-c-*-*-*" --myFont = "-*-proggyopti-medium-r-normal-*-11-*-*-*-c-*-*-*" --myFont = "-*-proggytinysz-medium-r-normal-*-10-*-*-*-c-*-*-*" myIconDir = "/home/and1/.dzen" myDzenFGColor = "#555555" myDzenBGColor = "#222222" myNormalFGColor = "#ffffff" myNormalBGColor = "#0f0f0f" myFocusedFGColor = "#f0f0f0" myFocusedBGColor = "#333333" myUrgentFGColor = "#0099ff" myUrgentBGColor = "#0077ff" myIconFGColor = "#777777" myIconBGColor = "#0f0f0f" myPatternColor = "#1f1f1f" mySeperatorColor = "#555555" -- GSConfig options: myGSConfig = defaultGSConfig { gs_cellheight = 50 , gs_cellwidth = 250 , gs_cellpadding = 10 --, gs_colorizer = "" , gs_font = "" ++ myFont ++ "" --, gs_navigate = "" --, gs_originFractX = "" --, gs_originFractY = "" } -- XPConfig options: myXPConfig = defaultXPConfig { font = "" ++ myFont ++ "" , bgColor = "" ++ myNormalBGColor ++ "" , fgColor = "" ++ myNormalFGColor ++ "" , fgHLight = "" ++ myNormalFGColor ++ "" , bgHLight = "" ++ myUrgentBGColor ++ "" , borderColor = "" ++ myFocusedBorderColor ++ "" , promptBorderWidth = 1 , position = Bottom , height = 16 , historySize = 100 --, historyFilter = "" --, promptKeymap = "" --, completionKey = "" --, defaultText = "" --, autoComplete = "KeySym" --, showCompletionOnTab = "" } -- Theme options: myTheme = defaultTheme { activeColor = "" ++ myFocusedBGColor ++ "" , inactiveColor = "" ++ myDzenBGColor ++ "" , urgentColor = "" ++ myUrgentBGColor ++ "" , activeBorderColor = "" ++ myFocusedBorderColor ++ "" , inactiveBorderColor = "" ++ myNormalBorderColor ++ "" , urgentBorderColor = "" ++ myNormalBorderColor ++ "" , activeTextColor = "" ++ myFocusedFGColor ++ "" , inactiveTextColor = "" ++ myDzenFGColor ++ "" , urgentTextColor = "" ++ myUrgentFGColor ++ "" , fontName = "" ++ myFont ++ "" --, decoWidth = "" --, decoHeight = "" } -- Statusbar options: myStatusBar = "dzen2 -x '0' -y '0' -h '16' -w '1300' -ta 'l' -fg '" ++ myNormalFGColor ++ "' -bg '" ++ myNormalBGColor ++ "' -fn '" ++ myFont ++ "'" myTopBar = "conky -c .conkytop | dzen2 -x '1300' -y '0' -h '16' -w '620' -ta 'r' -fg '" ++ myDzenFGColor ++ "' -bg '" ++ myNormalBGColor ++ "' -fn '" ++ myFont ++ "'" myMPDBar = "conky -c .conkympd | dzen2 -x '0' -y '1184' -h '16' -w '1600' -ta 'l' -fg '" ++ myDzenFGColor ++ "' -bg '" ++ myNormalBGColor ++ "' -fn '" ++ myFont ++ "'" myHDDBar = "conky -c .conkyhdd | dzen2 -x '1600' -y '1184' -h '16' -w '320' -ta 'r' -fg '" ++ myDzenFGColor ++ "' -bg '" ++ myNormalBGColor ++ "' -fn '" ++ myFont ++ "'" -- Urgency hint options: myUrgencyHook = withUrgencyHook dzenUrgencyHook { args = ["-x", "0", "-y", "1184", "-h", "16", "-w", "1920", "-ta", "r", "-expand", "l", "-fg", "" ++ myUrgentFGColor ++ "", "-bg", "" ++ myNormalBGColor ++ "", "-fn", "" ++ myFont ++ ""] } -- Layouts: myLayout = avoidStruts $ layoutHints $ onWorkspace "1:irc" (resizableTile ||| Mirror resizableTile) $ onWorkspace "6:GIMP" gimpLayout $ smartBorders (Full ||| resizableTile ||| Mirror resizableTile) where resizableTile = ResizableTall nmaster delta ratio [] tabbedLayout = tabbedBottomAlways shrinkText myTheme --gimpLayout = tabbedLayout ****||* Full --gimpLayout = Full *||**** tabbedLayout gimpLayout = combineTwoP (TwoPane 0.04 0.82) (tabbedLayout) (Full) (Not (Role "gimp-toolbox")) nmaster = 1 ratio = toRational (2/(1+sqrt(5)::Double)) delta = 3/100 -- Key bindings: myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ [ ((mod4Mask, xK_q), spawn "urxvt -name irssi -e ssh and1@donnergurgler.net") , ((mod4Mask, xK_w), spawn "nitrogen --no-recurse --sort=alpha") , ((mod4Mask, xK_e), spawn "chromium") , ((mod4Mask .|. shiftMask, xK_e), spawn "iceweasel") , ((mod4Mask, xK_r), spawn "urxvt") , ((mod4Mask .|. shiftMask, xK_r), oneShotHook (className =? "URxvt") (doF $ (W.swapUp . W.shiftMaster)) >> spawn "urxvt") , ((mod4Mask, xK_i), spawn "inkscape") , ((mod4Mask, xK_o), spawn "libreoffice") --, ((mod4Mask, xK_i), spawn "env GTK2_RC_FILES=$HOME/.themes/BSM_Simple/gtk-2.0/gtkrc inkscape") --, ((mod4Mask, xK_o), spawn "env GTK2_RC_FILES=$HOME/.themes/BSM_Simple/gtk-2.0/gtkrc libreoffice") , ((mod4Mask, xK_p), shellPrompt myXPConfig) , ((mod4Mask, xK_s), spawn "feh --auto-zoom --full-screen --hide-pointer --randomize --slideshow-delay 5 --title \"feh() | %n\" /home/and1/wallpapers/*.jpg /home/and1/wallpapers/*.png") , ((mod4Mask .|. shiftMask, xK_s), spawn "mpc | osd_cat -p bottom -A center -s 2 -c '#a10a30' -f '-xos4-terminus-medium-r-normal-*-50-*-*-*-c-*-iso10646-1'") , ((mod4Mask, xK_d), spawn "date +'%Y-%m-%d %H:%M' | osd_cat -p bottom -A center -s 2 -c '#a10a30' -f '-xos4-terminus-medium-r-normal-*-140-*-*-*-c-*-iso10646-1'") , ((mod4Mask .|. shiftMask, xK_d), spawn "date +'%H:%M' | osd_cat -p middle -A center -s 2 -c '#a10a30' -f '-xos4-terminus-medium-r-normal-*-140-*-*-*-c-*-iso10646-1'") , ((mod4Mask, xK_f), oneShotHook (className =? "URxvt") doFloat >> spawn "urxvt -g 100x25+25+875") -- MonteCarlo --, ((mod4Mask, xK_f), oneShotHook (className =? "URxvt") doFloat >> spawn "urxvt -g 80x20+25+765") -- Envy Code R + Terminus , ((mod4Mask .|. shiftMask, xK_f), oneShotHook (className =? "URxvt") doFloat >> spawn "urxvt -g 100x10+25+1040") -- MonteCarlo --, ((mod4Mask .|. shiftMask, xK_f), oneShotHook (className =? "URxvt") doFloat >> spawn "urxvt -g 140x10+25+975") -- Envy Code R + Terminus , ((mod4Mask, xK_g), spawn "gimp") , ((mod4Mask .|. shiftMask, xK_g), spawn "pinta") , ((mod4Mask, xK_k), spawn "k3b") , ((mod4Mask, xK_l), spawn "slock") , ((mod4Mask, xK_x), spawn "xbmc") , ((mod4Mask, xK_v), spawn "virtualbox") , ((mod4Mask, xK_n), spawn "nautilus") , ((mod4Mask .|. shiftMask, xK_n), spawn "nvidia-settings") , ((mod4Mask, xK_m), spawn "gmpc") , ((mod4Mask .|. shiftMask, xK_m), spawn "deadbeef") , ((mod4Mask, xK_Print), spawn "scrot screen_%Y-%m-%d.png -d 1") -- take screenshot , ((modMask .|. controlMask, xK_Home), spawn "mpc toggle") -- play/pause song , ((modMask .|. controlMask, xK_End), spawn "mpc stop") -- stop playback , ((modMask .|. controlMask, xK_Prior), spawn "mpc prev") -- previous song , ((modMask .|. controlMask, xK_Next), spawn "mpc next") -- next song , ((modMask, xK_Tab), windows W.focusDown) -- move focus to the next window , ((modMask, xK_j), windows W.focusDown) -- move focus to the next window , ((modMask, xK_k), windows W.focusUp) -- move focus to the previous window , ((modMask, xK_b), sendMessage ToggleStruts) -- toggle the statusbar gap --, ((modMask, xK_n), refresh) -- resize viewed windows to the correct size , ((modMask, xK_m), windows W.swapMaster) -- swap the focused window and the master window , ((modMask, xK_comma), sendMessage (IncMasterN 1)) -- increment the number of windows in the master area , ((modMask, xK_period), sendMessage (IncMasterN (-1))) -- deincrement the number of windows in the master area , ((modMask, xK_Return), windows W.focusMaster) -- move focus to the master window , ((modMask, xK_f), sendMessage NextLayout) -- rotate through the available layout algorithms , ((modMask, xK_g), goToSelected myGSConfig) -- display grid select and go to selected window , ((modMask, xK_Left), prevWS) -- switch to previous workspace , ((modMask, xK_Right), nextWS) -- switch to next workspace , ((modMask .|. shiftMask, xK_Tab), windows W.focusUp) -- move focus to the previous window , ((modMask .|. shiftMask, xK_g), gridselectWorkspace myGSConfig W.view) -- display grid select and go to selected workspace , ((modMask .|. shiftMask, xK_h), sendMessage Shrink) -- shrink the master area , ((modMask .|. shiftMask, xK_j), windows W.swapDown) -- swap the focused window with the next window , ((modMask .|. shiftMask, xK_k), windows W.swapUp) -- swap the focused window with the previous window , ((modMask .|. shiftMask, xK_l), sendMessage Expand) -- expand the master area , ((modMask .|. shiftMask, xK_Return), focusUrgent) -- move focus to urgent window --, ((modMask .|. shiftMask, xK_Left), withFocused (keysResizeWindow (-30,0) (0,0))) -- shrink floated window horizontally by 50 pixels --, ((modMask .|. shiftMask, xK_Right), withFocused (keysResizeWindow (30,0) (0,0))) -- expand floated window horizontally by 50 pixels --, ((modMask .|. shiftMask, xK_Up), withFocused (keysResizeWindow (-30,-30) (0,0))) -- shrink floated window by 50 pixels --, ((modMask .|. shiftMask, xK_Down), withFocused (keysResizeWindow (30,30) (0,0))) -- expand floated window by 50 pixels , ((modMask .|. controlMask, xK_q), io (exitWith ExitSuccess)) -- quit xmonad , ((modMask .|. controlMask, xK_r), spawn "killall conky dzen2 && xmonad --recompile && xmonad --restart") -- restart xmonad , ((modMask .|. controlMask, xK_d), withFocused $ windows . W.sink) -- push window back into tiling , ((modMask .|. controlMask, xK_f), setLayout $ XMonad.layoutHook conf) -- reset the layouts on the current workspace to default , ((modMask .|. controlMask, xK_h), sendMessage MirrorExpand) -- expand the height/width , ((modMask .|. controlMask, xK_j), windows W.swapDown) -- swap the focused window with the next window , ((modMask .|. controlMask, xK_k), windows W.swapUp) -- swap the focused window with the previous window , ((modMask .|. controlMask, xK_l), sendMessage MirrorShrink) -- shrink the height/width , ((modMask .|. controlMask, xK_x), kill) -- close focused window , ((modMask .|. controlMask, xK_Left), withFocused (keysMoveWindow (-30,0))) -- move floated window 10 pixels left , ((modMask .|. controlMask, xK_Right), withFocused (keysMoveWindow (30,0))) -- move floated window 10 pixels right , ((modMask .|. controlMask, xK_Up), withFocused (keysMoveWindow (0,-30))) -- move floated window 10 pixels up , ((modMask .|. controlMask, xK_Down), withFocused (keysMoveWindow (0,30))) -- move floated window 10 pixels down ] ++ [ ((m .|. modMask, k), windows $ f i) | (i, k) <- zip (XMonad.workspaces conf) [xK_F1 .. xK_F9] -- mod-[F1..F9], switch to workspace n --, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)] -- mod-shift-[F1..F9], move window to workspace n , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] -- mod-shift-[F1..F9], move window to workspace n ] ++ [ ((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f)) | (key, sc) <- zip [xK_F10, xK_F11, xK_F12] [0..] -- mod-{F10,F11,F12}, switch to physical/Xinerama screens 1, 2, or 3 , (f, m) <- [(W.view, 0), (W.shift, shiftMask)] -- mod-shift-{F10,F11,F12}, move window to screen 1, 2, or 3 ] -- Mouse bindings: myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $ [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w >> windows W.shiftMaster)) -- set the window to floating mode and move by dragging , ((modMask, button2), (\w -> focus w >> windows W.shiftMaster)) -- raise the window to the top of the stack , ((modMask, button3), (\w -> focus w >> Flex.mouseResizeWindow w)) -- set the window to floating mode and resize by dragging , ((modMask, button4), (\_ -> prevWS)) -- switch to previous workspace , ((modMask, button5), (\_ -> nextWS)) -- switch to next workspace ] -- Window rules: myManageHook = composeAll . concat $ [ [isDialog --> doFloat] , [className =? c --> doFloat | c <- myCFloats] , [title =? t --> doFloat | t <- myTFloats] , [resource =? r --> doFloat | r <- myRFloats] , [resource =? i --> doIgnore | i <- myIgnores] , [(className =? x <||> title =? x <||> resource =? x) --> doShift "1:irc" | x <- my1Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShift "2:www" | x <- my2Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShift "3:music" | x <- my3Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "4:misc" | x <- my4Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "5:xbmc" | x <- my5Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "6:GIMP" | x <- my6Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "7:slideshow!" | x <- my7Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "8:foo()" | x <- my8Shifts] , [(className =? x <||> title =? x <||> resource =? x) --> doShiftAndGo "9:vbox" | x <- my9Shifts] ] where doShiftAndGo = doF . liftM2 (.) W.greedyView W.shift myCFloats = ["Ekiga", "MPlayer", "Nitrogen", "Nvidia-settings", "Sysinfo", "XCalc", "XFontSel", "Xmessage"] myTFloats = ["Downloads", "Iceweasel Preferences", "Save As..."] myRFloats = [] myIgnores = ["desktop_window", "kdesktop"] my1Shifts = [] my2Shifts = ["Chromium"] my3Shifts = ["Deadbeef", "Gmpc"] my4Shifts = ["Eog", "Evince", "Gthumb", "Nautilus", "Pcmanfm", "Pinta"] my5Shifts = ["MPlayer", "xbmc.bin"] my6Shifts = ["Gimp"] my7Shifts = ["feh"] my8Shifts = ["Easytag", "Gconf-editor", "Inkscape", "K3b", "MusicBrainz Picard", "tmw", "Twf", "VCLSalFrame.DocumentWindow"] my9Shifts = ["VirtualBox", "Wine"] -- dynamicLog pretty printer for dzen: myDzenPP h = defaultPP { ppCurrent = wrap ("^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p()^i(" ++ myIconDir ++ "/corner.xbm)^fg(" ++ myNormalFGColor ++ ")") "^fg()^bg()^p()" . \wsId -> dropIx wsId , ppVisible = wrap ("^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p()^i(" ++ myIconDir ++ "/corner.xbm)^fg(" ++ myNormalFGColor ++ ")") "^fg()^bg()^p()" . \wsId -> dropIx wsId , ppHidden = wrap ("^i(" ++ myIconDir ++ "/corner.xbm)") "^fg()^bg()^p()" . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId -- don't use ^fg() here!! --, ppHiddenNoWindows = wrap ("^fg(" ++ myDzenFGColor ++ ")^bg()^p()^i(" ++ myIconDir ++ "/corner.xbm)") "^fg()^bg()^p()" . \wsId -> dropIx wsId , ppHiddenNoWindows = \wsId -> if wsId `notElem` staticWs then "" else wrap ("^fg(" ++ myDzenFGColor ++ ")^bg()^p()^i(" ++ myIconDir ++ "/corner.xbm)") "^fg()^bg()^p()" . dropIx $ wsId , ppUrgent = wrap (("^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p()^i(" ++ myIconDir ++ "/corner.xbm)^fg(" ++ myUrgentFGColor ++ ")")) "^fg()^bg()^p()" . \wsId -> dropIx wsId , ppSep = " " , ppWsSep = " " , ppTitle = dzenColor ("" ++ myNormalFGColor ++ "") "" . wrap "< " " >" , ppLayout = dzenColor ("" ++ myNormalFGColor ++ "") "" . (\x -> case x of "Hinted Full" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-full.xbm)" "Hinted ResizableTall" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-tall-right.xbm)" "Hinted Mirror ResizableTall" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-mirror-bottom.xbm)" --"Hinted combining Tabbed Bottom Simplest and Full with DragPane Vertical 0.1 0.8" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-gimp.xbm)" "Hinted combining Tabbed Bottom Simplest and Full with TwoPane using Not (Role \"gimp-toolbox\")" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-gimp.xbm)" _ -> x ) , ppOutput = hPutStrLn h } where dropIx wsId = if (':' `elem` wsId) then drop 2 wsId else wsId staticWs = ["1:irc", "2:www", "3:music", "4:misc", "5:xbmc"] -- dynamicLog pretty printer for dzen: myDzenPP_ h = defaultPP { ppCurrent = wrap ("^p(2)^ib(1)^fg(" ++ myFocusedBGColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p()``^fg(" ++ myNormalFGColor ++ ")^p(2)") ("^p(2)^fg(" ++ myFocusedBGColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^ib(0)^fg()^bg()^p()") . \wsId -> dropIx wsId , ppVisible = wrap ("^p(2)^ib(1)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p()``^fg(" ++ myNormalFGColor ++ ")^p(2)") ("^p(2)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^ib(0)^fg()^bg()^p()") . \wsId -> dropIx wsId , ppHidden = wrap ("^p(2)^ib(1)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^fg()^bg()^p()``^p(2)") ("^p(2)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^p()^ib(0)^fg()^bg()^p()") . \wsId -> if (':' `elem` wsId) then drop 2 wsId else wsId -- don't use ^fg() here!! , ppHiddenNoWindows = \wsId -> if wsId `notElem` staticWs then "" else wrap ("^p(2)^ib(1)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^fg(" ++ myDzenFGColor ++ ")^bg()^p()``^p(2)") ("^p(2)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^ib(0)^fg()^bg()^p()") . dropIx $ wsId , ppUrgent = wrap (("^p(2)^ib(1)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p()``^fg(" ++ myUrgentFGColor ++ ")^p(2)")) ("^p(2)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^ib(0)^fg()^bg()^p()") . \wsId -> dropIx wsId , ppSep = " " , ppWsSep = "" , ppTitle = dzenColor ("" ++ myNormalFGColor ++ "") "" . wrap ("^ib(1)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_left.xbm)^r(1300x12)^p(-1300)^p(2)^fg()< ") (" >^p(2)^fg(" ++ myPatternColor ++ ")^i(" ++ myIconDir ++ "/corner_right.xbm)^fg(" ++ myNormalBGColor ++ ")^r(1300x12)^p(-1300)^ib(0)^fg()") , ppLayout = dzenColor ("" ++ myNormalFGColor ++ "") "" . (\x -> case x of "Hinted Full" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-full.xbm)" "Hinted ResizableTall" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-tall-right.xbm)" "Hinted Mirror ResizableTall" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-mirror-bottom.xbm)" --"Hinted combining Tabbed Bottom Simplest and Full with DragPane Vertical 0.1 0.8" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-gimp.xbm)" "Hinted combining Tabbed Bottom Simplest and Full with TwoPane using Not (Role \"gimp-toolbox\")" -> "^fg(" ++ myIconFGColor ++ ")^i(" ++ myIconDir ++ "/layout-gimp.xbm)" _ -> x ) , ppOutput = hPutStrLn h } where dropIx wsId = if (':' `elem` wsId) then drop 2 wsId else wsId staticWs = ["1:irc", "2:www", "3:music", "4:misc", "5:xbmc"]
.xinitrc
xcompmgr & xset -b b off xrdb -load $HOME/.Xdefaults xmodmap -e "keysym Super_R = SunCompose" xsetroot -cursor_name left_ptr nitrogen --restore #fbsetbg -b -solid "#0f0f0f" nvidia-settings -a GlyphCache=1 nvidia-settings -a InitialPixmapPlacement=2 export MPD_HOST=localhost export MPD_PORT=6600 export OOO_FORCE_DESKTOP=gnome exec $HOME/bin/xmonad
