Difference between revisions of "Xmonad/Config archive/webframp's xmonad.hs"
< Xmonad | Config archive
Jump to navigation
Jump to search
(list comprehension for search bindings updated) |
(missing type signatures in several places) |
||
Line 11: | Line 11: | ||
-- |
-- |
||
-- customization for the xmonad window manager |
-- customization for the xmonad window manager |
||
+ | -- Last Modified: 2008 Nov 04 Tue - 07:53:00 |
||
----------------------------------------------------------------------- |
----------------------------------------------------------------------- |
||
− | |||
-- Imports {{{ |
-- Imports {{{ |
||
− | import XMonad |
+ | import XMonad |
-- Hooks |
-- Hooks |
||
import XMonad.Hooks.DynamicLog hiding (xmobar, xmobarPP, xmobarColor, sjanssenPP, byorgeyPP) |
import XMonad.Hooks.DynamicLog hiding (xmobar, xmobarPP, xmobarColor, sjanssenPP, byorgeyPP) |
||
Line 22: | Line 22: | ||
-- Prompt |
-- Prompt |
||
import XMonad.Prompt |
import XMonad.Prompt |
||
− | import XMonad.Prompt.RunOrRaise |
+ | import XMonad.Prompt.RunOrRaise (runOrRaisePrompt) |
− | import XMonad.Prompt. |
+ | import XMonad.Prompt.Window (windowPromptGoto, windowPromptBring) |
− | import XMonad.Prompt.Workspace |
+ | import XMonad.Prompt.Workspace (workspacePrompt) |
− | import XMonad.Prompt.AppendFile |
+ | import XMonad.Prompt.AppendFile (appendFilePrompt) |
-- Actions |
-- Actions |
||
import XMonad.Actions.CycleWS --(nextWS, prevWS, shiftToNext, shiftToPrev, nextScreen, prevScreen, shiftNextScreen, shiftPrevScreen, toggleWS) |
import XMonad.Actions.CycleWS --(nextWS, prevWS, shiftToNext, shiftToPrev, nextScreen, prevScreen, shiftNextScreen, shiftPrevScreen, toggleWS) |
||
− | import XMonad.Actions.WindowGo (title |
+ | import XMonad.Actions.WindowGo (title, raiseMaybe, runOrRaise, (=?)) |
import XMonad.Actions.UpdatePointer |
import XMonad.Actions.UpdatePointer |
||
import qualified XMonad.Actions.Search as S |
import qualified XMonad.Actions.Search as S |
||
-- Util |
-- Util |
||
import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe) |
import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe) |
||
− | import XMonad.Util.Scratchpad (scratchpadSpawnAction, scratchpadManageHook) |
+ | import XMonad.Util.Scratchpad (scratchpadSpawnAction, scratchpadManageHook) --, scratchpadFilterOutWorkspace) |
import XMonad.Util.XSelection (safePromptSelection) |
import XMonad.Util.XSelection (safePromptSelection) |
||
import XMonad.Util.EZConfig hiding (additionalMouseBindings, removeMouseBindings) |
import XMonad.Util.EZConfig hiding (additionalMouseBindings, removeMouseBindings) |
||
Line 40: | Line 40: | ||
import XMonad.Layout.ResizableTile (ResizableTall(..)) |
import XMonad.Layout.ResizableTile (ResizableTall(..)) |
||
import System.IO (hPutStrLn) |
import System.IO (hPutStrLn) |
||
+ | import Data.Char (isSpace) |
||
import qualified XMonad.StackSet as W |
import qualified XMonad.StackSet as W |
||
− | import qualified Data.Map as M |
||
--}}} |
--}}} |
||
-- Main {{{ |
-- Main {{{ |
||
+ | main :: IO () |
||
main = do |
main = do |
||
dzpipe <- spawnPipe statusBarCmd |
dzpipe <- spawnPipe statusBarCmd |
||
Line 61: | Line 62: | ||
, startupHook = return () >> checkKeymap defaultConfig lacKeys |
, startupHook = return () >> checkKeymap defaultConfig lacKeys |
||
} |
} |
||
− | `additionalKeysP` lacKeys |
+ | `additionalKeysP` lacKeys |
− | `additionalKeys` |
+ | `additionalKeys` |
− | -- Mediakeys on the Latitude D830 |
+ | -- Mediakeys on the Latitude D830 |
[ ((0 ,0x1008ff11 ), unsafeSpawn "amixer -q set Master 2dB-" ) -- XF86AudioLowerVolume |
[ ((0 ,0x1008ff11 ), unsafeSpawn "amixer -q set Master 2dB-" ) -- XF86AudioLowerVolume |
||
, ((0 ,0x1008ff12 ), unsafeSpawn "amixer -q set Master toggle") -- XF86Audio Mute |
, ((0 ,0x1008ff12 ), unsafeSpawn "amixer -q set Master toggle") -- XF86Audio Mute |
||
, ((0 ,0x1008ff13 ), unsafeSpawn "amixer -q set Master 2dB+" ) -- XF86AudioRaiseVolume |
, ((0 ,0x1008ff13 ), unsafeSpawn "amixer -q set Master 2dB+" ) -- XF86AudioRaiseVolume |
||
− | , ((0 |
+ | , ((0 ,xK_Print ), unsafeSpawn "scrot '%Y-%m-%d-%H%M_$wx$h.png' -e 'mv $f ~/screenshots/'") -- Print Screen |
] |
] |
||
-- }}} |
-- }}} |
||
-- Config {{{ |
-- Config {{{ |
||
− | -- single options here |
+ | -- single options here |
-- }}} |
-- }}} |
||
-- Theme {{{ |
-- Theme {{{ |
||
+ | colorNormalBorder, colorFocusedBorder, colorNormalBG, colorNormalFG, colorFocusBG, colorFocusFG, colorFocusBO, colorUrgentBG, colorUrgentFG :: [Char] |
||
colorNormalBorder = "#1c2636" |
colorNormalBorder = "#1c2636" |
||
colorFocusedBorder = "#99ff99" |
colorFocusedBorder = "#99ff99" |
||
Line 85: | Line 87: | ||
colorUrgentBG = "#ff00cc" |
colorUrgentBG = "#ff00cc" |
||
colorUrgentFG = "#00ff99" |
colorUrgentFG = "#00ff99" |
||
+ | barFont, barXFont, statusBarCmd, notesFile, mTerm :: [Char] |
||
− | --barFont = "snap" |
||
− | --barXFont = "-artwiz-snap-*-*-*-*-*-*-*-*-*-*-iso8859" |
||
barFont = "terminus" |
barFont = "terminus" |
||
barXFont = "-*-terminus-*-*-*-*-14-*-*-*-*-*-*-*" |
barXFont = "-*-terminus-*-*-*-*-14-*-*-*-*-*-*-*" |
||
Line 97: | Line 98: | ||
" -ta l -expand r -e ''" |
" -ta l -expand r -e ''" |
||
notesFile = "/home/webframp/TODO" |
notesFile = "/home/webframp/TODO" |
||
− | mTerm = "urxvt" |
+ | mTerm = "urxvt" |
-- Custom Searches |
-- Custom Searches |
||
+ | enro40, roen40 :: S.SearchEngine |
||
enro40 = S.searchEngine "enro40" "http://dictionare.com/phpdic/enro40.php?field0=" |
enro40 = S.searchEngine "enro40" "http://dictionare.com/phpdic/enro40.php?field0=" |
||
roen40 = S.searchEngine "roen40" "http://dictionare.com/phpdic/roen40.php?field0=" |
roen40 = S.searchEngine "roen40" "http://dictionare.com/phpdic/roen40.php?field0=" |
||
Line 122: | Line 124: | ||
-- Prompt Config {{{ |
-- Prompt Config {{{ |
||
+ | mXPConfig :: XPConfig |
||
mXPConfig = |
mXPConfig = |
||
− | + | defaultXPConfig { font = barFont |
|
− | , bgColor = colorFocusBG |
+ | , bgColor = colorFocusBG |
− | , fgColor = colorNormalFG |
+ | , fgColor = colorNormalFG |
− | , bgHLight = colorNormalBG |
+ | , bgHLight = colorNormalBG |
− | , fgHLight = colorFocusFG |
+ | , fgHLight = colorFocusFG |
− | , borderColor = "black" |
+ | , borderColor = "black" |
− | , promptBorderWidth = 0 |
+ | , promptBorderWidth = 0 |
− | , position = Bottom |
+ | , position = Bottom |
− | , height = 14 |
+ | , height = 14 |
− | , historySize = 256 |
+ | , historySize = 256 |
− | , historyFilter = id |
+ | , historyFilter = id |
− | , defaultText = "" |
+ | , defaultText = "" |
− | , autoComplete = Nothing |
+ | , autoComplete = Nothing |
− | , showCompletionOnTab = False |
+ | , showCompletionOnTab = False |
− | } |
+ | } |
+ | largeXPConfig :: XPConfig |
||
largeXPConfig = mXPConfig |
largeXPConfig = mXPConfig |
||
{ font = "-*-terminus-*-*-*-*-16-*-*-*-*-*-*-*" |
{ font = "-*-terminus-*-*-*-*-16-*-*-*-*-*-*-*" |
||
Line 157: | Line 161: | ||
--}}} |
--}}} |
||
-- Window rules aka Manage Hook {{{ |
-- Window rules aka Manage Hook {{{ |
||
+ | mManageHook :: ManageHook |
||
mManageHook = scratchpadManageHook (W.RationalRect 0.25 0.375 0.5 0.35) <+> |
mManageHook = scratchpadManageHook (W.RationalRect 0.25 0.375 0.5 0.35) <+> |
||
(composeAll . concat $ |
(composeAll . concat $ |
||
− | [ [ className =? c --> doFloat | c <- floats ] |
+ | [ [ className =? c --> doFloat | c <- floats ], |
− | [ className =? w --> |
+ | [ className =? w --> doShift "web" | w <- webs] , |
− | [ className =? g --> |
+ | [ className =? g --> doShift "game" | g <- games] , |
[ resource =? "desktop_window" --> doIgnore |
[ resource =? "desktop_window" --> doIgnore |
||
− | , className =? "Epdfview" --> |
+ | , className =? "Epdfview" --> doShift "read" |
− | , |
+ | , className =? "Okular" --> doShift "read" |
− | , title =? " |
+ | , title =? "mutt" --> doShift "mail" |
+ | , title =? "irssi" --> doShift "irc" |
||
, title =? "Save a Bookmark" --> doFloat |
, title =? "Save a Bookmark" --> doFloat |
||
, title =? "Add-ons" --> doFloat |
, title =? "Add-ons" --> doFloat |
||
− | , className =? "Mitter" --> |
+ | , className =? "Mitter" --> doShift "irc" |
− | , className =? "Evolution" --> |
+ | , className =? "Evolution" --> doShift "mail" |
− | , className =? " |
+ | , className =? "Shredder" --> doShift "mail" |
− | , className =? " |
+ | , className =? "VirtualBox" --> doShift "win" |
+ | , className =? "Tsclient" --> doShift "win" |
||
] ]) |
] ]) |
||
<+> manageDocks -- make some space |
<+> manageDocks -- make some space |
||
<+> composeOne [ isFullscreen -?> doFullFloat ] |
<+> composeOne [ isFullscreen -?> doFullFloat ] |
||
− | where floats = ["Mplayer","Gimp","Gimp-2. |
+ | where floats = ["Mplayer","Gimp","Gimp-2.6","Tsclient","VirtualBox","Gtklp","smc"] |
− | webs = ["Navigator","Gran Paradiso","Firefox", "Midori"] |
+ | webs = ["Navigator","Gran Paradiso","Firefox", "Midori", "Minefield"] |
games = ["roguestar-gl","neverputt","neverball","wesnoth"] |
games = ["roguestar-gl","neverputt","neverball","wesnoth"] |
||
− | moveTo = doF . W.shift |
||
-- }}} |
-- }}} |
||
+ | lacKeys :: [([Char], X ())] |
||
lacKeys = |
lacKeys = |
||
[ ("M-p" , runOrRaisePrompt largeXPConfig { bgHLight = colorFocusFG, fgHLight = colorNormalBG }) |
[ ("M-p" , runOrRaisePrompt largeXPConfig { bgHLight = colorFocusFG, fgHLight = colorNormalBG }) |
||
− | , ("M-g" , runOrRaise "firefox" (className =? " |
+ | , ("M-g" , runOrRaise "firefox-nightly" (className =? "Minefield")) |
− | , ("M-S-g" , safePromptSelection "firefox") |
+ | , ("M-S-g" , safePromptSelection "firefox-nightly") |
− | , ("M-w" |
+ | , ("M-w w" , workspacePrompt largeXPConfig (windows . W.view)) |
− | , ("M |
+ | , ("M-w g" , windowPromptGoto largeXPConfig) |
+ | , ("M-S-w w" , workspacePrompt largeXPConfig (windows . W.shift)) |
||
+ | , ("M-S-w g" , windowPromptBring largeXPConfig) |
||
, ("M-C-n" , appendFilePrompt largeXPConfig { bgColor = colorFocusFG, fgColor = colorFocusBG } notesFile) |
, ("M-C-n" , appendFilePrompt largeXPConfig { bgColor = colorFocusFG, fgColor = colorFocusBG } notesFile) |
||
, ("M-S-z" , safeSpawn "mocp" "-G") -- play/pause |
, ("M-S-z" , safeSpawn "mocp" "-G") -- play/pause |
||
− | , ("M-S- |
+ | , ("M-S-," , safeSpawn "mocp" "-r") -- rev |
− | , ("M-S- |
+ | , ("M-S-." , safeSpawn "mocp" "-f") -- fwd |
, ("M-<Esc>" , focusUrgent) |
, ("M-<Esc>" , focusUrgent) |
||
, ("M-`" , scratchpadSpawnAction defaultConfig { terminal = mTerm }) -- scratchpad |
, ("M-`" , scratchpadSpawnAction defaultConfig { terminal = mTerm }) -- scratchpad |
||
, ("M-S-x" , unsafeSpawn "slock") -- screen lock |
, ("M-S-x" , unsafeSpawn "slock") -- screen lock |
||
− | , ("M-<Sys_Req>", unsafeSpawn "scrot '%Y-%m-%d-%H%M_$wx$h.png' -e 'mv $f ~/screenshots/'") |
||
, ("M-i" , raiseMaybe (runInTerm "-title irssi" "sh -c 'screen -D -R -S irc irssi'") (title =? "irssi")) |
, ("M-i" , raiseMaybe (runInTerm "-title irssi" "sh -c 'screen -D -R -S irc irssi'") (title =? "irssi")) |
||
, ("M-m" , raiseMaybe (runInTerm "-title mutt" "sh -c 'screen -D -R -S mail mutt'") (title =? "mutt")) |
, ("M-m" , raiseMaybe (runInTerm "-title mutt" "sh -c 'screen -D -R -S mail mutt'") (title =? "mutt")) |
||
Line 219: | Line 227: | ||
[("M-C-c " ++ k, S.selectSearch f) | (k,f) <- searchList ] |
[("M-C-c " ++ k, S.selectSearch f) | (k,f) <- searchList ] |
||
+ | searchList :: [([Char], S.SearchEngine)] |
||
searchList = [ ("g", S.google) |
searchList = [ ("g", S.google) |
||
, ("h", S.hoogle) |
, ("h", S.hoogle) |
Revision as of 15:55, 4 November 2008
-----------------------------------------------------------------------
--
-- Module : xmonad.hs
-- Copyright : (c) Sean Escriva 2008
-- License : BSD3-style (see LICENSE)
--
-- Maintainer : sean.escriva@gmail.com
-- Stability : unstable
-- Portability : not portable,
--
-- customization for the xmonad window manager
-- Last Modified: 2008 Nov 04 Tue - 07:53:00
-----------------------------------------------------------------------
-- Imports {{{
import XMonad
-- Hooks
import XMonad.Hooks.DynamicLog hiding (xmobar, xmobarPP, xmobarColor, sjanssenPP, byorgeyPP)
import XMonad.Hooks.UrgencyHook (withUrgencyHook, NoUrgencyHook(..), focusUrgent)
import XMonad.Hooks.ManageDocks (avoidStruts, manageDocks, ToggleStruts(..))
import XMonad.Hooks.ManageHelpers
-- Prompt
import XMonad.Prompt
import XMonad.Prompt.RunOrRaise (runOrRaisePrompt)
import XMonad.Prompt.Window (windowPromptGoto, windowPromptBring)
import XMonad.Prompt.Workspace (workspacePrompt)
import XMonad.Prompt.AppendFile (appendFilePrompt)
-- Actions
import XMonad.Actions.CycleWS --(nextWS, prevWS, shiftToNext, shiftToPrev, nextScreen, prevScreen, shiftNextScreen, shiftPrevScreen, toggleWS)
import XMonad.Actions.WindowGo (title, raiseMaybe, runOrRaise, (=?))
import XMonad.Actions.UpdatePointer
import qualified XMonad.Actions.Search as S
-- Util
import XMonad.Util.Run (safeSpawn, unsafeSpawn, runInTerm, spawnPipe)
import XMonad.Util.Scratchpad (scratchpadSpawnAction, scratchpadManageHook) --, scratchpadFilterOutWorkspace)
import XMonad.Util.XSelection (safePromptSelection)
import XMonad.Util.EZConfig hiding (additionalMouseBindings, removeMouseBindings)
-- Layouts
import XMonad.Layout.NoBorders (smartBorders)
import XMonad.Layout.ResizableTile (ResizableTall(..))
import System.IO (hPutStrLn)
import Data.Char (isSpace)
import qualified XMonad.StackSet as W
--}}}
-- Main {{{
main :: IO ()
main = do
dzpipe <- spawnPipe statusBarCmd
xmonad $ withUrgencyHook NoUrgencyHook $ defaultConfig
{ terminal = mTerm
, focusFollowsMouse = False
, borderWidth = 1
, modMask = mod4Mask -- win key
, numlockMask = mod2Mask
, workspaces = ["mail","web","code","irc","term","read","game","art","win"]
, normalBorderColor = colorNormalBorder
, focusedBorderColor = colorFocusedBorder
, layoutHook = mLayout
, manageHook = mManageHook
, logHook = (dynamicLogWithPP $ mPP dzpipe) >> updatePointer (Relative 0.95 0.95)
, startupHook = return () >> checkKeymap defaultConfig lacKeys
}
`additionalKeysP` lacKeys
`additionalKeys`
-- Mediakeys on the Latitude D830
[ ((0 ,0x1008ff11 ), unsafeSpawn "amixer -q set Master 2dB-" ) -- XF86AudioLowerVolume
, ((0 ,0x1008ff12 ), unsafeSpawn "amixer -q set Master toggle") -- XF86Audio Mute
, ((0 ,0x1008ff13 ), unsafeSpawn "amixer -q set Master 2dB+" ) -- XF86AudioRaiseVolume
, ((0 ,xK_Print ), unsafeSpawn "scrot '%Y-%m-%d-%H%M_$wx$h.png' -e 'mv $f ~/screenshots/'") -- Print Screen
]
-- }}}
-- Config {{{
-- single options here
-- }}}
-- Theme {{{
colorNormalBorder, colorFocusedBorder, colorNormalBG, colorNormalFG, colorFocusBG, colorFocusFG, colorFocusBO, colorUrgentBG, colorUrgentFG :: [Char]
colorNormalBorder = "#1c2636"
colorFocusedBorder = "#99ff99"
colorNormalBG = "#1e1e27"
colorNormalFG = "#cfbfad"
colorFocusFG = "#33ccff"
colorFocusBG = "#1C2636"
colorFocusBO = "#99ffcc"
colorUrgentBG = "#ff00cc"
colorUrgentFG = "#00ff99"
barFont, barXFont, statusBarCmd, notesFile, mTerm :: [Char]
barFont = "terminus"
barXFont = "-*-terminus-*-*-*-*-14-*-*-*-*-*-*-*"
--}}}
statusBarCmd = "dzen2" ++
" -bg '" ++ colorNormalBG ++ "'" ++
" -fg '" ++ colorNormalFG ++ "'" ++
" -sa c" ++
" -fn '" ++ barXFont ++ "'" ++
" -ta l -expand r -e ''"
notesFile = "/home/webframp/TODO"
mTerm = "urxvt"
-- Custom Searches
enro40, roen40 :: S.SearchEngine
enro40 = S.searchEngine "enro40" "http://dictionare.com/phpdic/enro40.php?field0="
roen40 = S.searchEngine "roen40" "http://dictionare.com/phpdic/roen40.php?field0="
-- Pretty printer {{{
-- dynamiclog pretty printer for dzen
mPP h = defaultPP
{ ppCurrent = wrap ("^fg(" ++ colorFocusFG ++ ")^bg(" ++ colorFocusBG ++ ")^p(2)") "^p(2)^fg()^bg()"
, ppVisible = wrap ("^fg(" ++ colorNormalFG ++ ")^bg(" ++ colorNormalBG ++ ")^p(2)") "^p(2)^fg()^bg()"
, ppSep = " ^fg(grey60)^r(1x8)^fg() "
, ppLayout = dzenColor colorNormalFG "" . (\x -> case x of
"Mirror Tall" -> "^i(/home/webframp/.xmonad/dzen/mtall.xbm)"
"ResizableTall" -> "^i(/home/webframp/.xmonad/dzen/tall.xbm)"
"Full" -> "^i(/home/webframp/.xmonad/dzen/full.xbm)"
_ -> " " ++ x ++ " "
)
, ppUrgent = dzenColor colorNormalBG colorUrgentBG . wrap "[" "]"
, ppTitle = dzenColor colorFocusFG "" . wrap "<" ">"
, ppOutput = hPutStrLn h
}
--}}}
-- Prompt Config {{{
mXPConfig :: XPConfig
mXPConfig =
defaultXPConfig { font = barFont
, bgColor = colorFocusBG
, fgColor = colorNormalFG
, bgHLight = colorNormalBG
, fgHLight = colorFocusFG
, borderColor = "black"
, promptBorderWidth = 0
, position = Bottom
, height = 14
, historySize = 256
, historyFilter = id
, defaultText = ""
, autoComplete = Nothing
, showCompletionOnTab = False
}
largeXPConfig :: XPConfig
largeXPConfig = mXPConfig
{ font = "-*-terminus-*-*-*-*-16-*-*-*-*-*-*-*"
, height = 16
}
-- }}}
-- Layout Hook{{{
mLayout = avoidStruts $ smartBorders(
Mirror tiled |||
ResizableTall 1 (3/100) (1/2) [] |||
Full)
where
tiled = Tall nmaster delta ratio
nmaster = 1
ratio = toRational (2/(1+sqrt(5)::Double)) -- golden, thx Octoploid
delta = 0.03
--}}}
-- Window rules aka Manage Hook {{{
mManageHook :: ManageHook
mManageHook = scratchpadManageHook (W.RationalRect 0.25 0.375 0.5 0.35) <+>
(composeAll . concat $
[ [ className =? c --> doFloat | c <- floats ],
[ className =? w --> doShift "web" | w <- webs] ,
[ className =? g --> doShift "game" | g <- games] ,
[ resource =? "desktop_window" --> doIgnore
, className =? "Epdfview" --> doShift "read"
, className =? "Okular" --> doShift "read"
, title =? "mutt" --> doShift "mail"
, title =? "irssi" --> doShift "irc"
, title =? "Save a Bookmark" --> doFloat
, title =? "Add-ons" --> doFloat
, className =? "Mitter" --> doShift "irc"
, className =? "Evolution" --> doShift "mail"
, className =? "Shredder" --> doShift "mail"
, className =? "VirtualBox" --> doShift "win"
, className =? "Tsclient" --> doShift "win"
] ])
<+> manageDocks -- make some space
<+> composeOne [ isFullscreen -?> doFullFloat ]
where floats = ["Mplayer","Gimp","Gimp-2.6","Tsclient","VirtualBox","Gtklp","smc"]
webs = ["Navigator","Gran Paradiso","Firefox", "Midori", "Minefield"]
games = ["roguestar-gl","neverputt","neverball","wesnoth"]
-- }}}
lacKeys :: [([Char], X ())]
lacKeys =
[ ("M-p" , runOrRaisePrompt largeXPConfig { bgHLight = colorFocusFG, fgHLight = colorNormalBG })
, ("M-g" , runOrRaise "firefox-nightly" (className =? "Minefield"))
, ("M-S-g" , safePromptSelection "firefox-nightly")
, ("M-w w" , workspacePrompt largeXPConfig (windows . W.view))
, ("M-w g" , windowPromptGoto largeXPConfig)
, ("M-S-w w" , workspacePrompt largeXPConfig (windows . W.shift))
, ("M-S-w g" , windowPromptBring largeXPConfig)
, ("M-C-n" , appendFilePrompt largeXPConfig { bgColor = colorFocusFG, fgColor = colorFocusBG } notesFile)
, ("M-S-z" , safeSpawn "mocp" "-G") -- play/pause
, ("M-S-," , safeSpawn "mocp" "-r") -- rev
, ("M-S-." , safeSpawn "mocp" "-f") -- fwd
, ("M-<Esc>" , focusUrgent)
, ("M-`" , scratchpadSpawnAction defaultConfig { terminal = mTerm }) -- scratchpad
, ("M-S-x" , unsafeSpawn "slock") -- screen lock
, ("M-i" , raiseMaybe (runInTerm "-title irssi" "sh -c 'screen -D -R -S irc irssi'") (title =? "irssi"))
, ("M-m" , raiseMaybe (runInTerm "-title mutt" "sh -c 'screen -D -R -S mail mutt'") (title =? "mutt"))
, ("M-S-m", runOrRaise "evolution" (className =? "Evolution"))
, ("M-e" , safeSpawn "pcmanfm" "--no-desktop")
, ("M-b" , sendMessage ToggleStruts)
, ("M-s" , moveTo Next NonEmptyWS)
, ("M-d" , moveTo Prev NonEmptyWS)
, ("M-C-s", nextWS)
, ("M-C-d", prevWS)
, ("M-S-s", shiftToNext)
, ("M-S-d", shiftToPrev)
, ("M-f" , nextScreen)
, ("M-a" , prevScreen)
, ("M-S-f", shiftNextScreen)
, ("M-S-a", shiftPrevScreen)
, ("M-z" , toggleWS)
]
++
-- Search methods
-- mapped to mod-c for 'a căuta'
[("M-c " ++ k, S.promptSearch largeXPConfig f) | (k,f) <- searchList ]
++
[("M-C-c " ++ k, S.selectSearch f) | (k,f) <- searchList ]
searchList :: [([Char], S.SearchEngine)]
searchList = [ ("g", S.google)
, ("h", S.hoogle)
, ("w", S.wikipedia)
, ("d", S.dictionary)
, ("t", S.thesaurus)
, ("a", S.amazon)
, ("y", S.youtube)
, ("e", enro40)
, ("r", roen40)
]
-- vim:foldmethod=marker sw=4 sts=4 ts=4 tw=0 et ai nowrap