Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

add xmonad config

  • Loading branch information...
commit a983271443aa3480fcc0a614df42eb40e43bb010 1 parent 6b0c4ab
zach zhao authored
Showing with 467 additions and 20 deletions.
  1. +9 −20 vimrc
  2. +73 −0 xmonad/xmobar.hs
  3. +385 −0 xmonad/xmonad.hs
29 vimrc
View
@@ -16,6 +16,7 @@ Bundle 'gmarik/vundle'
Bundle 'jnwhiteh/vim-golang'
Bundle 'Blackrush/vim-gocode'
"Bundle 'groenewege/vim-less'
+Bundle 'mattn/emmet-vim'
Bundle 'terryma/vim-multiple-cursors'
"Bundle 'rodjek/vim-puppet'
"Bundle 'slim-template/vim-slim'
@@ -62,7 +63,7 @@ Bundle 'tpope/vim-bundler'
Bundle 'tpope/vim-abolish'
Bundle 'tpope/vim-ragtag'
Bundle 'vim-ruby/vim-ruby'
-Bundle 'tpope/vim-rsi'
+"Bundle 'tpope/vim-rsi'
Bundle 'tpope/vim-git'
Bundle 'tpope/vim-unimpaired'
Bundle 'tpope/vim-endwise'
@@ -311,8 +312,6 @@ cno $q <C-\>eDeleteTillSlash()<cr>
cnoremap <C-A> <Home>
cnoremap <C-E> <End>
cnoremap <C-K> <C-U>
-map <C-E> <nop>
-imap <C-E> <nop>
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
@@ -359,9 +358,7 @@ map <silent> <leader> :noh<cr>
"Quick Escaping
inoremap jk <ESC>
-inoremap jj <ESC>
cnoremap jk <ESC>
-cnoremap jj <ESC>
"Operator mapping
omap t it
@@ -451,9 +448,9 @@ au FileType xml exe ":silent 1,$!xmllint --format --recover - 2>/dev/null"
let NERDTreeShowBookmarks = 1
let NERDChristmasTree = 1
let NERDTreeWinPos = "left"
-map <leader>n :NERDTreeToggle <cr>
+nmap <leader>n :NERDTreeToggle <cr>
+nmap <leader>f :NERDTreeFind<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
-"nmap <leader>p :NERDTreeFind<CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => NERDComment
@@ -485,12 +482,12 @@ nnoremap <leader>m :CtrlPMRU<cr>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <leader>a :Ack!<space>
"set grepprg=ack\ -a
-"if executable('ag')
- "let g:ackprg = 'ag --nogroup --nocolor --column'
-"endif
if executable('ack-grep')
let g:ackprg="ack-grep -H --nocolor --nogroup --column"
endif
+if executable('ag')
+ let g:ackprg = 'ag --nogroup --nocolor --column'
+endif
nmap <leader>cn :cn<cr>
nmap <leader>cp :cp<cr>
nmap <leader>cw :cw 10<cr>
@@ -607,14 +604,6 @@ let g:undotree_SplitLocation = 'botright'
nnoremap <leader>u :UndotreeToggle<CR>
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" => Vimim
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-"let g:vimim_map = 'tab'
-"let g:vimim_cloud = 'baidu,qq'
-"let g:vimim_cloud = -1
-"let g:vimim_toggle = 'pinyin'
-
-"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => ultisnip
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
let g:UltiSnipsExpandTrigger="<c-j>"
@@ -623,9 +612,9 @@ let g:UltiSnipsJumpBackwordTrigger="<c-k>"
let g:UltiSnipsListSnippets="<c-l>"
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-" => Youcompleteme
+" => emmet.vim
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-"let g:ycm_key_list_select_completion= ['<c-n>']
+let g:user_emmet_expandabbr_key = '<c-e>'
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" => dbext
73 xmonad/xmobar.hs
View
@@ -0,0 +1,73 @@
+-- xmobar configuration file
+--
+-- Mess with this file to change the appearance of the contents of the
+-- status bar which are not directly controlled by xmonad. You can see your
+-- changes immediately by recompiling xmonad using "super-q".
+--
+-- There's a lot you can do here. Refer to "man xmobar".
+--
+-- Author: David Brewer
+-- Repository: https://github.com/davidbrewer/xmonad-ubuntu-conf
+
+
+Config {
+ -- Set font and default foreground/background colors. Note that
+ -- the height of xmobar is controlled by the font you use.
+ font = "xft:WenQuanYi\ Micro\ Hei-11",
+ bgColor = "black",
+ fgColor = "grey",
+
+ -- Position is top left, taking up 95% of screen.
+ -- You are likely to have to tweak the width here based on the width
+ -- of your screen to make it play nicely with stalonetray, which we
+ -- want to be taking up the remainer of the space on the right side
+ -- of your screen.
+ position = TopW L 100,
+
+ -- list of commands which gather information about your system for
+ -- presentation in the bar.
+ commands = [
+ -- Gather and format CPU usage information.
+ -- If it's above 50%, we consider it high usage and make it red.
+ Run Cpu [
+ "-H","50",
+ "--high","red"
+ ] 10,
+
+ -- Gather and format memory usage information
+ Run Memory [
+ "-t","Mem: <usedratio>%"
+ ] 10,
+
+ Run Network "eth0" ["-t","Net: <rx>, <tx>","-H","200","-L","10","-h","#FFB6B0","-l","#CEFFAC","-n","#FFFFCC"] 10,
+
+ -- Date formatting
+ Run Date "%a %b %_d %l:%M" "date" 10,
+
+
+
+ -- Battery information. This is likely to require some customization
+ -- based upon your specific hardware. Or, for a desktop you may want
+ -- to just remove this section entirely.
+
+ -- To get volume information, we run a custom bash script.
+ -- This is because the built-in volume support in xmobar is disabled
+ -- in Debian and derivatives like Ubuntu.
+ -- Run Com "~/.xmonad/get-volume" [] "myvolume" 10,
+
+ -- This line tells xmobar to read input from stdin. That's how we
+ -- get the information that xmonad is sending it for display.
+ Run StdinReader
+ ],
+
+ -- Separator character used to wrape variables in the xmobar template
+ sepChar = "%",
+
+ -- Alignment separater characer used in the xmobar template. Everything
+ -- before this will be aligned left, everything after aligned right.
+ alignSep = "}{",
+
+ -- Overall template for the layout of the xmobar contents. Note that
+ -- space is significant and can be used to add padding.
+ template = "%StdinReader% }{ %cpu% | %memory% | %eth0% | <fc=#e6744c>%date%</fc>"
+}
385 xmonad/xmonad.hs
View
@@ -0,0 +1,385 @@
+
+-- xmonad config used by Vic Fryzel
+-- Author: Vic Fryzel
+-- http://github.com/vicfryzel/xmonad-config
+
+import System.IO
+import System.Exit
+import XMonad
+import XMonad.Hooks.DynamicLog
+import XMonad.Hooks.ManageDocks
+import XMonad.Hooks.ManageHelpers
+import XMonad.Hooks.SetWMName
+import XMonad.Layout.Fullscreen
+import XMonad.Layout.NoBorders
+import XMonad.Layout.Spiral
+import XMonad.Layout.Tabbed
+import XMonad.Util.Run(spawnPipe)
+import XMonad.Util.EZConfig(additionalKeys)
+import XMonad.Actions.CycleWS
+import qualified XMonad.StackSet as W
+import qualified Data.Map as M
+
+-- compatible with gnome3
+-- import XMonad.Config.Gnome
+
+------------------------------------------------------------------------
+-- Terminal
+-- The preferred terminal program, which is used in a binding below and by
+-- certain contrib modules.
+--
+myTerminal = "/usr/bin/urxvt"
+
+
+------------------------------------------------------------------------
+-- Workspaces
+-- The default number of workspaces (virtual screens) and their names.
+--
+myWorkspaces = ["1:term","2:web","3:editor","4:chat","5:mail","6:irc", "7:media"] ++ map show [6..9]
+
+
+------------------------------------------------------------------------
+-- Window rules
+-- Execute arbitrary actions and WindowSet manipulations when managing
+-- a new window. You can use this to, for example, always float a
+-- particular program, or have a client always appear on a particular
+-- workspace.
+--
+-- To find the property name associated with a program, use
+-- > xprop | grep WM_CLASS
+-- and click on the client you're interested in.
+--
+-- To match on the WM_NAME, you can use 'title' in the same way that
+-- 'className' and 'resource' are used below.
+--
+myManageHook = composeAll
+ [ className =? "Google-chrome" --> doShift "2:web"
+ , resource =? "desktop_window" --> doIgnore
+ , className =? "Galculator" --> doFloat
+ , className =? "sublime-text-2" --> doShift "3:editor"
+ , className =? "Steam" --> doFloat
+ , className =? "Gimp" --> doFloat
+ , className =? "Skype" --> doFloat
+ , className =? "thunderbird" --> doShift "5:mail"
+ , className =? "virtualbox" --> doFloat
+ , resource =? "gpicview" --> doFloat
+ , className =? "MPlayer" --> doFloat
+ , className =? "Xchat" --> doShift "6:irc"
+ , isFullscreen --> (doF W.focusDown <+> doFullFloat)]
+
+
+------------------------------------------------------------------------
+-- Layouts
+-- You can specify and transform your layouts by modifying these values.
+-- If you change layout bindings be sure to use 'mod-shift-space' after
+-- restarting (with 'mod-q') to reset your layout state to the new
+-- defaults, as xmonad preserves your old layout settings by default.
+--
+-- The available layouts. Note that each layout is separated by |||,
+-- which denotes layout choice.
+--
+myLayout = avoidStruts (
+ Tall 1 (3/100) (1/2) |||
+ Mirror (Tall 1 (3/100) (1/2)) |||
+ tabbed shrinkText tabConfig |||
+ Full |||
+ spiral (6/7)) |||
+ noBorders (fullscreenFull Full)
+
+
+------------------------------------------------------------------------
+-- Colors and borders
+-- Currently based on the ir_black theme.
+--
+myNormalBorderColor = "#7c7c7c"
+myFocusedBorderColor = "#ffb6b0"
+
+
+-- Colors for dmenu
+myFont = "-*-monospace-*-*-*-*-*-80-*-*-*-*-*-*"
+myNormalBGColor = "#CEFFAC"
+myFocusedBGColor = "#4682b4"
+myNormalFGColor = "#ffffff"
+myFocusedFGColor = "green"
+mySeperatorColor = "#2e3436"
+
+-- Colors for text and backgrounds of each tab when in "Tabbed" layout.
+tabConfig = defaultTheme {
+ activeBorderColor = "#7C7C7C",
+ activeTextColor = "#CEFFAC",
+ activeColor = "#000000",
+ inactiveBorderColor = "#7C7C7C",
+ inactiveTextColor = "#EEEEEE",
+ inactiveColor = "#000000"
+}
+
+-- Color of current window title in xmobar.
+xmobarTitleColor = "#FFB6B0"
+
+-- Color of current workspace in xmobar.
+xmobarCurrentWorkspaceColor = "#CEFFAC"
+
+-- Width of the window border in pixels.
+myBorderWidth = 1
+
+
+------------------------------------------------------------------------
+-- Key bindings
+--
+-- modMask lets you specify which modkey you want to use. The default
+-- is mod1Mask ("left alt"). You may also consider using mod3Mask
+-- ("right alt"), which does not conflict with emacs keybindings. The
+-- "windows key" is usually mod4Mask.
+--
+myModMask = mod1Mask
+
+myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
+ ----------------------------------------------------------------------
+ -- Custom key bindings
+ --
+
+ -- Start a terminal. Terminal to start is specified by myTerminal variable.
+ [ ((modMask .|. shiftMask, xK_Return),
+ spawn $ XMonad.terminal conf)
+
+ -- Lock the screen using xscreensaver.
+ , ((modMask .|. controlMask, xK_l),
+ spawn "xscreensaver-command -lock")
+
+ -- Launch dmenu via yeganesh.
+ -- Use this to launch programs without a key binding.
+ , ((modMask, xK_p),
+ spawn "exe=`dmenu_path|yeganesh -- -b -nb \"#36648b\" -nf \"black\" -sf \"green\" -sb \"#4682b4\"` && eval \"exec $exe\"")
+
+ -- Take a screenshot in select mode.
+ -- After pressing this key binding, click a window, or draw a rectangle with
+ -- the mouse.
+ --take a screenshot of entire display
+ -- , ((modMask, xK_s),
+ -- spawn "scrot screen_%Y-%m-%d-%H-%M-%S.png -d 1")
+
+ --take a screenshot of focused window
+ -- , ((modMask .|. controlMask, xK_s),
+ -- spawn "scrot window_%Y-%m-%d-%H-%M-%S.png -d 1 -s")
+
+ -- , ((modMask .|. shiftMask, xK_p),
+ -- spawn "select-screenshot")
+
+ -- Take full screenshot in multi-head mode.
+ -- That is, take a screenshot of everything you see.
+ -- , ((modMask .|. controlMask .|. shiftMask, xK_p),
+ -- spawn "screenshot")
+
+ -- Mute volume.
+ , ((modMask .|. controlMask, xK_m),
+ spawn "amixer -q set Master toggle")
+
+ -- Decrease volume.
+ , ((modMask .|. controlMask, xK_j),
+ spawn "amixer -q set Master 10%-")
+
+ -- Increase volume.
+ , ((modMask .|. controlMask, xK_k),
+ spawn "amixer -q set Master 10%+")
+
+ -- Audio previous.
+ , ((0, 0x1008FF16),
+ spawn "")
+
+ -- Play/pause.
+ , ((0, 0x1008FF14),
+ spawn "")
+
+ -- Audio next.
+ , ((0, 0x1008FF17),
+ spawn "")
+
+ -- Eject CD tray.
+ , ((0, 0x1008FF2C),
+ spawn "eject -T")
+
+ --------------------------------------------------------------------
+ -- "Standard" xmonad key bindings
+ --
+
+ -- Close focused window.
+ , ((modMask .|. shiftMask, xK_c),
+ kill)
+
+ -- Cycle through the available layout algorithms.
+ , ((modMask, xK_space),
+ sendMessage NextLayout)
+
+ -- Reset the layouts on the current workspace to default.
+ , ((modMask .|. shiftMask, xK_space),
+ setLayout $ XMonad.layoutHook conf)
+
+ -- Resize viewed windows to the correct size.
+ , ((modMask, xK_n),
+ refresh)
+
+ -- Move focus to the next window.
+ , ((modMask, xK_Tab),
+ toggleWS)
+
+ -- Move focus to the next window.
+ , ((modMask, xK_j),
+ windows W.focusDown)
+
+ -- Move focus to the previous window.
+ , ((modMask, xK_k),
+ windows W.focusUp )
+
+ -- Move focus to the master window.
+ , ((modMask, xK_m),
+ windows W.focusMaster )
+
+ -- Swap the focused window and the master window.
+ , ((modMask, xK_Return),
+ windows W.swapMaster)
+
+ -- Swap the focused window with the next window.
+ , ((modMask .|. shiftMask, xK_j),
+ windows W.swapDown )
+
+ -- Swap the focused window with the previous window.
+ , ((modMask .|. shiftMask, xK_k),
+ windows W.swapUp )
+
+ -- Shrink the master area.
+ , ((modMask, xK_h),
+ sendMessage Shrink)
+
+ -- Expand the master area.
+ , ((modMask, xK_l),
+ sendMessage Expand)
+
+ -- Push window back into tiling.
+ , ((modMask, xK_t),
+ withFocused $ windows . W.sink)
+
+ -- Increment the number of windows in the master area.
+ , ((modMask, xK_comma),
+ sendMessage (IncMasterN 1))
+
+ -- Decrement the number of windows in the master area.
+ , ((modMask, xK_period),
+ sendMessage (IncMasterN (-1)))
+
+ -- Toggle the status bar gap.
+ -- TODO: update this binding with avoidStruts, ((modMask, xK_b),
+
+ -- Quit xmonad.
+ , ((modMask .|. shiftMask, xK_q),
+ io (exitWith ExitSuccess))
+
+ -- Restart xmonad.
+ , ((modMask, xK_q),
+ restart "xmonad" True)
+ ]
+ ++
+
+ -- mod-[1..9], Switch to workspace N
+ -- mod-shift-[1..9], Move client to workspace N
+ [((m .|. modMask, k), windows $ f i)
+ | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
+ , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
+ ++
+
+ -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
+ -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
+ [((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)]]
+
+
+------------------------------------------------------------------------
+-- Mouse bindings
+--
+-- Focus rules
+-- True if your focus should follow your mouse cursor.
+myFocusFollowsMouse :: Bool
+myFocusFollowsMouse = True
+
+myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $
+ [
+ -- mod-button1, Set the window to floating mode and move by dragging
+ ((modMask, button1),
+ (\w -> focus w >> mouseMoveWindow w))
+
+ -- mod-button2, Raise the window to the top of the stack
+ , ((modMask, button2),
+ (\w -> focus w >> windows W.swapMaster))
+
+ -- mod-button3, Set the window to floating mode and resize by dragging
+ , ((modMask, button3),
+ (\w -> focus w >> mouseResizeWindow w))
+
+ -- you may also bind events to the mouse scroll wheel (button4 and button5)
+ ]
+
+
+------------------------------------------------------------------------
+-- Status bars and logging
+-- Perform an arbitrary action on each internal state change or X event.
+-- See the 'DynamicLog' extension for examples.
+--
+-- To emulate dwm's status bar
+--
+-- > logHook = dynamicLogDzen
+--
+
+
+------------------------------------------------------------------------
+-- Startup hook
+-- Perform an arbitrary action each time xmonad starts or is restarted
+-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
+-- per-workspace layout choices.
+--
+-- By default, do nothing.
+myStartupHook = return ()
+
+
+------------------------------------------------------------------------
+-- Run xmonad with all the defaults we set up.
+--
+main = do
+ xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmonad/xmobar.hs"
+ xmonad $ defaults {
+ logHook = dynamicLogWithPP $ xmobarPP {
+ ppOutput = hPutStrLn xmproc
+ , ppTitle = xmobarColor xmobarTitleColor "" . shorten 100
+ , ppCurrent = xmobarColor xmobarCurrentWorkspaceColor ""
+ , ppSep = " "}
+ , manageHook = (isFullscreen --> doFullFloat) <+> manageDocks <+> myManageHook
+ , startupHook = setWMName "LG3D"
+ }
+
+
+------------------------------------------------------------------------
+-- Combine it all together
+-- A structure containing your configuration settings, overriding
+-- fields in the default config. Any you don't override, will
+-- use the defaults defined in xmonad/XMonad/Config.hs
+--
+-- No need to modify this.
+--
+defaults = defaultConfig {
+ -- simple stuff
+ terminal = myTerminal,
+ focusFollowsMouse = myFocusFollowsMouse,
+ borderWidth = myBorderWidth,
+ modMask = myModMask,
+ workspaces = myWorkspaces,
+ normalBorderColor = myNormalBorderColor,
+ focusedBorderColor = myFocusedBorderColor,
+
+ -- key bindings
+ keys = myKeys,
+ mouseBindings = myMouseBindings,
+
+ -- hooks, layouts
+ layoutHook = smartBorders $ myLayout,
+ manageHook = myManageHook,
+ startupHook = myStartupHook
+}
Please sign in to comment.
Something went wrong with that request. Please try again.