Xmonad/Config archive/nattfodd's xmonad.hs
From HaskellWiki
< Xmonad | Config archive
import XMonad
import XMonad.Layout
import XMonad.Operations
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Actions.DwmPromote
import XMonad.Hooks.UrgencyHook
import XMonad.Prompt
import XMonad.Prompt.Man
import XMonad.Prompt.Ssh
import XMonad.Prompt.Window
import XMonad.Prompt.Shell
import qualified Data.Map as M
import Graphics.X11
import qualified XMonad.StackSet as W
import Data.Bits ((.|.))
import Data.Ratio ((%))
import System.IO
-- XMonadContrib
-- import XMonad.Util.Dzen
import XMonad.Layout.NoBorders
import XMonad.Hooks.UrgencyHook
import XMonad.Util.EZConfig
import XMonad.Util.Run
myNormalBGColor = "#2e3436"
myFocusedBGColor = "#414141"
myNormalFGColor = "#babdb6"
myFocusedFGColor = "#73d216"
myUrgentFGColor = "#f57900"
myUrgentBGColor = myNormalBGColor
mySeperatorColor = "#2e3436"
main = do
h <- spawnPipe ("dzen2" ++ " " ++ flags)
xmonad $ withUrgencyHook NoUrgencyHook $ defaultConfig
{ workspaces = workspaces'
, layoutHook = layout'
, manageHook = manageDocks <+> manageHook defaultConfig
, terminal = "/home/heimdall/scripts/urxvt"
, normalBorderColor = "#dddddd"
, logHook = dynamicLogWithPP $ myPP h
, focusedBorderColor = "#aa0000" }
`additionalKeys` keys'
where
fg = "'grey70'"
bg = "'#2c2c32'"
fn = "'-*-profont-*-*-*-*-12-*-*-*-*-*-*'"
flags = "-e '' -w 600 -ta l -fg " ++ fg ++ " -bg " ++ bg ++ " -fn " ++ fn
-- workspaces' = ["α","β","γ","δ","ε","ζ"] ++ map show [7 .. 15 :: Int]
workspaces' = map show [1 .. 13 :: Int]
manageHook' = manageDocks <+>
composeAll
[ className =? "MPlayer" --> doFloat
, className =? "gecko" --> doF (W.shift "2")]
-- shamelessly stolen from Xilon's config
myPP handle = defaultPP {
ppCurrent = wrap ("^fg(" ++ myFocusedFGColor ++ ")^bg(" ++ myFocusedBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppUrgent = wrap ("^fg(" ++ myUrgentFGColor ++ ")^bg(" ++ myUrgentBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppVisible = wrap ("^fg(" ++ myNormalFGColor ++ ")^bg(" ++ myNormalBGColor ++ ")^p(4)") "^p(4)^fg()^bg()",
ppSep = "^fg(" ++ mySeperatorColor ++ ")^r(3x3)^fg()",
ppTitle = wrap (" ^fg(" ++ myFocusedFGColor ++ ")") "^fg()" ,
ppOutput = hPutStrLn handle
}
layout' = avoidStruts (smartBorders (tiled ||| Mirror tiled ||| Full))
where
tiled = Tall nmaster delta ratio
nmaster = 1 -- The default number of windows in the master pane
ratio = 2%3 -- Default proportion of screen occupied by master pane
delta = 5%100 -- Percent of screen to increment by when resizing panes
keys' = [((m .|. mod1Mask, k), windows $ f i)
| (i, k) <- zip workspaces' [0x26,0xe9,0x22,0x27,0x28,0x2d,0xe8,0x5f,0xe7,0xe0,xK_a,xK_z,xK_e,xK_r]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++
[((mod1Mask , 0x3b), sendMessage (IncMasterN (-1)))]-- %! Deincrement the number of windows in the master area
++
[((mod1Mask , xK_b), sendMessage ToggleStruts)] -- Toggle dzen gap
++
[((mod1Mask , xK_Return), dwmpromote)] -- cycle master window and first slave
++
[((mod1Mask , xK_m), manPrompt defaultXPConfig)
,((mod1Mask , xK_s), sshPrompt defaultXPConfig)
,((mod1Mask .|. shiftMask , xK_p), shellPrompt defaultXPConfig)
,((mod1Mask , xK_u), safePrompt "firefox" defaultXPConfig)
,((mod1Mask , xK_g), windowPromptGoto defaultXPConfig)]
-- Launch xmonad with the following:
--
-- #!/bin/sh
--
-- FG='grey70'
-- BG='#2c2c32'
-- FONT='-*-profont-*-*-*-*-12-*-*-*-*-*-*'
--
-- while (true); do ~/scripts/weather.pl; done &
-- xmonad-acpi | dzen2 -e '' -x 600 -w 768 -ta r -fg $FG -bg $BG -fn $FONT &
-- xmonad &
--
-- wait $!
-- pkill -HUP dzen2
-- pkill -HUP -f xmonad-acpi
-- wait