Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --
- -- xmonad example config file.
- --
- -- A template showing all available configuration hooks,
- -- and how to override the defaults in your own xmonad.hs conf file.
- --
- -- Normally, you'd only override those defaults you care about.
- --
- {-# OPTIONS_GHC -fglasgow-exts #-} -- required for XMonad.Layout.MultiToggle
- import XMonad
- import XMonad.Actions.CycleWS
- import XMonad.Actions.DwmPromote
- import XMonad.Actions.FindEmptyWorkspace
- import qualified XMonad.Actions.FlexibleResize as Flex
- import XMonad.Actions.RotSlaves
- import XMonad.Actions.Search
- import XMonad.Actions.WindowGo
- import XMonad.Hooks.DynamicLog as Log
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Util.Run (spawnPipe)
- import XMonad.Util.EZConfig
- import XMonad.Prompt
- import XMonad.Prompt.RunOrRaise
- import XMonad.Prompt.Shell
- import XMonad.Prompt.Ssh
- import XMonad.Prompt.Workspace
- import XMonad.Util.Dzen as Dzen
- import XMonad.Util.Run
- import XMonad.Util.Loggers
- import XMonad.Layout.Accordion
- import XMonad.Layout.Combo
- import XMonad.Layout.DwmStyle
- import XMonad.Layout.IM
- import XMonad.Layout.Maximize
- import XMonad.Layout.MultiToggle
- import XMonad.Layout.NoBorders
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Reflect
- import XMonad.Layout.ResizableTile
- import XMonad.Layout.TwoPane
- import XMonad.Layout.WindowNavigation
- import Codec.Binary.UTF8.String
- import Control.Monad
- import Data.Ratio ((%))
- import System.Exit
- import System.IO (hPutStrLn)
- import qualified XMonad.StackSet as W
- import qualified Data.Map as M
- myTerminal = "xterm -bg black -fg '#CFDBFF' -fn '-*-terminus-medium-*-*-*-20-*-*-*-*-*-iso10646-1' +sb -bdc"
- myBorderWidth = 1
- myModMask = mod1Mask
- myNumlockMask = mod2Mask
- myWorkspaces = ["~"] ++ map show [1..2] ++ ["web","IM","mail","6","7","8","mpc","0","rdesktop"]
- myDefaultGaps = [(0,0,0,0)]
- myNormalBorderColor = "#444488"
- myFocusedBorderColor = "#ee9999"
- myBgColor= "#001070"
- myFgColor = "#bbbbdd"
- myBgHLight= "#4444aa"
- myFgHLight= "#ddddff"
- myXPConfig :: XPConfig
- myXPConfig = defaultXPConfig
- { font = "xft:Terminus:pixelsize=16"
- , bgColor = myBgColor
- , fgColor = myFgColor
- , bgHLight = myBgHLight
- , fgHLight = myFgHLight
- , borderColor = myNormalBorderColor
- }
- -- Mutimedia keys bindings
- multKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ [
- ((0, 0x1008ff14), spawn "mpc --no-status toggle")
- , ((0, 0x1008ff15), spawn "mpc --no-status stop")
- , ((0, 0x1008ff16), spawn "mpc --no-status prev")
- , ((0, 0x1008ff17), spawn "mpc --no-status next")
- , ((0, 0x1008ff11), spawn "mpcvolume -")
- , ((0, 0x1008ff13), spawn "mpcvolume +")
- , ((0, 0x1008ff18), runOrRaise "firefox" (className =? "Firefox-bin"))
- , ((0, 0x1008ff19), runOrRaise "claws-mail" (className =? "Claws-mail"))
- , ((0, 0x1008ff30), runOrRaise "kvirc" (className =? "Kvirc"))
- , ((0, 0x1008ff10), spawn "/usr/bin/xscreensaver-command -lock")
- , ((0, xK_Print), unsafeSpawn "import -w root png:$HOME/screenshot--`date +%F--%T`.png")
- ]
- myKeys = \conf -> mkKeymap conf $ [
- ("M-S-<Return>", spawn $ XMonad.terminal conf) -- terminal
- , ("M-S-c", kill)
- , ("M-r", refresh)
- , ("M-b", sendMessage ToggleStruts)
- , ("M-S-C-<Pause>", io (exitWith ExitSuccess))
- , ("M-q", restart "xmonad" True)
- -- Propmpts here
- , ("M-p p", runOrRaisePrompt myXPConfig)
- , ("M-p M-p", runOrRaisePrompt myXPConfig)
- , ("M-p t", prompt (myTerminal ++ " -e") myXPConfig)
- , ("M-p M-t", prompt (myTerminal ++ " -e") myXPConfig)
- , ("M-p s", sshPrompt myXPConfig)
- , ("M-p M-s", sshPrompt myXPConfig)
- , ("M-p w", workspacePrompt myXPConfig (windows . W.view))
- , ("M-p S-w", workspacePrompt myXPConfig (windows . W.shift))
- , ("M-p M-w", workspacePrompt myXPConfig (windows . W.view))
- , ("M-p M-S-w", workspacePrompt myXPConfig (windows . W.shift))
- , ("M-S-b", selectSearch bugzilla)
- , ("M-p M-r", prompt ("rdesktop -k en-us") myXPConfig)
- -- Workspaces
- , ("M-z", viewEmptyWorkspace)
- , ("M-<L>", prevWS)
- , ("M-<R>", nextWS)
- , ("M-<Space>", sendMessage NextLayout)
- , ("M-S-<Space>", setLayout $ XMonad.layoutHook conf)
- --- Window management
- , ("M-h", sendMessage $ Go L)
- , ("M-S-h", sendMessage $ Swap L)
- , ("M-j", sendMessage $ Go D)
- , ("M-S-j", sendMessage $ Swap D)
- , ("M-k", sendMessage $ Go U)
- , ("M-S-k", sendMessage $ Swap U)
- , ("M-l", sendMessage $ Go R)
- , ("M-S-l", sendMessage $ Swap R)
- , ("M-<Tab>", windows W.focusDown)
- , ("M-S-<Tab>", windows W.focusUp)
- , ("M-<Return>", windows W.focusMaster)
- , ("M-m", dwmpromote)
- , ("M-y", rotSlavesDown)
- , ("M-S-y", rotAllDown)
- , ("M-o", rotSlavesUp)
- , ("M-S-o", rotAllUp)
- , ("M-S-u", sendMessage Shrink)
- , ("M-S-i", sendMessage Expand)
- , ("M-u", sendMessage MirrorExpand)
- , ("M-i", sendMessage MirrorShrink)
- , ("M-v", withFocused $ sendMessage . maximizeRestore )
- , ("M-s", sendMessage $ Toggle ACCORDION)
- , ("M-S-s", sendMessage $ Toggle FULL)
- , ("M-t", withFocused $ windows . W.sink) -- unfloat
- -- Increment the number of windows in the master area
- , ("M-,", sendMessage (IncMasterN 1))
- , ("M-.", sendMessage (IncMasterN (-1)))
- ]
- ++
- [ (m ++ i, windows $ f j)
- | (i, j) <- zip (["`"] ++ map show [1..9] ++ ["0","C-r"] ) (XMonad.workspaces conf)
- , (m, f) <- [("M-", W.view), ("M-S-", W.shift)]
- -- , (m, f) <- [("M-", W.greedyView), ("M-S-", W.shift)]
- ]
- --- xinerama not used
- -- ++
- -- 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)]]
- ++
- [ (m ++ key, screenWorkspace sc >>= flip whenJust (windows . f))
- | (key, sc) <- zip ["w", "e"] [0..]
- , (m, f) <- [("M-", W.view), ("M-S-", W.shift)]
- ]
- bugzilla = searchEngine "bugzilla" "https://bugzilla.altlinux.org/show_bug.cgi?id="
- ------------------------------------------------------------------------
- -- Mouse bindings: default actions bound to mouse events
- --
- 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 >> Flex.mouseResizeWindow w))
- -- you may also bind events to the mouse scroll wheel (button4 and button5)
- -- , ((modMask, button4), prevWS)
- -- , ((modMask, button5), nextWS)
- ]
- data ACCORDION = ACCORDION deriving (Read, Show, Eq, Typeable)
- instance Transformer ACCORDION Window where
- transform _ x k = k Accordion
- data FULL = FULL deriving (Read, Show, Eq, Typeable)
- instance Transformer FULL Window where
- transform _ x k = k Full
- data NOBORDERS = NOBORDERS deriving (Read, Show, Eq, Typeable)
- instance Transformer NOBORDERS Window where
- transform _ x k = k (noBorders x)
- myLayout = ewmhDesktopsLayout . dwmStyle shrinkText myTheme . windowNavigation . avoidStruts . maximize . mkToggle (single ACCORDION) . mkToggle (NOBORDERS ?? FULL ?? EOT) $ onWorkspace "IM" tiledIM (Mirror tiled) ||| onWorkspace "IM" (Mirror tiled) tiledIM
- where
- tiled = ResizableTall 1 0.03 0.6180 []
- tiledIM = ResizableTall 1 0.03 0.85 []
- myTheme = defaultTheme {
- activeColor = myBgHLight
- , activeTextColor = myFgHLight
- , inactiveColor = myBgColor
- , inactiveTextColor = myFgColor
- }
- myManageHook = composeAll
- [
- moveToC "Firefox-bin" "web"
- , floatT "Save a Bookmark"
- , moveToC "Claws-mail" "mail"
- , moveToC "rdesktop" "rdesktop"
- , moveToC "Kvirc" "IM"
- , moveToC "mainwnd" "IM"
- , floatC "Xmessage"
- , floatC "container"
- , floatC "history"
- , floatT $ decode [0xd0, 0x9f, 0xd0, 0xbe, 0xd0, 0xbc, 0xd0, 0xb5, 0xd1, 0x82, 0xd0, 0xb8, 0xd1, 0x82, 0xd1, 0x8c, 0x20, 0xd0, 0xba, 0xd0, 0xb0, 0xd0, 0xba, 0x20, 0xd0, 0xbf, 0xd1, 0x80, 0xd0, 0xbe, 0xd1, 0x87, 0xd0, 0xb8, 0xd1, 0x82, 0xd0, 0xb0, 0xd0, 0xbd, 0xd0, 0xbd, 0xd0, 0xbe, 0xd0, 0xb5]
- ] <+> manageDocks
- where
- moveToC c w = className =? c --> doF (W.shift w)
- moveToT t w = title =? t --> doF (W.shift w)
- floatC c = className =? c --> doFloat
- floatT t = title =? t --> doFloat
- -- Whether focus follows the mouse pointer.
- myFocusFollowsMouse :: Bool
- myFocusFollowsMouse = True
- ------------------------------------------------------------------------
- -- 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 = do
- spawn "xsetroot -cursor_name left_ptr -solid '#001040'"
- --return ()
- --myLogHook = return ()
- ------------------------------------------------------------------------
- -- Now run xmonad with all the defaults we set up.
- -- Run xmonad with the settings you specify. No need to modify this.
- --
- main = do
- dzen2 <- spawnPipe ( "killall rundzen; rundzen --" ++ (join $ map (wrap "-" "-") myWorkspaces ))
- Log.dzen $ \ defaultConfig -> xmonad $
- -- 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
- --
- defaultConfig {
- -- simple stuff
- terminal = myTerminal,
- focusFollowsMouse = myFocusFollowsMouse,
- borderWidth = myBorderWidth,
- modMask = myModMask,
- numlockMask = myNumlockMask,
- workspaces = myWorkspaces,
- normalBorderColor = myNormalBorderColor,
- focusedBorderColor = myFocusedBorderColor,
- -- defaultGaps = myDefaultGaps,
- -- key bindings
- keys = \c -> myKeys c `M.union` multKeys c,
- mouseBindings = myMouseBindings,
- -- hooks, layouts
- layoutHook = myLayout,
- manageHook = myManageHook,
- -- logHook = do
- -- ewmhDesktopsLogHook
- -- dynamicLogWithPP dzenPP {
- -- ppCurrent = dzenColor myFgHLight myBgHLight . wrap "-" "-"
- -- , ppTitle = (>> "")
- -- , ppLayout = (>> "")
- -- , ppHidden = dzenColor myFgColor myBgColor . wrap " " " "
- -- , ppSep = " | "
- -- , ppExtras = [ logCmd "gcpubar -c 1" ]
- -- , ppOutput = hPutStrLn dzen2 },
- startupHook = myStartupHook
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement