importSystem.ExitimportSystem.IOimportXMonadimportXMonad.Actions.DeManageimportXMonad.Actions.SinkAllimportXMonad.Hooks.DynamicLog-- import XMonad.Hooks.EwmhDesktopsimportXMonad.Hooks.ManageDocksimportXMonad.Hooks.ManageHelpersimportXMonad.Layout.LayoutModifierimportXMonad.Layout.NoBordersimportXMonad.Util.DzenimportXMonad.Util.LoggersimportXMonad.Util.RunimportqualifiedXMonad.Actions.FlexibleManipulateasFleximportqualifiedXMonad.StackSetasWimportqualifiedData.MapasMimportXMonad.Actions.CycleWS-- a basic CycleWS setupmyTerminal="urxvtcd"myBorderWidth=1-- modMask lets you specify which modkey you want to use. The default-- is mod1Mask ("left alt"). You may also consider using mod3Mask-- ("right alt"), which does not conflict with emacs keybindings. The-- "windows key" is usually mod4Mask.--myModMask=mod4Mask-- The mask for the numlock key. Numlock status is "masked" from the-- current modifier status, so the keybindings will work with numlock on or-- off. You may need to change this on some systems.---- You can find the numlock modifier by running "xmodmap" and looking for a-- modifier with Num_Lock bound to it:---- > $ 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-- The default number of workspaces (virtual screens) and their names.-- By default we use numeric strings, but any string may be used as a-- workspace name. The number of workspaces is determined by the length-- of this list.---- A tagging example:---- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]--myWorkspaces=["1","2","3","4","5","6","7","8","9"]-- Border colors for unfocused and focused windows, respectively.--myNormalBorderColor="#00ffdd"myFocusedBorderColor="#ff0000"-------------------------------------------------------------------------- Key bindings. Add, modify or remove key bindings here.--myKeysconf@(XConfig{XMonad.modMask=modm})=M.fromList$-- launch a terminal[((modm,xK_Return),spawn$XMonad.terminalconf)-- launch dmenu,((modm,xK_p),spawn"exe=`dmenu_path | dmenu` && eval \"exec $exe\"")-- launch gmrun--, ((modm .|. shiftMask, xK_p ), spawn "gmrun")-- close focused window,((modm.|.shiftMask,xK_c),kill)-- Rotate through the available layout algorithms,((modm,xK_space),sendMessageNextLayout)-- Reset the layouts on the current workspace to default,((modm.|.shiftMask,xK_space),setLayout$XMonad.layoutHookconf)-- Resize viewed windows to the correct size,((modm,xK_n),refresh)-- Move focus to the next window,((modm,xK_Tab),windowsW.focusDown)-- Move focus to the next window,((modm,xK_j),windowsW.focusDown)-- Move focus to the previous window,((modm,xK_k),windowsW.focusUp)-- Move focus to the master window,((modm,xK_m),windowsW.focusMaster)-- Swap the focused window and the master window,((modm.|.shiftMask,xK_Return),windowsW.swapMaster)-- Swap the focused window with the next window,((modm.|.shiftMask,xK_j),windowsW.swapDown)-- Swap the focused window with the previous window,((modm.|.shiftMask,xK_k),windowsW.swapUp)-- Shrink the master area,((modm,xK_h),sendMessageShrink)-- Expand the master area,((modm,xK_l),sendMessageExpand)-- Push window back into tiling,((modm,xK_t),withFocused$windows.W.sink),((modm.|.shiftMask,xK_t),sinkAll)-- Increment the number of windows in the master area,((modm,xK_comma),sendMessage(IncMasterN1))-- 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,xK_b),sendMessageToggleStruts)-- Quit xmonad,((modm.|.shiftMask,xK_q),io(exitWithExitSuccess))-- Restart xmonad,((modm,xK_q),restart"xmonad"True)-- WS stuff,((modm,xK_Right),nextWS),((modm,xK_Left),prevWS),((modm.|.shiftMask,xK_Right),shiftToNext),((modm.|.shiftMask,xK_Left),shiftToPrev),((modm,xK_z),toggleWS)-- test www-- , ((modm, xK_a), XMonad.Util.Dzen.dzen "Hello, variste" (5 `seconds`))-- , ((modm, xK_i), doIgnore))]++---- mod-[1..9], Switch to workspace N-- mod-shift-[1..9], Move client to workspace N--[((m.|.modm,k),windows$fi)|(i,k)<-zip(XMonad.workspacesconf)[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),screenWorkspacesc>>=flipwhenJust(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->focusw>>Flex.mouseWindowFlex.positionw))-- mod-button2, Raise the window to the top of the stack,((modMask,button2),(\w->focusw>>windowsW.swapMaster))-- mod-button3, Set the window to floating mode and resize by dragging,((modMask,button3),(\w->focusw>>Flex.mouseWindowFlex.resizew))-- you may also bind events to the mouse scroll wheel (button4 and button5)]-------------------------------------------------------------------------- Layouts:-- You can specify and transform your layouts by modifying these values.-- If you change layout bindings be sure to use 'mod-shift-space' after-- restarting (with 'mod-q') to reset your layout state to the new-- defaults, as xmonad preserves your old layout settings by default.---- The available layouts. Note that each layout is separated by |||,-- which denotes layout choice.--myLayout=smartBorderstiled|||Mirror(smartBorderstiled)|||noBordersFullwhere-- default tiling algorithm partitions the screen into two panestiled=Tallnmasterdeltaratio-- The default number of windows in the master panenmaster=1-- Default proportion of screen occupied by master paneratio=1/2-- Percent of screen to increment by when resizing panesdelta=3/100-------------------------------------------------------------------------- Window rules:-- Execute arbitrary actions and WindowSet manipulations when managing-- a new window. You can use this to, for example, always float a-- particular program, or have a client always appear on a particular-- workspace.---- 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"-->doFloat,resource=?"stalonetray"-->doIgnore,className=?"Gimp"-->doFloat,resource=?"desktop_window"-->doIgnore,resource=?"kdesktop"-->doIgnore,title=?"Téléchargements"-->doFloat]-- , isFullscreen --> doFullFloat ]<+>manageDocks-- Whether focus follows the mouse pointer.myFocusFollowsMouse::BoolmyFocusFollowsMouse=True-------------------------------------------------------------------------- Status bars and logging-- Perform an arbitrary action on each internal state change or X event.-- See the 'DynamicLog' extension for examples.---- To emulate dwm's status bar---- > logHook = dynamicLogDzen---- myLogHook = ewmhDesktopsLogHooktoggleStrutsKey::XConfigt->M.Map(KeyMask,KeySym)(X())toggleStrutsKeyXConfig{modMask=modm}=M.fromList[((modm,xK_b),sendMessageToggleStruts)]mydzen::(XConfig(ModifiedLayoutAvoidStruts(ChooseTall(Choose(MirrorTall)Full)))->IOt)->IOtmydzenf=doh<-spawnPipe("dzen2"++" "++flags)f$defaultConfig{logHook=dynamicLogWithPPdzenPP{ppOutput=hPutStrLnh},layoutHook=avoidStrutsOn[U](layoutHookdefaultConfig),keys=\c->toggleStrutsKeyc`M.union`keysdefaultConfigc,manageHook=myManageHook<+>manageDocks}wherefg="'#a8a3f7'"-- n.b quotingbg="'#3f3c6d'"flags="-e 'onstart=lower' -w 811 -ta l -fg "++fg++" -bg "++bg-- myLogHook = dynamicLogWithPP dzenPP { ppOutput = hPutStrLn }myLayoutHook=avoidStruts$myLayout--myLayoutHook = ewmhDesktopsLayout $ myLayout-------------------------------------------------------------------------- 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=dospawn"ps -A | grep nm-applet || nm-applet"spawn"ps -A | grep kmix || kmix"spawn"killall time.sh; /home/no/bin/time.sh"spawn"ps -A | grep stalonetray || stalonetray "-------------------------------------------------------------------------------------------------------------------------------------------------- Now run xmonad with all the defaults we set up.-- Run xmonad with the settings you specify. No need to modify this.----main = dzen $ \defaults -> xmonad $ defaultsmain=mydzen$\conf->xmonad$conf{-- defaults = defaultConfig {-- simple stuffterminal=myTerminal,focusFollowsMouse=myFocusFollowsMouse,borderWidth=myBorderWidth,modMask=myModMask,numlockMask=myNumlockMask,workspaces=myWorkspaces,normalBorderColor=myNormalBorderColor,focusedBorderColor=myFocusedBorderColor,-- key bindingskeys=myKeys,mouseBindings=myMouseBindings,-- hooks, layoutslayoutHook=myLayoutHook,-- manageHook = myManageHook,-- logHook = myLogHook,startupHook=myStartupHook}