Personal tools

Xmonad/Config archive/skorpan's xmonad.hs

From HaskellWiki

< Xmonad | Config archive(Difference between revisions)
Jump to: navigation, search
(Updating.)
Current revision (17:28, 25 January 2009) (edit) (undo)
(Updating.)
 
Line 1: Line 1:
<haskell>import System.Exit
<haskell>import System.Exit
-
import System.IO (hPutStrLn)
 
import XMonad
import XMonad
-
import XMonad.Actions.FindEmptyWorkspace
 
-
import XMonad.Actions.FlexibleManipulate as Flex
 
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageDocks
-
import XMonad.Hooks.UrgencyHook
 
import XMonad.Layout.NoBorders
import XMonad.Layout.NoBorders
-
import XMonad.Util.Dzen
+
import XMonad.Prompt (defaultXPConfig)
-
import XMonad.Util.Run (spawnPipe, unsafeSpawn)
+
import XMonad.Prompt.Shell (shellPrompt)
 +
import XMonad.Util.EZConfig
 +
import XMonad.Util.Run
import qualified XMonad.StackSet as W
import qualified XMonad.StackSet as W
Line 15: Line 13:
-
fontName = "'-*-fixed-medium-r-*-*-12-*-*-*-*-*-iso8859-*'"
+
myKeys c = mkKeymap c $
-
dmenu = "exe=`cat /home/deniz/.programs | sort | dmenu -b -nb '#060000' -nf '#333333' -sb '#777777' -sf '#ffffff' -fn " ++ fontName ++ "` && eval \"exec $exe\""
+
[ ("M-<Return>", spawn $ XMonad.terminal c)
-
myTerminal = "urxvtc"
+
, ("M-<Space>", sendMessage NextLayout)
-
myBorderWidth = 2
+
, ("M-<Tab>", windows W.focusDown)
-
myModMask = mod4Mask
+
, ("M-S-<Return>", windows W.swapMaster)
-
myNumlockMask = mod2Mask
+
, ("M-S-c", kill)
-
myWorkspaces = [ show x | x <- [1..9] ]
+
, ("M-S-q", io (exitWith ExitSuccess))
-
myNormalBorderColor = "#060000"
+
, ("M-b", sendMessage ToggleStruts)
-
myFocusedBorderColor = "#ff0000"
+
, ("M-h", sendMessage Shrink)
 +
, ("M-l", sendMessage Expand)
 +
, ("M-n", refresh)
 +
, ("M-q", broadcastMessage ReleaseResources >> restart "xmonad" True)
 +
, ("M-t", withFocused $ windows . W.sink)
 +
, ("M-x", shellPrompt defaultXPConfig)]
 +
++
 +
