Please bear with us as we work to restore functionality to dotfiles.org.
jbromley
/.xmonad/xmonad.hs
Xmonad with dzer2 status bar
-- XMonad 0.7 Configuration
import XMonad
import XMonad.Actions.FloatKeys
import XMonad.Actions.Submap
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.UrgencyHook
--import XMonad.Layout.Magnifier
import XMonad.Layout.Decoration
--import XMonad.Layout.DecorationMadness
import XMonad.Layout.Maximize
import XMonad.Layout.Named
import XMonad.Layout.ShowWName
import XMonad.Layout.SimpleFloat
--import XMonad.Layout.Simplest
import XMonad.Prompt
import XMonad.Prompt.Input
import XMonad.Prompt.Man
import XMonad.Prompt.RunOrRaise
import XMonad.Prompt.Shell
import XMonad.Prompt.Workspace
import XMonad.Util.EZConfig
import XMonad.Util.Run
import System.IO (Handle, hPutStrLn)
import System.Exit
import qualified XMonad.StackSet as W
import qualified Data.Map as M
-- Customization variables
myTerminal = "urxvtc"
myBorderWidth = 1
myModMask = mod4Mask
myWorkspaces = ["1:main", "2:www", "3:doc", "4", "5", "6", "7:chat", "8:vbox", "9:bt"]
myNormalBorderColor = "DarkSlateGray"
myFocusedBorderColor = "orange"
-- Prompt
myXPConfig = defaultXPConfig { font = "-xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1"
, bgColor = "black"
, fgColor = "wheat"
, fgHLight = "orange"
, bgHLight = "DarkSlateGray"
, borderColor = "orange"
, position = Top
, height = 16 }
-- Workspace indicator
mySWNConfig = defaultSWNConfig { swn_font = "-xos4-terminus-medium-i-normal--32-320-72-72-c-160-iso8859-1"
, swn_bgcolor = "DarkSlateGray"
, swn_color = "Orange"
, swn_fade = 1 }
-- Tabbed decorations theme
myTabTheme = defaultTheme { activeColor = "DarkSlateGray"
, activeBorderColor = "orange"
, activeTextColor = "orange"
, inactiveColor = "DarkSlateGray"
, inactiveBorderColor = "DarkSlateGray"
, inactiveTextColor = "wheat"
, urgentColor = "DarkRed"
, urgentBorderColor = "DarkRed"
, urgentTextColor = "white"
, fontName = "-xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1"
, decoWidth = 200
, decoHeight = 16 }
myLayout = avoidStruts (tiled ||| Full ||| myFloat)
where
tiled = named "Tiled" (maximize (Tall nmaster delta ratio))
nmaster = 1
ratio = 114/175
delta = 1/175
myFloat = named "Floating" (maximize (simpleFloat' shrinkText myTabTheme))
-- myFloat = named "Floating" (maximize (simpleFloat))
-- Window rules
myManageHook = composeAll . concat $
[ [ className =? c --> doFloat | c <- myFloatsByClass ]
, [ resource =? t --> doFloat | t <- myFloatsByResource ]
, [ resource =? "Navigator" --> doF (W.shift "2:www") ]
, [ className =? "Opera" --> doF (W.shift "2:www") ]
, [ className =? "OpenOffice.org 2.4" --> doF (W.shift "3:doc") ]
, [ className =? "Acroread" --> doF (W.shift "3:doc") ]
, [ className =? "Xchm" --> doF (W.shift "3:doc") ]
, [ className =? "Gimp" --> doF (W.shift "5") ]
, [ className =? "Skype" --> doF (W.shift "7:chat") ]
, [ resource =? "IRC" --> doF (W.shift "7:chat") ]
, [ className =? "Pidgin" --> doF (W.shift "7:chat") ]
, [ className =? "VirtualBox" --> doF (W.shift "8:vbox") ]
, [ className =? "Transmission" --> doF (W.shift "9:bt") ] ]
where myFloatsByClass = [ "MPlayer"
, "Gimp"
, "XFontSel"
, "Xmessage"
, "Xnest"
, "feh"
, "Firefox"
, "Skype"
, "Pidgin"
, "VirtualBox"
, "Transmission" ]
myFloatsByResource = [ "ALSAMixer"
, "mocp"
, "QuickTerm"
, "ManTerm"
, "IRC" ]
myLogHook h = dynamicLogWithPP $ dzenPP { ppCurrent = dzenColor "orange" "DarkSlateGray" . pad
, ppVisible = dzenColor "gray50" "black" . pad
, ppHidden = dzenColor "wheat" "black" . pad
, ppHiddenNoWindows = dzenColor "gray50" "black" . pad
, ppSep = " ^r(4x4) "
, ppWsSep = ""
, ppUrgent = dzenColor "red" "yellow" . pad
, ppTitle = dzenColor "orange" "DarkSlateGray" . pad
, ppLayout = dzenColor "wheat" "DarkSlateGray" .pad
, ppOutput = hPutStrLn h }
-- My keys
myKeyBindings = [ ((myModMask, xK_p), runOrRaisePrompt myXPConfig)
, ((myModMask, xK_w), workspacePrompt myXPConfig (windows . W.greedyView))
, ((myModMask .|. shiftMask, xK_w), workspacePrompt myXPConfig (windows . W.shift))
, ((myModMask, xK_F1), manPrompt myXPConfig)
, ((myModMask, xK_x), shellPrompt myXPConfig)
-- Dock toggle
, ((myModMask, xK_b), sendMessage ToggleStruts)
-- kb layout selection through dmenu
, ((myModMask, xK_grave), spawn "kb")
-- Maximize selected window
, ((myModMask, xK_backslash), withFocused (sendMessage . maximizeRestore))
-- Move/resize floating windows
, ((myModMask, xK_a), withFocused (keysMoveWindow (-8, 0)))
, ((myModMask, xK_s), withFocused (keysMoveWindow (0, 8)))
, ((myModMask, xK_d), withFocused (keysMoveWindow (0, -8)))
, ((myModMask, xK_f), withFocused (keysMoveWindow (8, 0)))
, ((myModMask .|. controlMask, xK_a), withFocused (keysResizeWindow (-8, 0) (0, 0)))
, ((myModMask .|. controlMask, xK_s), withFocused (keysResizeWindow (0, 8) (0, 0)))
, ((myModMask .|. controlMask, xK_d), withFocused (keysResizeWindow (0, -8) (0, 0)))
, ((myModMask .|. controlMask, xK_f), withFocused (keysResizeWindow (8, 0) (0, 0)))
, ((myModMask .|. shiftMask, xK_a), submap . M.fromList $
[ ((0, xK_q), withFocused (keysMoveWindowTo (0, 17) (0, 0)))
, ((0, xK_w), withFocused (keysMoveWindowTo (700, 17) (1/2, 0)))
, ((0, xK_e), withFocused (keysMoveWindowTo (1400, 17) (1, 0)))
, ((0, xK_a), withFocused (keysMoveWindowTo (0, 533) (0, 1/2)))
, ((0, xK_s), withFocused (keysMoveWindowTo (700, 533) (1/2, 1/2)))
, ((0, xK_d), withFocused (keysMoveWindowTo (1400, 533) (1, 1/2)))
, ((0, xK_z), withFocused (keysMoveWindowTo (0, 1050) (0, 1)))
, ((0, xK_x), withFocused (keysMoveWindowTo (700, 1050) (1/2, 1)))
, ((0, xK_c), withFocused (keysMoveWindowTo (1400, 1050) (1, 1)))])
-- Music on Console control
, ((myModMask, xK_F9), spawn "mocp -p")
, ((myModMask, xK_F10), spawn "mocp -r")
, ((myModMask, xK_F11), spawn "mocp -f")
, ((myModMask, xK_F12), spawn "mocp -s")
, ((myModMask, xK_F8), spawn "mocp -G")
-- Screen shots
, ((0, xK_Print), spawn "/usr/bin/scrot") ]
-- Main entry point
dzenCommand = "dzen2 -x 0 -y 0 -w 800 -ta l -sa l -bg black -fn '-xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso8859-1'"
main = do
h <- spawnPipe dzenCommand
xmonad $ withUrgencyHook dzenUrgencyHook { args = ["-bg", "brickred", "-xs", "1"] } $ defaults h
`additionalKeys` myKeyBindings
defaults logPipe = defaultConfig {
-- simple stuff
terminal = myTerminal,
borderWidth = myBorderWidth,
modMask = myModMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
layoutHook = showWName' mySWNConfig myLayout,
manageHook = myManageHook <+> manageDocks,
logHook = myLogHook logPipe
}