{-# OPTIONS_GHC -fno-warn-missing-signatures #-} ----------------------------------------------------------------------------- -- | -- Module : XMonad.Config.Arossato -- Copyright : (c) Andrea Rossato 2007 -- License : BSD3-style (see LICENSE) -- -- Maintainer : andrea.rossato@unibz.it -- Stability : stable -- Portability : portable -- -- This module specifies my xmonad defaults. -- ------------------------------------------------------------------------ module XMonad.Config.Arossato where import XMonad import XMonad.Layouts import XMonad.Operations import qualified XMonad.StackSet as W import Data.Bits ((.|.)) import qualified Data.Map as M import Graphics.X11.Xlib import XMonad.Layout.Accordion import XMonad.Hooks.DynamicLog import XMonad.Layout.Tabbed import XMonad.Layout.NoBorders import XMonad.Actions.CycleWS import XMonad.Prompt import XMonad.Prompt.XMonad import XMonad.Prompt.Shell import XMonad.Prompt.Ssh import XMonad.Prompt.Window myXPConfig :: XPConfig myXPConfig = defaultXPConfig -- ion3 clean style myTabConfig :: TConf myTabConfig = defaultTConf { activeColor = "#8a999e" , inactiveColor = "#545d75" , activeBorderColor = "white" , inactiveBorderColor = "grey" , activeTextColor = "white" , inactiveTextColor = "grey" , tabSize = 15 } ------------------------------------------------------------------------ -- -- Key bindings: -- I want to remove some of the default key bindings, such as those to exit XMonad defaultKeys :: XConfig Layout -> M.Map (KeyMask, KeySym) (X ()) defaultKeys x = M.fromList $ -- launching and killing programs [ ((modMask x .|. shiftMask, xK_Return), spawn "xterm") -- %! Launch an xterm , ((modMask x, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") -- %! Launch dmenu , ((modMask x .|. shiftMask, xK_p ), spawn "gmrun") -- %! Launch gmrun , ((modMask x .|. shiftMask, xK_c ), kill) -- %! Close the focused window , ((modMask x, xK_space ), sendMessage NextLayout) -- %! Rotate through the available layout algorithms , ((modMask x .|. shiftMask, xK_space ), setLayout $ layoutHook x) -- %! Reset the layouts on the current workspace to default , ((modMask x, xK_n ), refresh) -- %! Resize viewed windows to the correct size -- move focus up or down the window stack , ((modMask x, xK_Tab ), windows W.focusDown) -- %! Move focus to the next window , ((modMask x, xK_m ), windows W.focusMaster ) -- %! Move focus to the master window -- modifying the window order , ((modMask x, xK_Return), windows W.swapMaster) -- %! Swap the focused window and the master window , ((modMask x .|. shiftMask, xK_j ), windows W.swapDown ) -- %! Swap the focused window with the next window , ((modMask x .|. shiftMask, xK_k ), windows W.swapUp ) -- %! Swap the focused window with the previous window -- resizing the master/slave ratio , ((modMask x, xK_h ), sendMessage Shrink) -- %! Shrink the master area , ((modMask x, xK_l ), sendMessage Expand) -- %! Expand the master area -- floating layer support , ((modMask x, xK_t ), withFocused $ windows . W.sink) -- %! Push window back into tiling -- increase or decrease number of windows in the master area , ((modMask x , xK_comma ), sendMessage (IncMasterN 1)) -- %! Increment the number of windows in the master area , ((modMask x , xK_period), sendMessage (IncMasterN (-1))) -- %! Deincrement the number of windows in the master area -- toggle the status bar gap , ((modMask x , xK_b ), modifyGap (\i n -> let s = (defaultGaps x ++ repeat (0,0,0,0)) !! i in if n == s then (0,0,0,0) else s)) -- %! Toggle the status bar gap ] ++ -- mod-[1..9] %! Switch to workspace N -- mod-shift-[1..9] %! Move client to workspace N [((m .|. modMask x, k), windows $ f i) | (i, k) <- zip (workspaces x) [xK_1 ..] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask .|. controlMask)]] ++ -- 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 x, 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)]] ++ mykeys x -- These are my personal key bindings mykeys :: XConfig Layout -> [((KeyMask, KeySym), (X ()))] mykeys x = [ ((modMask x , xK_F12 ), xmonadPrompt myXPConfig ) , ((modMask x , xK_F3 ), shellPrompt myXPConfig ) , ((modMask x , xK_F4 ), sshPrompt myXPConfig ) , ((modMask x , xK_F5 ), windowPromptGoto myXPConfig ) , ((modMask x .|. shiftMask , xK_F5 ), windowPromptBring myXPConfig ) -- mod . mod , , ((modMask x , xK_comma ), prevWS ) , ((modMask x , xK_period), nextWS ) -- mod left mod right , ((modMask x , xK_Right ), windows W.focusDown ) , ((modMask x , xK_Left ), windows W.focusUp ) -- other stuff: launch some useful utilities , ((modMask x , xK_F2 ), spawn "urxvt -fg white -bg black +sb" ) , ((modMask x .|. shiftMask , xK_F4 ), spawn "~/bin/dict.sh" ) , ((modMask x .|. shiftMask , xK_F5 ), spawn "~/bin/urlOpen.sh" ) , ((modMask x , xK_c ), kill ) ] arossatoConfig = defaultConfig { borderWidth = 1 , workspaces = map show [1 .. 9 :: Int] , logHook = dynamicLogWithPP sjanssenPP , layoutHook = Layout $ noBorders mytab ||| noBorders Full ||| tiled ||| Mirror tiled ||| Accordion , terminal = "xterm" , normalBorderColor = "white" , focusedBorderColor = "black" , modMask = mod1Mask , keys = defaultKeys } where mytab = tabbed shrinkText myTabConfig tiled = Tall 1 0.03 0.5