Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --
- -- xmonad config file.
- --
- import XMonad hiding ( (|||) )
- import Data.Monoid
- import System.IO
- import System.Exit
- import qualified XMonad.StackSet as W
- import qualified Data.Map as M
- import Data.Ratio ((%))
- import XMonad.Actions.CopyWindow
- import XMonad.Actions.CycleRecentWS
- import XMonad.Actions.CycleWS
- import XMonad.Actions.NoBorders
- import XMonad.Actions.WindowGo
- import XMonad.Config.Kde
- import XMonad.Config.Desktop
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.SetWMName
- import XMonad.Hooks.UrgencyHook
- import XMonad.Layout.Grid
- import XMonad.Layout.IM
- import XMonad.Layout.LayoutCombinators
- import XMonad.Layout.LayoutHints
- import XMonad.Layout.LayoutModifier
- import XMonad.Layout.MultiToggle.Instances
- import XMonad.Layout.NoBorders
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Reflect
- import XMonad.Layout.ResizableTile
- import XMonad.Layout.Spacing
- import XMonad.Util.Dzen
- import XMonad.Util.Run (spawnPipe)
- import XMonad.Util.Scratchpad
- import qualified XMonad.Layout.MultiToggle as MT
- myTerminal = "/usr/bin/urxvt -e tmux -2 new-session"
- myFocusFollowsMouse :: Bool
- myFocusFollowsMouse = True
- myBorderWidth = 1
- myModMask = mod1Mask
- myNumlockMask = mod2Mask
- myWorkspaces = ["1","2","3","4","5","6","7:web","8:sys","9:im"]
- myNormalBorderColor = "white"
- myFocusedBorderColor = "red"
- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
- [ ((modm, xK_t ), spawn $ XMonad.terminal conf)
- -- , ((modm, xK_p ), spawn myDmenu)
- , ((modm, xK_p ), spawn "krunner")
- -- , ((modm .|. shiftMask, xK_p ), spawn "gmrun")
- , ((modm, xK_F4 ), kill)
- , ((modm, xK_space ), sendMessage NextLayout)
- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
- , ((modm, xK_n ), refresh)
- , ((modm, xK_Tab ), windows W.focusDown)
- , ((modm, xK_j ), windows W.focusDown)
- , ((modm, xK_k ), windows W.focusUp )
- , ((modm .|. shiftMask, xK_m ), windows W.focusMaster )
- , ((modm, xK_Return), windows W.swapMaster)
- , ((modm, xK_z ), sendMessage MirrorShrink )
- , ((modm, xK_a ), sendMessage MirrorExpand )
- , ((modm, xK_h ), sendMessage Shrink)
- , ((modm, xK_l ), sendMessage Expand)
- , ((modm, xK_u ), focusUrgent)
- , ((modm, xK_y ), withFocused $ windows . W.sink)
- , ((modm, xK_g ), withFocused toggleBorder)
- , ((modm , xK_comma ), sendMessage (IncMasterN 1))
- , ((modm , xK_period), sendMessage (IncMasterN (-1)))
- , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
- , ((modm, xK_m ), sendMessage $ MT.Toggle FULL )
- , ((modm, xK_Escape), toggleWS )
- , ((modm, xK_s ), moveTo Next EmptyWS )
- , ((modm, xK_d ), moveTo Prev EmptyWS )
- , ((modm .|. controlMask, xK_Right ), moveTo Next NonEmptyWS )
- , ((modm .|. controlMask, xK_Left ), moveTo Prev NonEmptyWS )
- , ((modm, xK_F12 ), scratchpadSpawnAction defaultConfig {terminal = "/usr/bin/urxvt"} )
- , ((modm, xK_v ), spawn "/usr/bin/gvim" )
- , ((modm .|. shiftMask, xK_h ), spawn "/usr/bin/dolphin" )
- , ((modm, xK_f ), runOrRaise "firefox" (className =? "Firefox") )
- , ((modm, xK_q ), spawn "xmonad --recompile; xmonad --restart")
- ]
- ++
- [((m .|. modm, k), windows $ f i)
- | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
- , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask), (copy, shiftMask .|. controlMask)]]
- ++
- [((m .|. modm, 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)]]
- myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
- [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
- >> windows W.shiftMaster))
- , ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
- , ((modm, button3), (\w -> focus w >> mouseResizeWindow w
- >> windows W.shiftMaster))
- , ((modm, button4), (\_ -> prevWS)) -- switch to previous workspace
- , ((modm, button5), (\_ -> nextWS)) -- switch to next workspace
- ]
- myLayout = onWorkspace "7:web" full $ onWorkspace "8:sys" grid $ onWorkspace "9:im" imLayout $ avoidStruts $ smartBorders $ MT.mkToggle(MT.single FULL) $ (defaultLayout)
- where
- defaultLayout = layoutHints (tiled) ||| layoutHints(Mirror tiled) ||| layoutHints(full) ||| layoutHints(grid)
- -- defaultLayout = tiled ||| Mirror tiled ||| full ||| grid
- tiled = ResizableTall nmaster delta ratio []
- nmaster = 1
- ratio = 1/2
- delta = 2/100
- full = avoidStruts $ smartBorders $ Full
- grid = avoidStruts $ Grid
- imLayout = avoidStruts $ smartBorders $ withIM ratio kopeteRoster $ reflectHoriz $ withIM skypeRatio skypeRoster Grid
- where
- chatLayout = Grid
- ratio = (2%8)
- skypeRatio = (3%8)
- --pidginRoster = And (ClassName "Pidgin") (Role "buddy_list")
- kopeteRoster = (ClassName "Kopete") `And` (Role "MainWindow#1")
- skypeRoster = (ClassName "Skype") `And` (Not (Title "Options")) `And` (Not (Role "Chats")) `And` (Not (Role "CallWindowForm"))
- myManageHook = scratchpadManageHook (W.RationalRect 0.0 0.5 1.0 0.45) <+> ( composeAll . concat $
- [[ className =? "MPlayer" --> doFloat
- , className =? "Gimp" --> doFloat
- , className =? "Kopete" --> (doShift "9:im") -- <+> doFloat)
- , className =? "kopete" --> (doShift "9:im") -- <+> doFloat)
- , className =? "Skype" --> (doShift "9:im") -- <+> doFloat)
- , className =? "skype" --> (doShift "9:im") -- <+> doFloat)
- , className =? "Pidgin" --> (doShift "9:im") -- <+> doFloat)
- , className =? "pidgin" --> (doShift "9:im") -- <+> doFloat)
- , className =? "Firefox" --> doShift "7:web"
- , resource =? "desktop_window" --> doIgnore
- , resource =? "plasma-desktop" --> doFloat
- , resource =? "kdesktop" --> doIgnore ]] ) <+> manageDocks
- myEventHook = ewmhDesktopsEventHook
- myStartupHook = setWMName "LG3D"
- myLogHook = ewmhDesktopsLogHookCustom $ filter $ \w -> W.tag w /= "NSP"
- main = do
- xmonad $ withUrgencyHook FocusHook $ kde4Config { -- use kde4Config for KDE
- -- simple stuff
- terminal = myTerminal,
- focusFollowsMouse = myFocusFollowsMouse,
- borderWidth = myBorderWidth,
- modMask = myModMask,
- numlockMask = myNumlockMask,
- workspaces = myWorkspaces,
- normalBorderColor = myNormalBorderColor,
- focusedBorderColor = myFocusedBorderColor,
- -- key bindings
- keys = myKeys,
- mouseBindings = myMouseBindings,
- -- hooks, layouts
- layoutHook = myLayout,
- manageHook = manageHook kde4Config <+> myManageHook, -- use kde4Config for KDE
- handleEventHook = myEventHook,
- logHook = myLogHook,
- startupHook = myStartupHook
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement