稳定,快速的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
- 稳定,快速的xmonad
- 快速排序的稳定算法
- 快速排序不是一个稳定的排序
- java实现稳定的快速排序
- 快速排序的稳定化实现
- 快速排序的稳定化版本
- xmonad设置
- G2一个稳定快速省电的ROM
- 如何保证系统稳定快速
- xmonad @ubuntu10.04
- oracle中用一张表的数据更新另一张表的数据(快速稳定)
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,
- 如何让WINDOWS操作系统更快速更稳定的十大定律!
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法
- 常用的排序:快速排序、合并排序(稳定)--合并排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 系统快速稳定,垃圾邮件拦截率超过
- Virtual Box NAT下端口转发规则:
- 优化Java堆大小的5个技巧
- ffmpeg解码流程 turorial5详解
- hdu 1561 The more, The Better 树形DP+背包
- 3520a SDL_tff库做bmp 也就是osd
- 稳定,快速的xmonad
- vi 的经典命令防遗忘
- HDU 1050 Moving Tables (贪心 区间最大叠加数)
- ant学习笔记(六)ant编译web项目,并打成war包,同时加入数据库操作
- poj 1701 Dissatisfying Lift (枚举)
- 观察者模式
- 深入研究数据访问:什么是SQL注入
- 其他优化技巧
- c++ 关联容器详解——从内部结构到应用