稳定,快速的xmonad

来源:互联网 发布:淘宝公益宝贝哪儿看 编辑:程序博客网 时间:2024/05/04 05:32

一台旧电脑跑stumpwm有点吃力,就换成了很久以前使用过的xmonad,网上一搜,发现xmonad的开发还比较活跃!简单修改了以前的配置就可以运行了,系统跑起来既快又稳定,很适合编程序。updated on github

.安装(先装好GHC)

$cabal update && cabal install xmonad && cabal install xmonad-contrib

$ghc-pkg list|grep -i xmonad
xmonad-0.11
xmonad-contrib-0.11


.编译(将xmonad.hs拷入~/.xmonad)

$xmonad --recompile


.将`exec xmonad`写入~/.xinitrc


.附xmonad.hs

import qualified Data.Map as Mimport System.IO--import Graphics.X11.Xlibimport Data.Char (isSpace)import XMonadimport qualified XMonad.StackSet as W import XMonad.Actions.GridSelect--import XMonad.Actions.WindowMenuimport XMonad.Hooks.ManageDocks--import XMonad.Hooks.EwmhDesktopsimport XMonad.Hooks.DynamicLogimport XMonad.Hooks.ManageHelpers--import XMonad.Hooks.UrgencyHook-- Java swing fiximport XMonad.Hooks.ICCCMFocus (takeTopFocus)import XMonad.Hooks.SetWMName (setWMName)import XMonad.Layout.IMimport XMonad.Layout.NoBordersimport XMonad.Layout.WindowNavigationimport XMonad.Layout.ResizableTileimport XMonad.Layout.PerWorkspace  (onWorkspace)import XMonad.Layout.LayoutHints   (layoutHintsWithPlacement)import XMonad.Layout.SimplestFloat (simplestFloat)import XMonad.Layout.Columnimport XMonad.Layout.ShowWNameimport XMonad.Promptimport XMonad.Prompt.RunOrRaise (runOrRaisePrompt)import XMonad.Util.Runimport XMonad.Util.EZConfig(additionalKeys)import XMonad.Util.WindowProperties (getProp32s)import XMonad.Util.Scratchpad --招之既来,挥之既去的xPad。这里只配置了作为计算嚣的Prolog Pad,使用XMonad.Util.NamedScratchpad可配置各种各样的Pad,很方便。--myStatusBar = "dzen2 -x '0' -y '0' -h '24' -w '1280' -ta 'l' -fg '#FFFFFF' -bg '#161616' -fn '-*-simsun-medium-r-normal-*-12-*-*-*-*-*-iso10646-1'"--myBtmStatusBar = "conky -c /home/serrghi/.conky_bottom_dzen | dzen2 -x '0' -w '1280' -h '24' -ta 'c' -bg '#161616' -fg '#FFFFFF' -fn '-*-bitstream vera sans-medium-r-normal-*-11-*-*-*-*-*-*-*' -y '776'"--xmobar   = "~/.cabal/bin/xmobar"--xmobarrc = "~/.xmonad/xmobarrc"main = do    --xmobar <- spawnPipe $ xmobar ++ " " ++ xmobarrc    --dzenTopBar <- spawnPipe myStatusBar    --dzenBtmBar <- spawnPipe myBtmStatusBar    xmonad {- $ withUrgencyHook FocusHook -} $ {- ewmh -} defaultConfig {        --handleEventHook = handleEventHook defaultConfig <+> fullscreenEventHook       borderWidth= 1      , focusedBorderColor = "#ff6666"      , normalBorderColor = "#2222aa"      , manageHook = manageHook defaultConfig <+> myManageHook      , workspaces = ["1-work","2-game","3-test"] -- ++ map show [3..9]      , terminal = "xterm"      , modMask  = mod4Mask      , focusFollowsMouse  = False      , startupHook = myStartupHook        --, logHook = myLogHook dzenTopBar        --, logHook = takeTopFocus >> myLogHook xmobar      , logHook = myLogHook      , layoutHook = showWName myLayout   } `additionalKeys` myKeysmyStartupHook :: X ()myStartupHook = do return ()    --spawnOnce "fcitx"    --spawnOnce "lxpanel"myLogHook :: X ()myLogHook = return ()--myLogHook :: Handle -> X ()-- myLogHook h = dynamicLogWithPP $ defaultPP--       {   ppCurrent= dzenColor "black" "green" . pad-- , ppVisible= dzenColor "black" "lightgreen" . pad-- , ppHidden= dzenColor "#cccccc" "" . pad-- , ppHiddenNoWindows = dzenColor "#444444"  "" . pad-- , ppUrgent= dzenColor "" "red"-- , ppWsSep    = " "-- , ppSep      = " | "-- , ppTitle    = (" " ++) . dzenColor "green" "" . dzenEscape-- , ppOutput   = hPutStrLn h --       }-- myLogHook xmproc = dynamicLogWithPP xmobarPP--   { ppOutput = hPutStrLn xmproc--   , ppTitle  = xmobarColor "#ca8f2d" "" . shorten 72--   , ppLayout = const ""--   , ppHidden = \ws -> if ws == "NSP" then "" else ws--   , ppCurrent = xmobarColor "yellow" ""--   }myLayout = windowNavigation $ avoidStruts $ noBorders --smartBorders           $ onWorkspace "1-work" simplestFloat           $ onWorkspace "2-game" simplestFloat           $ onWorkspace "3-test"  (Column 0.60)           $ simplestFloat  --stdLayouts     -- where    --      stdLayouts = Mirror tall ||| tall ||| full          --      tall = Tall nmaster delta ratio    --      full    = hinted (noBorders Full)    -- -- like hintedTile but for any layout    --      hinted l        = layoutHintsWithPlacement (0,0) l    --      nmaster         = 1    --      delta           = 3/100    --      ratio           = toRational (2 / (1 + sqrt 5 :: Double)) -- golden ratiomyManageHook :: ManageHookmyManageHook = (composeAll . concat $    [[className =? c --> doIgnore | c <- myIgnores]    ,[className =? c --> doFloat | c <- myCFloats]    ,[isFullscreen --> doFullFloat]    ]) <+> manageTypes <+> manageDocks <+> scratchpadManageHook (W.RationalRect 0.50 0.375 0.50 0.60)  where    myIgnores = ["trayer", "desktop", "desktop_window"]    myCFloats = ["GQview", "MPlayer", "Vncviewer","Xmessage"]    role = stringProperty "WM_WINDOW_ROLE"    name = stringProperty "WM_NAME"manageTypes :: ManageHookmanageTypes = checkType --> doCenterFloatcheckType :: Query BoolcheckType = ask >>= \w -> liftX $ do    m <- getAtom "_NET_WM_WINDOW_TYPE_MENU"    d <- getAtom "_NET_WM_WINDOW_TYPE_DIALOG"    u <- getAtom "_NET_WM_WINDOW_TYPE_UTILITY"    mbr <- getProp32s "_NET_WM_WINDOW_TYPE" w    case mbr of        Just [r] -> return $ elem (fromIntegral r) [m,d,u]        _        -> return False-- Theme {{{-- Color names are easier to remember:colorOrange          = "#ff7701"colorDarkGray        = "#171717"colorPink            = "#e3008d"colorGreen           = "#00aa4a"colorBlue            = "#008dd5"colorYellow          = "#fee100"colorWhite           = "#cfbfad" colorNormalBorder    = "#1c2636"colorFocusedBorder   = "#ebac54"barFont  = "terminus"barXFont = "inconsolata:size=14"xftFont = "xft: inconsolata-14"--}}}-- Prompt Config {{{myXPConfig :: XPConfigmyXPConfig = defaultXPConfig {          font                  = "xft:WenQuanYi Zen Hei:pixelsize=16"        , bgColor               = colorDarkGray        , fgColor               = colorGreen        , bgHLight              = colorGreen        , fgHLight              = colorDarkGray        , promptBorderWidth     = 0        , height                = 14        , historyFilter         = deleteConsecutive}-- Run"" or Raise MenulargeXPConfig :: XPConfiglargeXPConfig = myXPConfig                { font = xftFont                , height = 20                }-- }}}emacs = "emacs -geometry 176x33+0+376"xterm="xterm -geometry 159x25+0+438"eweiqi="wine \"c:/Program Files/eweiqi/LiveBaduk.exe\""winxp="VBoxManage startvm winxp"myKeys = let modm = mod4Mask in    [ ((modm, xK_w), spawn "opera")    , ((modm, xK_e), spawn emacs)    , ((modm, xK_g), goToSelected defaultGSConfig)    , ((modm, xK_p), spawnSelected defaultGSConfig [              xterm, "opera", emacs, eweiqi, winxp])    , ((modm .|. shiftMask, xK_p),runOrRaisePrompt largeXPConfig)    , ((modm, xK_F11), spawn "sudo /sbin/shutdown -r now")    , ((modm, xK_F12), spawn "sudo /sbin/shutdown -p now")    --, ((modm .|. shiftMask, xK_Print), spawn "sleep 0.2; scrot -s")    , ((modm, xK_Print), spawn "scrot '/tmp/%Y-%m-%d_%H:%M:%S_$wx$h_scrot.png' -e 'mv $f ~'")    , ((modm, xK_k), kill)    , ((modm, xK_space), scratchpadSpawnActionCustom "xterm -name scratchpad -e pl")    --, ((modm, xK_c), inputPrompt myXPConfig "Word" >>= flip whenJust (\word-> spawn $ "wn " ++ word ++ " -over" ++ "|dmenu -l 30 -nb '#000000' -nf '#FFFFFF' -fn '-*-simsun-medium-r-normal-*-16-*-*-*-*-*-iso10646-1'")) -- use dmenu to display E-E dictionary   , ((modm, xK_c), inputPrompt myXPConfig "Word" >>= flip whenJust (\word-> spawn $ "~/bin/sdcv.sh " ++ word))  --use zenity to show E-C dictionary    -- Window Navigation    , ((modm, xK_Right), sendMessage $ Go R)    , ((modm, xK_Left ), sendMessage $ Go L)    , ((modm, xK_Up   ), sendMessage $ Go U)    , ((modm, xK_Down ), sendMessage $ Go D)    -- swap...    , ((modm .|. controlMask, xK_Right), sendMessage $ Swap R)    , ((modm .|. controlMask, xK_Left ), sendMessage $ Swap L)    , ((modm .|. controlMask, xK_Up   ), sendMessage $ Swap U)    , ((modm .|. controlMask, xK_Down ), sendMessage $ Swap D)    --, ((modm .|. controlMask, xK_Up), windows W.swapUp)    --, ((modm .|. controlMask, xK_Down), windows W.swapDown)          -- sound control    -- , ((modm .|. shiftMask, xK_Up), spawn "aumix -v+6") -- volume++     -- , ((modm .|. shiftMask, xK_Down ), spawn "aumix -v-6") -- volume--     -- , ((modm .|. shiftMask, xK_Left ), spawn "amixer set Master toggle") -- mute    , ((modm .|. shiftMask, xK_r), spawn "xmonad --recompile && xmonad --restart")    ]

.附sdcv.sh

#!/bin/shres=`sdcv -n $1`if [ $? -eq 0 ]thenzenity --info --text="$res"elsezenity --error --text="No input provided"fi


原创粉丝点击