[(m ++ k, windows $ f w)
 +
| (w, k) <- zip (XMonad.workspaces c) (map show [1..9])
 +
, (m, f) <- [("M-",W.greedyView), ("M-S-",W.shift)]]
-
myKeys conf@(XConfig {XMonad.modMask = modMask}) =
+
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
-
M.fromList $
+
[ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
-
[ ((modMask, xK_Return ), spawn $ XMonad.terminal conf)
+
, ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
-
, ((modMask, xK_p ), spawn dmenu )
+
, ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
-
, ((modMask .|. shiftMask, xK_p ), spawn "gmrun")
+
]
-
, ((modMask .|. shiftMask, xK_c ), kill)
+
-
, ((modMask, xK_space ), sendMessage NextLayout)
+
-
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
+
-
, ((modMask, xK_n ), refresh)
+
-
, ((modMask, xK_Left ), windows W.focusUp)
+
-
, ((modMask, xK_Right ), windows W.focusDown)
+
-
, ((modMask, xK_Tab ), windows W.focusDown)
+
-
, ((modMask, xK_m ), viewEmptyWorkspace)
+
-
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown)
+
-
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp)
+
-
, ((modMask .|. shiftMask, xK_Return ), windows W.swapMaster)
+
-
, ((modMask, xK_F9 ), spawn "mpc prev")
+
-
, ((modMask, xK_F10 ), spawn "mpc next")
+
-
, ((modMask, xK_h ), sendMessage Shrink)
+
-
, ((modMask, xK_l ), sendMessage Expand)
+
-
, ((modMask, xK_t ), withFocused $ windows . W.sink)
+
-
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
+
-
, ((modMask , xK_period ), sendMessage (IncMasterN (-1)))
+
-
, ((modMask, xK_BackSpace ), focusUrgent)
+
-
, ((modMask , xK_b ), sendMessage ToggleStruts)
+
-
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
+
-
, ((modMask , xK_q ), broadcastMessage ReleaseResources >> restart "xmonad" True)
+
-
]
+
-
++
+
-
[((m .|. modMask, k), windows $ f i)
+
-
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
+
-
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
+
-
++
+
-
[((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
+
-
| (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
+
-
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
+
-
myMouseBindings (XConfig {XMonad.modMask = modMask}) =
+
myLayoutHook = smartBorders $ avoidStruts $ tiled ||| Mirror tiled ||| Full
-
M.fromList $
+
where
-
[ ((modMask, button1), (\w -> focus w >> Flex.mouseWindow Flex.position w))
+
tiled = Tall nmaster delta ratio
-
, ((modMask, button3), (\w -> focus w >> Flex.mouseWindow Flex.resize w)) ]
+
nmaster = 1
-
 
+
ratio = 1/2
-
 
+
delta = 4/100
-
myLayout = avoidStruts . smartBorders $ tall ||| Mirror tall ||| Full
+
-
where
+
-
tall = Tall nmaster delta ratio
+
-
nmaster = 1
+
-
ratio = 1/2
+
-
delta = 1/100
+
myManageHook = composeAll
myManageHook = composeAll
[ floatC "MPlayer"
[ floatC "MPlayer"
-
, floatC "gimp"
+
, floatC "Gimp"
-
, moveToC "Gran Paradiso" "2"
+
, moveToC "Conkeror" "2"
-
, moveToC "Sonata" "9"
+
]
]
-
<+>
 
-
manageDocks
 
where moveToC c w = className =? c --> doF (W.shift w)
where moveToC c w = className =? c --> doF (W.shift w)
moveToT t w = title =? t --> doF (W.shift w)
moveToT t w = title =? t --> doF (W.shift w)
Line 91: Line 58:
-
myLogHook h = dynamicLogWithPP $ defaultPP {
+
myLogHook xmobar = dynamicLogWithPP $ defaultPP {
-
ppCurrent = dzenColor "black" "white" . pad
+
ppOutput = hPutStrLn xmobar
-
, ppVisible = dzenColor "white" "#333333" . pad
+
, ppTitle = xmobarColor "white" "" . shorten 110
-
, ppHidden = dzenColor "white" "#333333" . pad
+
, ppCurrent = xmobarColor "white" "black" . pad
-
, ppHiddenNoWindows = dzenColor "#777777" "#333333" . pad
+
, ppHidden = pad
-
, ppUrgent = dzenColor "red" "yellow"
+
, ppHiddenNoWindows = \w -> xmobarColor "#444" "" (" " ++ w ++ " ")
-
, ppWsSep = "|"
+
, ppSep = xmobarColor "#555" "" " / "
-
, ppSep = " - "
+
, ppWsSep = ""
-
, ppLayout = id
+
, ppLayout = \x -> case x of
-
, ppTitle = ("^fg(white) " ++) . dzenEscape
+
"Tall" -> "T"
-
, ppOutput = hPutStrLn h
+
"Mirror Tall" -> "M"
-
}
+
"Full" -> "F"
 +
_ -> "?"
 +
}
-
firstDzenCommand = "dzen2 -fn " ++ fontName ++ " -bg '#060000' -fg '#777777' -h 16 -w 1280 -sa c -e '' -ta l"
+
main = do xmobar <- spawnPipe "xmobar"
-
secondDzenCommand = "conky -u 1 | dzen2 -fn " ++ fontName ++ " -bg '#060000' -fg '#777777' -h 16 -w 1280 -sa c -e '' -ta r -y 784"
+
xmonad $ defaultConfig {
-
 
+
terminal = "urxvtc",
-
 
+
focusFollowsMouse = True,
-
main = do din <- spawnPipe firstDzenCommand
+
borderWidth = 2,
-
spawnPipe secondDzenCommand
+
modMask = mod4Mask,
-
xmonad $ withUrgencyHook NoUrgencyHook
+
numlockMask = 0,
-
$ defaultConfig {
+
workspaces = [ show x | x <- [1..9] ],
-
terminal = myTerminal,
+
normalBorderColor = "#444",
-
focusFollowsMouse = True,
+
focusedBorderColor = "#f00",
-
borderWidth = myBorderWidth,
+
keys = myKeys,
-
modMask = myModMask,
+
mouseBindings = myMouseBindings,
-
numlockMask = myNumlockMask,
+
layoutHook = myLayoutHook,
-
workspaces = myWorkspaces,
+
manageHook = myManageHook,
-
normalBorderColor = myNormalBorderColor,
+
logHook = myLogHook xmobar
-
focusedBorderColor = myFocusedBorderColor,
+
}
-
keys = myKeys,
+
-
mouseBindings = myMouseBindings,
+
-
layoutHook = myLayout,
+
-
manageHook = myManageHook,
+
-
logHook = myLogHook din
+
-
}
+
</haskell>
</haskell>

Current revision

import System.Exit
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders
import XMonad.Prompt (defaultXPConfig)
import XMonad.Prompt.Shell (shellPrompt)
import XMonad.Util.EZConfig
import XMonad.Util.Run
 
import qualified XMonad.StackSet as W
import qualified Data.Map        as M
 
 
myKeys c = mkKeymap c $
           [ ("M-<Return>",   spawn $ XMonad.terminal c)
           , ("M-<Space>",    sendMessage NextLayout)
           , ("M-<Tab>",      windows W.focusDown)
           , ("M-S-<Return>", windows W.swapMaster)
           , ("M-S-c",        kill)
           , ("M-S-q",        io (exitWith ExitSuccess))
           , ("M-b",          sendMessage ToggleStruts)
           , ("M-h",          sendMessage Shrink)
           , ("M-l",          sendMessage Expand)
           , ("M-n",          refresh)
           , ("M-q",          broadcastMessage ReleaseResources >> restart "xmonad" True)
           , ("M-t",          withFocused $ windows . W.sink)
           , ("M-x",          shellPrompt defaultXPConfig)]
           ++
           [(m ++ k, windows $ f w)
                | (w, k) <- zip (XMonad.workspaces c) (map show [1..9])
           , (m, f) <- [("M-",W.greedyView), ("M-S-",W.shift)]]
 
 
myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
    [ ((modMask, button1), (\w -> focus w >> mouseMoveWindow w))
    , ((modMask, button2), (\w -> focus w >> windows W.swapMaster))
    , ((modMask, button3), (\w -> focus w >> mouseResizeWindow w))
    ]
 
 
myLayoutHook = smartBorders $ avoidStruts $ tiled ||| Mirror tiled ||| Full
  where
     tiled   = Tall nmaster delta ratio
     nmaster = 1
     ratio   = 1/2
     delta   = 4/100
 
 
myManageHook = composeAll
               [ floatC "MPlayer"
               , floatC "Gimp"
               , moveToC "Conkeror" "2"
               ]
    where moveToC c w = className =? c --> doF (W.shift w)
          moveToT t w = title     =? t --> doF (W.shift w)
          floatC  c   = className =? c --> doFloat
 
 
myLogHook xmobar = dynamicLogWithPP $ defaultPP {
                     ppOutput = hPutStrLn xmobar
                   , ppTitle = xmobarColor "white" "" . shorten 110
                   , ppCurrent = xmobarColor "white" "black" . pad
                   , ppHidden = pad
                   , ppHiddenNoWindows = \w -> xmobarColor "#444" "" (" " ++ w ++ " ")
                   , ppSep = xmobarColor "#555" "" " / "
                   , ppWsSep = ""
                   , ppLayout = \x -> case x of
                                        "Tall" -> "T"
                                        "Mirror Tall" -> "M"
                                        "Full" -> "F"
                                        _ -> "?"
                   }
 
 
main = do xmobar <- spawnPipe "xmobar"
          xmonad $ defaultConfig {
                       terminal           = "urxvtc",
                       focusFollowsMouse  = True,
                       borderWidth        = 2,
                       modMask            = mod4Mask,
                       numlockMask        = 0,
                       workspaces         = [ show x | x <- [1..9] ],
                       normalBorderColor  = "#444",
                       focusedBorderColor = "#f00",
                       keys               = myKeys,
                       mouseBindings      = myMouseBindings,
                       layoutHook         = myLayoutHook,
                       manageHook         = myManageHook,
                       logHook            = myLogHook xmobar
                     }