Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --System imports
- import XMonad
- import System.Exit
- import qualified XMonad.StackSet as W
- import qualified Data.Map as M
- import Data.Ratio ((%))
- import System.IO
- import Data.IORef
- import Data.Monoid
- -- Graphics import
- import Graphics.X11.Xlib.Extras
- import Graphics.X11.ExtraTypes.XF86
- -- Actions import
- import XMonad.Actions.CycleWS
- import XMonad.Actions.NoBorders
- import XMonad.Actions.CopyWindow
- import XMonad.Actions.SinkAll
- import XMonad.Hooks.DynamicLog
- import XMonad.Actions.TagWindows
- import XMonad.Actions.UpdatePointer
- import qualified XMonad.Actions.FlexibleResize as Flex
- import XMonad.Actions.WindowMenu
- import XMonad.Actions.GridSelect
- import XMonad.Actions.ConstrainedResize as Sqr
- import XMonad.Actions.FlexibleResize
- import XMonad.Actions.FindEmptyWorkspace
- import XMonad.Actions.RotSlaves
- import XMonad.Actions.FocusNth
- import XMonad.Actions.Submap
- --import XMonad.Actions.CycleSelectedLayouts
- --import XMonad.Actions.Search
- -- Layouts
- --import xmproc
- import XMonad.Layout.Circle
- import XMonad.Layout.NoBorders
- import XMonad.Layout.Tabbed
- -- import XMonad.Layout.DwmStyle
- import XMonad.Layout.Named
- import XMonad.Layout.Master
- import XMonad.Layout.Decoration
- import XMonad.Layout.PerWorkspace
- import XMonad.Layout.Named
- import XMonad.Layout.IM
- import XMonad.Layout.Reflect
- import XMonad.Layout.MagicFocus
- import XMonad.Layout.LayoutModifier
- import XMonad.Layout.MultiToggle
- import XMonad.Layout.NoBorders
- import XMonad.Layout.TwoPane
- import XMonad.Layout.ResizableTile
- import XMonad.Layout.Spiral
- import XMonad.Layout.StackTile
- import XMonad.Layout.Mosaic
- import XMonad.Layout.MosaicAlt
- -- import XMonad.Layout.Dishes
- import XMonad.Layout.Gaps
- import XMonad.Layout.Grid
- import XMonad.Layout.MouseResizableTile
- import XMonad.Layout.Simplest
- import XMonad.Layout.SimplestFloat
- import XMonad.Layout.OneBig
- import XMonad.Layout.Minimize
- import XMonad.Layout.Maximize
- --import XMonad.Layout.Accordion
- --import XMonad hiding ( (|||) )
- --import XMonad.Layout.LayoutCombinators
- import XMonad.Layout.WindowNavigation
- import XMonad.Layout.SimpleFloat
- import XMonad.Layout.SimplestFloat
- import XMonad.Layout.CenteredMaster
- import XMonad.Layout.SimpleDecoration
- import XMonad.Layout.ShowWName
- import XMonad.Layout.DecorationMadness
- -- Prompt import
- import XMonad.Prompt
- import XMonad.Prompt.Man
- import XMonad.Prompt.Shell
- import XMonad.Prompt.Ssh
- import XMonad.Prompt.Input
- --
- import XMonad.Prompt.Workspace
- --import XMonad.Prompt.Layout
- --import XMonad.Prompt.RunOrRaise
- -- Hooks import
- import XMonad.Hooks.UrgencyHook
- import XMonad.Hooks.EwmhDesktops
- import XMonad.Hooks.ManageDocks
- import XMonad.Hooks.ManageHelpers
- import XMonad.Hooks.FadeInactive
- import XMonad.Hooks.DynamicLog
- import XMonad.Hooks.Place
- import XMonad.Hooks.RestoreMinimized
- --
- -- import XMonad.Util.EZConfig
- -- Tobe able to query X11 atoms and such on
- -- X11 import
- import Graphics.X11.Xlib.Display
- import Graphics.X11.Xlib.Screen
- import Graphics.X11.Xlib.Extras
- import Graphics.X11.Types
- import Graphics.X11.ExtraTypes.XF86
- import Graphics.X11.ExtraTypes.XorgDefault
- import Foreign.C.Types (CLong)
- import Text.Regex.Posix ((=~))
- --import utils
- import XMonad.Util.XUtils
- import XMonad.Util.Run (spawnPipe)
- import XMonad.Util.CustomKeys
- --import XMonad.Util.Dzen
- myTerminal = "gnome-terminal"
- myBorderWidth = 1
- myModMask = mod1Mask
- myFadeIn = 0.7
- -- > $ xmodmap | grep Num
- -- > mod2 Num_Lock (0x4d)
- --
- -- Set numlockMask = 0 if you don't have a numlock key, or want to treat
- -- numlock status separately.
- --
- myNumlockMask = mod2Mask
- myWorkspaces = ["sys","im","sip","mail","www","tab","graph", "files", "media"]
- myNormalBorderColor = "#cccccc"
- --myNormalBorderColor = "#ffffff"
- myFocusedBorderColor = "#000000"
- myBar = "conky"
- setRootAtom :: String -> String -> X ()
- setRootAtom name value = withDisplay (io . setRootAtom' name value)
- where setRootAtom' atom name d = do
- a <- internAtom d atom False
- rw <- rootWindow d $ defaultScreen d
- setTextProperty d rw name a
- getRootAtom :: String -> X [String]
- getRootAtom name = withDisplay (io . getRootAtom' name)
- where getRootAtom' atom d = do
- a <- internAtom d atom False
- rw <- rootWindow d $ defaultScreen d
- tp <- getTextProperty d rw a
- wcTextPropertyToTextList d tp
- setLayoutAtom :: String -> X ()
- setLayoutAtom name = setRootAtom "XMONAD_LAYOUT" name
- -- chooseLayout name = sendMessage $ JumpToLayout name
- --
- -- Window tags
- stackPlus s1 s2 = Just W.Stack {W.focus = W.focus s1,
- W.up = (W.up s1) ++ (W.up s2),
- W.down = (W.down s1) ++ (W.down s2) ++ [W.focus s2]}
- stackPlus' Nothing st = Just st
- stackPlus' (Just s1) s2 = stackPlus s1 s2
- modifyWs i d f s = W.modify d f (W.view i s)
- emptyCurrentWs = W.modify Nothing (const Nothing)
- addStackToTarget target st = modifyWs target st (stackPlus' st)
- returnToCurrent c s = W.view curtag s
- where curtag = W.currentTag c
- curstack s = W.stack $ W.workspace $ W.current s
- -- CompizFusion or MS Win Se7en like
- -- CompizFusion or MS Win Se7en like
- currentList :: X [Window]
- currentList = withWindowSet (\s -> return $ W.integrate' $ curstack s)
- unmaximize :: Window -> X ()
- unmaximize w = withDisplay $ unmaximize' w
- where
- unmaximize' w d =
- let swd = widthOfScreen s
- sht = heightOfScreen s
- wd = round $ 0.8*(fromIntegral swd)
- ht = round $ 0.8*(fromIntegral sht)
- x = round $ (fromIntegral (swd-wd))/2
- y = round $ (fromIntegral (sht-ht))/2
- s = defaultScreenOfDisplay d
- in do float w
- io $ resizeWindow d w wd ht
- io $ moveWindow d w x y
- isFloat :: Window -> X Bool
- isFloat w = do
- fls <- withWindowSet (return . W.floating)
- return (w `M.member` fls)
- specialMove w = do
- focus w
- lst <- currentList
- case lst of
- [] -> return ()
- [x] -> do
- is <- isFloat x
- if is
- then mouseMoveWindow w
- else float x >> unmaximize x
- _ -> mouseMoveWindow w
- ------------------------------------------------------------------------
- -- Взять значение свойства окна
- getProp :: Atom -> Window -> X (Maybe [CLong])
- getProp a w = withDisplay $ \dpy -> io $ getWindowProperty32 dpy a w
- -- Эта функция проверяет, выставлено ли свойство окна name в значение value
- checkAtom name value = ask >>= \w -> liftX $ do
- a <- getAtom name
- val <- getAtom value
- mbr <- getProp a w
- case mbr of
- Just [r] -> return $ elem (fromIntegral r) [val]
- _ -> return False
- -- Эта функция проверяет, является ли окно диалогом ли tear-off меню
- checkDialog = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG"
- checkMenu = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_MENU"
- -- Сделать меню плавающими
- --manageMenus = checkMenu --> doFloat
- -- Сделать диалоги плавающими
- --manageDialogs = checkDialog --> doFloat
- manageMenus=checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_DIALOG" --> doFloat
- manageDialogs = checkAtom "_NET_WM_WINDOW_TYPE" "_NET_WM_WINDOW_TYPE_MENU" --> doFloat
- ------------------------------------------------------------------------
- -- Key bindings. Add, modify or remove key bindings here.
- --
- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
- [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
- --, ((modm .|. controlMask, xK_d), spawn "oowriter")
- , ((modm .|. controlMask, xK_d), spawn "/opt/openoffice.org3/program/swriter")
- , ((shiftMask .|. modm .|. controlMask, xK_d), spawn "abiword")
- --, ((modm .|. controlMask, xK_e), spawn "oocalc")
- , ((modm .|. controlMask, xK_e), spawn "/opt/openoffice.org3/program/scalc")
- , ((shiftMask .|. modm .|. controlMask, xK_e), spawn "gnumeric")
- --, ((modm .|. controlMask, xK_p), spawn "ooimpress")
- , ((modm .|. controlMask, xK_p), spawn "/opt/openoffice.org3/program/simpress")
- , ((shiftMask .|. modm .|. controlMask, xK_p), spawn "lyx")
- , ((modm .|. controlMask, xK_o), spawn "xterm -e /home/AlexYeCu/xnest")
- , ((shiftMask .|. modm .|. controlMask, xK_o), spawn "evolution")
- --, ((mod4Mask, xK_e ), spawn "urxvt")
- , ((mod4Mask, xK_e ), spawn "gnome-terminal")
- , ((shiftMask .|. mod4Mask, xK_e ), spawn "xterm")
- , ((controlMask .|. mod4Mask, xK_e ), spawn "gnome-terminal")
- , ((modm .|. mod4Mask, xK_e ), spawn "xterm")
- , ((mod4Mask, xK_period ), spawn "ellipses")
- , ((mod4Mask, xK_w ), spawn "wacommode")
- , ((mod4Mask, xK_h), spawn "gedit ~/.xmonad/xmonad.hs")
- , ((mod4Mask, xK_a), spawn "gedit ~/bin/autostart")
- , ((mod4Mask, xK_c), spawn "/home/AlexYeCu/bin/clipthis")
- , ((mod4Mask, xK_t), spawn "/home/AlexYeCu/bin/translit")
- ,((mod4Mask, xK_v), spawn "gthumb vi-vim-cheat-sheet.gif")
- ,((mod4Mask, xK_q), spawn "echo $ELLE")
- , ((modm, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
- , ((modm, xK_f ), spawn "exe=`fmenu_path | fmenu` && eval \"exec $exe\"")
- --, ((modm, xK_v ), spawn "exe=`vmenu_path | vmenu` && eval \"exec $exe\"")
- , ((controlMask .|. modm, xK_BackSpace), spawn "sudo killall -9 X")
- , ((modm .|. shiftMask , xK_period), spawn "echo …")
- --XF86Sleep 0x1008ff10
- , ((0, xF86XK_Sleep ), spawn "slock")
- , ((controlMask, xF86XK_Sleep ), spawn "xterm -e /home/AlexYeCu/bin/off")
- --
- , ((0, xK_Print ), spawn "scrot")
- -- launch gmrun
- , ((modm .|. shiftMask, xK_p ), spawn "gmrun")
- , ((modm, xK_r ), spawn "gmrun")
- -- close focused window
- , ((modm .|. shiftMask, xK_c ), kill)
- , ((mod4Mask, xK_z ), kill)
- , ((mod4Mask, xK_x ), spawn "xkill")
- --XF86Mail 0x1008ff19
- , ((shiftMask, 0x1008ff19 ), spawn "opera")
- , ((0, 0x1008ff19 ), spawn "firefox")
- , ((modm, 0x1008ff19 ), spawn "epiphany")
- , ((controlMask, 0x1008ff19 ), spawn "google-chrome")
- , ((mod4Mask, 0x1008ff19 ), spawn "arora")
- -- , ((mod3Mask, 0x1008ff19 ), spawn "konqueror")
- --XF86Home 0x1008ff33
- , ((0, xF86XK_HomePage), spawn "nautilus $HOME")
- --, ((shiftMask, xF86XK_HomePage ), spawn "krusader")
- --, ((mod4Mask, xF86XK_HomePage ), spawn "thunar $HOME")
- --, ((mod4Mask, xF86XK_HomePage ), spawn "gentoo")
- , ((controlMask, xF86XK_HomePage ), spawn "pcmanfm")
- --, ((modm, xF86XK_HomePage ), spawn "dolphin $HOME")
- , ((shiftMask, xF86XK_HomePage ), spawn "gnome-commander")
- --XF86WebCam 0x1008ff8f
- -- , ((0, xF86XK_WebCam), spawn "camx")
- --XF86Favorites 0x1008ff30
- , ((shiftMask, xF86XK_Favorites ), spawn "gogh")
- , ((0, xF86XK_Favorites ), spawn "gcolor2")
- , ((controlMask, xF86XK_Favorites ), spawn "xournal")
- --XF86Search 0x1008ff1b
- , ((0, xF86XK_Search ), spawn "~/bin/mpcpult")
- , ((shiftMask, xF86XK_Search ), spawn "beagle-search")
- , ((controlMask, xF86XK_Search ), spawn "~/bin/websearch")
- --XF86Back 0x1008ff26
- --, ((controlMask .|. shiftMask, xF86XK_Back ), sendMessage $ ToggleGaps) -- toggle all gaps
- , ((shiftMask, xF86XK_Back ), spawn "killall -9 xmobar")
- --, ((controlMask, xF86XK_Back ), sendMessage $ ToggleGap U) -- toggle the top gap
- --, ((modm, xF86XK_Back ), spawn "~/bin/bga")
- --, ((mod4Mask, xF86XK_Back ), spawn "killall xcompmgr | killall cairo-compmgr")
- , ((0, xF86XK_Back ), spawn "~/bin/dvdeject")
- --XF86Forward 0x1008ff27
- --, ((controlMask .|. shiftMask, xF86XK_Forward ), sendMessage ToggleStruts)
- , ((shiftMask, xF86XK_Forward ), spawn "/home/AlexYeCu/.cabal/bin/xmobar")
- --, ((modm, xF86XK_Forward ), spawn "~/bin/bgb")
- , ((0, xF86XK_Forward ), spawn "gmrun")
- --, ((mod4Mask, xF86XK_Forward ), spawn "xcompmgr -cfFS -r 0 -o 0 -D 10 -I 0.1 -O 0.1 &")
- --,((mod4Mask, xF86XK_Forward ), spawn "xcompmgr")
- --,((shiftMask .|. mod4Mask, xF86XK_Forward ), spawn "/usr/local/bin/cairo-compmgr")
- --XF86Stop xK_Cancel 0x1008ff28
- , ((0, xK_Cancel ), spawn "~/bin/camx")
- , ((shiftMask, xK_Cancel ), spawn "~/bin/webcam -p")
- , ((modm, xK_Cancel ), spawn "kill -9 `/usr/sbin/lsof -t /dev/video0`")
- , ((controlMask .|. modm, xK_Cancel ), spawn "v4l2ucp")
- , ((controlMask, xK_Cancel ), spawn "~/bin/camrec -f")
- , ((mod4Mask, xK_Cancel), spawn "~/bin/camrec -j")
- --XF86Refresh 0x1008ff73
- , ((0, xF86XK_Refresh), spawn "tomboy --new-note $(date +%Y-%m-%d_%H:%M:%S)")
- , ((shiftMask, xF86XK_Refresh), spawn "gedit")
- , ((controlMask, xF86XK_Refresh), spawn "gvim")
- , ((mod4Mask, xF86XK_Refresh), spawn "~/bin/clipthis")
- , ((0, xF86XK_Reload), spawn "tomboy --new-note $(date +%Y-%m-%d_%H:%M:%S)")
- , ((shiftMask, xF86XK_Reload), spawn "gedit")
- , ((controlMask, xF86XK_Reload), spawn "gvim")
- , ((mod4Mask, xF86XK_Reload), spawn "~/bin/clipthis")
- --XF86AudioPrev 0x1008ff16
- --, ((0, xF86XK_AudioPrev ), spawn "amarok --previous")
- , ((0, xF86XK_AudioPrev), spawn "mpc prev")
- , ((shiftMask, xF86XK_AudioPrev), spawn "mocp --prev")
- , ((controlMask, xF86XK_AudioPrev), spawn "mpc seek -10%")
- , ((mod4Mask, xF86XK_AudioPrev), spawn "mpc seek -00:00:30")
- --XF86AudioNext 0x1008ff17
- , ((0, xF86XK_AudioNext ), spawn "mpc next")
- , ((shiftMask, xF86XK_AudioNext ), spawn "mocp --next")
- , ((controlMask, xF86XK_AudioNext ), spawn "mpc seek +10%")
- , ((mod4Mask, xF86XK_AudioNext ), spawn "mpc seek +00:00:30")
- --XF86AudioStop 0x1008ff15
- --, ((0, xF86XK_AudioStop), spawn "amarok --stop")
- , ((0, xF86XK_AudioStop), spawn "mocp --stop")
- --XF86Play 0x1008ff14
- , ((0, xF86XK_AudioPlay), spawn "mpc toggle")
- , ((0, xF86XK_AudioPlay), spawn "mpc toggle")
- , ((mod4Mask, xF86XK_AudioPlay), spawn "gmpc")
- , ((shiftMask, xF86XK_AudioPlay), spawn "mocp -G")
- --XF86AudioMute 1008ff12
- , ((0, xF86XK_AudioMute), spawn "amixer -c0 set Master 0% 0%")
- , ((modm, xF86XK_AudioMute), spawn "~/bin/headphones -m")
- -- , ((0, xF86XK_AudioMute), spawn "amixer -c0 set Master toggle")
- , ((controlMask, xF86XK_AudioMute), spawn "amixer -c0 set Mic 0% 0%")
- , ((controlMask .|. shiftMask , xF86XK_AudioMute), spawn "amixer -c7 set Mic 0% 0%")
- , ((shiftMask, xF86XK_AudioMute), spawn "amixer -c0 set Front 0% 0%")
- , ((mod4Mask, xF86XK_AudioMute), spawn "~/bin/mic")
- , ((controlMask .|. mod4Mask, xF86XK_AudioMute), spawn "amixer -c0 set Front 75% 75%")
- --XF86AudioLowerVolume 0x1008ff11
- --, ((0, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Master 5dB-")
- --, ((controlMask, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Mic 5dB-")
- --, ((shiftMask, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Front 5dB-")
- , ((0, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Master 5%-")
- , ((controlMask, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Mic 5%-")
- , ((controlMask .|. shiftMask , xF86XK_AudioLowerVolume), spawn "amixer -c7 set Mic 5%-")
- , ((shiftMask, xF86XK_AudioLowerVolume), spawn "amixer -c0 set Front 5%-")
- , ((modm, xF86XK_AudioLowerVolume), spawn "~/bin/headphones -l")
- --XF86AudioRaiseVolume 0x1008ff13
- --, ((0, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Master 5dB+")
- --, ((controlMask, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Mic 5dB+")
- --, ((shiftMask, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Front 5dB+")
- , ((0, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Master 5%+")
- , ((controlMask, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Mic 5%+")
- , ((controlMask .|. shiftMask , xF86XK_AudioRaiseVolume), spawn "amixer -c7 set Mic 5%+")
- , ((shiftMask, xF86XK_AudioRaiseVolume), spawn "amixer -c0 set Front 5%+")
- , ((modm, xF86XK_AudioRaiseVolume), spawn "~/bin/headphones -h")
- -- Rotate through the available layout algorithms
- , ((modm, xK_space ), sendMessage NextLayout)
- --, ((mod4Mask, xK_space ), sendMessage PreviousLayout)
- -- Reset the layouts on the current workspace to default
- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
- -- Resize viewed windows to the correct size
- , ((modm .|. controlMask, xK_r ), refresh)
- -- Move focus to the next window
- , ((modm, xK_Tab ), windows W.focusDown)
- -- Move focus to the previous window
- , ((mod4Mask, xK_Tab ), windows W.focusUp )
- -- Alt+k n Windows switch
- --[
- -- ((modMask , xK_k), submap . M.fromList $
- -- [((0, k), focusNth i) | (i, k) <- zip [0 .. 8] [xK_1 ..]])
- --]
- --Window navigator
- , ((modm .|. shiftMask, xK_Right), sendMessage $ Go R)
- , ((modm .|. shiftMask, xK_Left ), sendMessage $ Go L)
- , ((modm .|. shiftMask, xK_Up ), sendMessage $ Go U)
- , ((modm .|. shiftMask, xK_Down ), sendMessage $ Go D)
- , ((modm .|. controlMask, xK_Right), sendMessage $ Swap R)
- , ((modm .|. controlMask, xK_Left ), sendMessage $ Swap L)
- , ((modm .|. controlMask, xK_Up ), sendMessage $ Swap U)
- , ((modm .|. controlMask, xK_Down ), sendMessage $ Swap D)
- -- Rotate slaves
- , ((modm .|. shiftMask, xK_Tab ), rotSlavesUp)
- -- Move focus to the master window
- , ((mod4Mask, xK_m ), windows W.focusMaster )
- -- Swap the focused window and the master window
- , ((modm, xK_Return), windows W.swapMaster)
- -- Swap the focused window with the next window
- , ((mod4Mask, xK_Down ), windows W.swapDown )
- -- Swap the focused window with the previous window
- , ((mod4Mask, xK_Up ), windows W.swapUp )
- -- Shrink the master area
- , ((modm, xK_h ), sendMessage Shrink)
- -- Expand the master area
- , ((modm, xK_l ), sendMessage Expand)
- -- Push window back into tiling
- , ((modm, xK_t ), withFocused $ windows . W.sink)
- -- Increment the number of windows in the master area
- , ((modm , xK_comma ), sendMessage (IncMasterN 1))
- -- Deincrement the number of windows in the master area
- , ((modm , xK_period), sendMessage (IncMasterN (-1)))
- -- toggle the status bar gap (used with avoidStruts from Hooks.ManageDocks)
- , ((modm .|. controlMask, xK_b ), sendMessage ToggleStruts)
- , ((modm, xK_d ), sendMessage ToggleStruts)
- --menu max min
- , ((modm, xK_backslash), withFocused (sendMessage . maximizeRestore))
- , ((modm, xK_o ), windowMenu)
- , ((modm, xK_slash ), withFocused (\f -> sendMessage (MinimizeWin f)))
- , ((modm .|. shiftMask, xK_slash ), sendMessage RestoreNextMinimizedWin)
- -- Quit xmonad
- , ((modm .|. shiftMask, xK_f ), io (exitWith ExitSuccess))
- -- Restart xmonad
- , ((modm , xK_q ), restart "xmonad" True)
- , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess))
- --Combinators
- --, ((modm, xK_t ), cycleThroughLayouts ["Tall", "Mirror Tall", "Full"])
- --, ((modm .|. controlMask, xK_f), sendMessage $ JumpToLayout "Full")
- -- ResizebleYile
- , ((modm, xK_a), sendMessage MirrorShrink)
- , ((modm, xK_z), sendMessage MirrorExpand)
- -- MosaicAlt
- , ((modm .|. shiftMask , xK_s ), withFocused (sendMessage . tallWindowAlt))
- , ((modm .|. shiftMask , xK_w ), withFocused (sendMessage . wideWindowAlt))
- , ((modm .|. controlMask, xK_space), sendMessage resetAlt)
- -- MouseResizable
- , ((modm, xK_b), sendMessage ShrinkSlave) -- %! Shrink a slave area
- , ((modm, xK_n), sendMessage ExpandSlave) -- %! Expand a slave area
- -- Gaps
- , ((modm .|. controlMask, xK_g), sendMessage $ ToggleGaps) -- toggle all gaps
- , ((modm .|. controlMask, xK_t), sendMessage $ ToggleGap U) -- toggle the top gap
- --, ((modm .|. controlMask, xK_w), sendMessage $ IncGap R 5) -- increment the right-hand gap
- --, ((modm .|. controlMask, xK_q), sendMessage $ DecGap R 5) -- decrement the right-hand gap
- --prompt
- -- , ((mod4Mask, xK_a ), sendMessage NextLayout >> (dynamicLogString myLogHookD >>= \d->spawn $"xmessage "++d))
- --utils
- --reflect
- , ((modm .|. controlMask, xK_x), sendMessage $ Toggle REFLECTX)
- , ((modm .|. controlMask, xK_y), sendMessage $ Toggle REFLECTY)
- --grid
- , ((modm, xK_g), goToSelected defaultGSConfig)
- , ((modm, xK_e ), viewEmptyWorkspace)
- -- , ((modm .|. shiftMask, xK_e ), tagToEmptyWorkspace)
- ]
- ++
- --E
- -- mod-[1..9], Switch to workspace N
- -- mod-shift-[1..9], Move client to workspace N
- --
- [((m .|. modm, 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 .|. 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)]]
- ------------------------------------------------------------------------
- -- 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 >> windows W.swapMaster))
- ((modMask, button1), specialMove)
- -- 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))
- , ((mod4Mask, button3), (\w -> focus w >> Sqr.mouseResizeWindow w False))
- , ((mod4Mask .|. shiftMask, button3), (\w -> focus w >> Sqr.mouseResizeWindow w True ))
- , ((modMask, button3), (\w -> focus w >> Flex.mouseResizeWindow w))
- -- you may also bind events to the mouse scroll wheel (button4 and button5)
- ]
- -- Window rules:
- -- 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 =? "MPlayer" --> doCenterFloat
- , className =? "Vlc" --> doCenterFloat
- , className =? "Sonata" --> doCenterFloat
- , className =? "Terminal" --> doCenterFloat
- --, className =? "URxvt" --> doCenterFloat
- , className =? "kmplayer" --> doCenterFloat
- , className =? "Search" --> doCenterFloat
- , className =? "VNC Viewer: Connection Options" --> doCenterFloat
- , className =? "VNC Authentication [VncAuth]" --> doCenterFloat
- , className =? "VNC Viewer: Connection Details" --> doCenterFloat
- , className =? "Vnciewer" --> doCenterFloat
- , className =? "Multisync-gui" --> doCenterFloat
- , className =? "Ucview" --> doCenterFloat
- , className =? "V4l2ucp" --> doCenterFloat
- , className =? "Search" --> doCenterFloat
- , className =? "Tomboy" --> doCenterFloat
- , className =? "Gnote" --> doCenterFloat
- , className =? "xclock" --> doFloat
- , className =? "Bluetooth-properties" --> doFloat
- , className =? "Xdialog" --> doFloat
- , className =? "Zenity" --> doFloat
- , className =? "wesnoth" --> doFloat
- , className =? "Gnash" --> doFloat
- , className =? "v4l2-tool" --> doFloat
- , className =? "gcalctool" --> doFloat
- , className =? "org-alchemy-core-Alchemy" --> doFloat
- , className =? "v4l2ucp" --> doFloat
- , className =? "Wine" --> doFloat
- , className =? "Dolphin" --> doFloat
- , className =? "Gogh" --> doFloat
- , className =? "Flash.exe" --> doFloat
- , className =? "Qjackctl" --> doFloat
- , className =? "Gimp" --> doF (W.shift "graph")
- , className =? "Ufraw" --> doF (W.shift "graph")
- , className =? "mypaint" --> doF (W.shift "graph")
- , className =? "XXkb" --> doIgnore
- , className =? "Conky" --> doIgnore
- , className =? "stalonetray" --> doIgnore
- -- , className =? "lxpanel" --> doIgnore
- , className =? "avant-window-navigator" --> doIgnore
- , className =? "Stalonetray" --> doIgnore
- , resource =? "desktop_window" --> doIgnore
- , resource =? "kdesktop" --> doIgnore
- , resource =? "gwenview" --> doFloat
- , resource =? "webcamstudio" --> doFloat
- , resource =? "glxgears" --> doFloat
- , className =? "Sylpheed" --> doF (W.shift "mail")
- , className =? "Sylpheed-claws" --> doF (W.shift "mail")
- , className =? "Kmail" --> doF (W.shift "mail")
- , className =? "Evolution" --> doF (W.shift "mail")
- , className =? "Ekiga" --> doF (W.shift "sip")
- , className =? "Skype" --> doF (W.shift "sip")
- , className =? "Liferea-bin" --> doF (W.shift "www")
- , className =? "Akregator" --> doF (W.shift "www")
- , className =? "Firefox" --> doF (W.shift "www")
- , className =? "Navigator" --> doF (W.shift "www")
- , className =? "RSSOwl" --> doF (W.shift "www")
- , className =? "Pidgin" --> doF (W.shift "im")
- , className =? "OpenOffice.org 3.0" --> doF (W.shift "tab")
- , className =? "Lyx" --> doF (W.shift "tab")
- , className =? "Abiword" --> doF (W.shift "tab")
- , className =? "Gnumeric" --> doF (W.shift "tab")
- , className =? "Emacs" --> doF (W.shift "sys")
- , className =? "Xterm" --> doCenterFloat
- , className =? "Amarok" --> doF (W.shift "media")
- , className =? "Webcamsudio" --> doF (W.shift "sip")
- --, className =? "vlc" --> doF (W.shift "media")
- , className =? "Krusader" --> doF (W.shift "files")
- , className =? "Xnest" --> doF (W.shift "media")
- , className =? "Konqueror" --> doF (W.shift "www")
- , className =? "Bluetooth-sendto" --> doFloat
- , className =? "Gloobus-preview" --> doFloat
- , className =? "CinePaint" --> doFloat
- ]
- myManageHook2 = composeOne
- [ isFullscreen -?> doFullFloat ]
- -- Whether focus follows the mouse pointer.
- --myFocusFollowsMouse :: Bool
- myFocusFollowsMouse = True
- --myFocusFollowsMouse = False
- gimp = withIM (0.16) (Role "gimp-toolbox") $
- reflectHoriz $
- withIM (0.16) (Role "gimp-dock") (maximize(minimize(windowNavigation (OneBig (3/4) (3/4)))))
- myTabConfig = defaultTheme { inactiveBorderColor = "#CCCCCC"
- , activeTextColor = "#000000"
- , decoHeight = 20
- ,fontName = "xft:terminus:size=10"}
- gimpt = withIM (0.16) (Role "gimp-toolbox") $
- reflectHoriz $
- withIM (0.16) (Role "gimp-dock") (noBorders (tabbedAlways shrinkText myTabConfig))
- --skype=withIM (1%4) (Role "MainWindow") (maximize(minimize(windowNavigation ((mosaic 1.5 [])))))
- --skype = withIM (1%4) (Title "nonameandnick - Skype™ (Beta)" ) $
- -- (maximize(minimize(windowNavigation ((mosaic 1.5 [])))))
- skype = withIM (1%4) (Role "buddy_list") $
- (maximize(minimize(windowNavigation ((mosaic 1.5 [])))))
- -----------------------------------------------------------------------
- --myLogHookF :: X ()
- myLogHookD :: X ()
- --myLogHookD = dynamicLog
- myLogHookD = dynamicLogWithPP myPP
- --myLogHookD = dynamicLogWithPP dzen2PP
- --myLogHookF = fadeInactiveLogHook fadeAmount
- --where fadeAmount = 0.8
- myPP = xmobarPP { ppCurrent = xmobarColor "orange" "" . wrap "[" "]"
- --,ppOutput = hPutStrLn h
- --,ppOutput = hPutStrLn xmproc
- , ppLayout = xmobarColor "yellow" "" . wrap "[" "]"
- , ppTitle = xmobarColor "white" "" . shorten 40
- , ppVisible = wrap "(" ")"
- , ppUrgent = xmobarColor "black" "red" . xmobarStrip
- }
- dzen2PP = dzenPP { ppCurrent = dzenColor "white" "#2b4f98" . pad
- , ppVisible = dzenColor "black" "#999999" . pad
- , ppHidden = dzenColor "black" "#cccccc" . pad
- , ppHiddenNoWindows = const ""
- , ppUrgent = dzenColor "red" "yellow" . dzenStrip
- , ppWsSep = ""
- , ppSep = ""
- , ppLayout = dzenColor "black" "#cccccc" .
- (\ x -> case x of
- "TilePrime Horizontal" -> " TTT "
- "TilePrime Vertical" -> " []= "
- "Hinted Full" -> " [ ] "
- _ -> pad x
- )
- , ppTitle = ("^bg(#324c80) " ++) . dzenEscape
- }
- ------------------------------------------------------------------------
- -- Startup hook
- myPlacement = inBounds (underMouse (0, 0))
- myStartupHook = return () >> spawn "/home/AlexYeCu/bin/autostart"
- main=do
- --xmproc <- spawnPipe "/home/AlexYeCu/.cabal/bin/xmobar" "/home/AlexYeCu/.xmobarrc"
- xmonad $ withUrgencyHook NoUrgencyHook $ defaultConfig
- {
- focusFollowsMouse = myFocusFollowsMouse
- , borderWidth = myBorderWidth
- , modMask = myModMask
- , numlockMask = myNumlockMask
- , workspaces = myWorkspaces
- , normalBorderColor = myNormalBorderColor
- , focusedBorderColor = myFocusedBorderColor
- , keys = myKeys
- , mouseBindings = myMouseBindings
- --, logHook = myLogHookD
- , logHook = do
- dynamicLogWithPP $ myPP
- --dynamicLogWithPP $ dzen2PP
- --fadeInactiveLogHook 0.9
- , startupHook = myStartupHook
- , manageHook=myManageHook <+> manageDocks <+> placeHook myPlacement <+> manageMenus <+> manageDialogs <+> myManageHook2
- ,layoutHook= gaps [(U,49), (R,0)] $
- smartBorders $
- --avoidStruts $
- mkToggle (single REFLECTX) $
- --mkToggle (single REFLECTY) $
- onWorkspace "sys" (maximize(minimize(windowNavigation (OneBig (3/4) (3/4) ||| mosaic 1.5 [] ||| ResizableTall 1 (3/100) (1/2) [] ||| StackTile 1 (3/100) (1/2))))) $
- onWorkspace "im" (skype
- ||| withIM (1%4) (Role "buddy_list") (windowNavigation ((OneBig (3/4) (3/4)))) ) $
- onWorkspace "sip" (skype ||| maximize(minimize(windowNavigation (mouseResizableTileMirrored )))) $
- onWorkspace "mail" (maximize(minimize(windowNavigation(mosaic 1.5 [] ||| ResizableTall 1 (3/100) (1/2) [] ||| OneBig (3/4) (3/4))))) $
- onWorkspace "www" (minimize(maximize(centerMaster Grid)) ||| noBorders Full ||| maximize(minimize(windowNavigation(mosaic 1.5 [])))) $
- onWorkspace "tab" ((noBorders (tabbedAlways shrinkText myTabConfig) ||| minimize(maximize(windowNavigation(OneBig (5/6) (4/5))))) ) $
- onWorkspace "graph" (gimp ||| minimize(maximize(windowNavigation(OneBig (5/6) (4/5)))) ||| minimize(maximize(windowNavigation(mouseResizableTile)))) $
- onWorkspace "files" (maximize(minimize(windowNavigation (mosaic 1.5 []) ||| TwoPane (3/100) (1/2) ||| Circle ||| noBorders Full))) $
- onWorkspace "media" (minimize(noBorders Full ||| windowNavigation(minimize(maximize(mosaic 1.5 []))) ||| Circle ||| simplestFloat)) $
- windowNavigation (maximize(minimize(windowNavigation (mosaic 1.5 [])))) ||| maximize(Circle) ||| noBorders Full ||| windowNavigation (OneBig (3/4) (3/4))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement