Update keybinding.
-- Import statements
import XMonad
-- import XMonad.Config.Gnome
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.Place
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.UrgencyHook
import XMonad.Config.Gnome
import XMonad.Util.Run
import XMonad.Util.EZConfig
import XMonad.Actions.CycleWS
import XMonad.Actions.Promote
import XMonad.Actions.RotSlaves
import qualified XMonad.StackSet as S
import System.IO
import XMonad.Layout.NoBorders
import XMonad.Layout.Tabbed
import XMonad.Layout.Spiral
import XMonad.Layout.MosaicAlt
import XMonad.Layout.ThreeColumns
import qualified Data.Map as M
import System.Exit
-- defines
myModMask = mod4Mask -- Windows key
myTerminal = "x-terminal-emulator"
myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
upperRowKeys = [ xK_quotedbl,
xK_guillemotleft,
xK_guillemotright,
xK_parenleft,
xK_parenright,
xK_at,
xK_plus,
xK_minus,
xK_slash,
xK_asterisk ]
numberOfWS = 4
myWSKeys = [ ((m .|. myModMask, k), windows $ f i)
| (i, k) <- take numberOfWS (zip myWorkspaces upperRowKeys),
(f, m) <- [(S.greedyView, 0), (S.shift, shiftMask)]]
-- X Y W H
myDefaultDialogSize = S.RationalRect (1/4) (1/4) (1/2) (1/2)
myKeys = [
((myModMask .|. shiftMask, xK_Return ), spawn $ myTerminal),
((myModMask, xK_m ), windows S.focusMaster ),
((myModMask .|. shiftMask, xK_m ), promote ),
((myModMask .|. shiftMask, xK_Tab ), rotAllUp ),
((myModMask , xK_space ), sendMessage NextLayout),
((myModMask, xK_q ), kill),
((myModMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)),
((myModMask .|. shiftMask, xK_r ), spawn "xmonad --recompile && xmonad --restart"),
(( 0, xK_Print ), spawn "gnome-screenshot -i"),
((myModMask, xK_b ), sendMessage ToggleStruts),
-- S.
((myModMask, xK_d ), withFocused $ windows . (`S.float` myDefaultDialogSize)),
((myModMask .|. shiftMask, xK_d ), withFocused $ windows . S.sink),
-- ((myModMask .|. shiftMask, xK_b ), sendMessage (SetStruts [D] [])),
-- Vi-like bindings for modifying layout
((myModMask, xK_t ), windows S.focusDown ),
((myModMask, xK_s ), windows S.focusUp ),
((myModMask .|. shiftMask , xK_t ), windows S.swapDown ),
((myModMask .|. shiftMask , xK_s ), windows S.swapUp ),
((myModMask .|. controlMask, xK_t ), sendMessage Shrink ),
((myModMask .|. controlMask, xK_s ), sendMessage Expand ),
((myModMask .|. shiftMask , xK_n ), sendMessage (IncMasterN (1))),
((myModMask , xK_n ), sendMessage (IncMasterN (-1)))
] ++ myWSKeys
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
golden :: Int -> Rational
golden n = toRational (fib n) / toRational (fib (n-1))
myLayouts = tall ||| threeCol ||| Mirror tall ||| threeCol ||| mosaic ||| simpleTabbed ||| Full
where
mosaic = MosaicAlt M.empty
mySpiral = spiral ratio
tall = Tall nmaster delta ratio
threeCol = ThreeCol nmaster delta ratio
nmaster = 2
delta = 3/100
ratio = 2/3
fadingHook = fadeInactiveLogHook fadeAmount
where fadeAmount = 0.7
-- Run
main = do
xmproc <- spawnPipe "xmobar"
xmonad
$ withUrgencyHook dzenUrgencyHook { args = ["-bg", "darkgreen", "-xs", "1"] }
$ ewmh
$ gnomeConfig {
terminal = myTerminal,
borderWidth = 0,
focusFollowsMouse = False,
workspaces = take numberOfWS myWorkspaces,
manageHook = manageDocks <+>
placeHook (smart (0.5, 0.5)) <+>
manageHook defaultConfig,
layoutHook = avoidStruts $ myLayouts,
logHook = fadingHook >> dynamicLogWithPP xmobarPP {
ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor "green" "" . shorten 50
},
modMask = myModMask -- windows key
} `removeKeys` [
(myModMask, xK_Return)
] `additionalKeys` myKeys