This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
xmonad-conf/xmonad.hs

116 lines
3.6 KiB
Haskell
Raw Normal View History

2010-02-13 18:31:17 +01:00
import XMonad
import XMonad.Config.Desktop
import XMonad.Config.Gnome
import XMonad.Actions.CycleWS
import XMonad.Actions.NoBorders
2010-02-16 13:40:28 +01:00
import XMonad.Actions.PhysicalScreens
import XMonad.Actions.Warp
2010-02-13 18:31:17 +01:00
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
2011-02-22 19:40:54 +01:00
import XMonad.Hooks.SetWMName
import XMonad.Layout.ResizableTile
2010-02-13 18:31:17 +01:00
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig
import Control.Monad
import Control.Monad.Trans
2011-02-22 19:40:54 +01:00
import Data.Maybe
2010-02-13 18:31:17 +01:00
import Data.Monoid
2010-02-16 13:40:28 +01:00
import Ratio((%))
2010-02-13 18:31:17 +01:00
2010-08-02 01:43:13 +02:00
--import ConfigurableBorders
2010-02-13 18:31:17 +01:00
import FullscreenManager
import NoBorders
import ProcessWorkspaces
2010-02-13 18:31:17 +01:00
2010-02-18 12:52:34 +01:00
modm = mod4Mask
2010-02-13 18:31:17 +01:00
main = xmonad $ gnomeConfig
2010-02-18 12:52:34 +01:00
{ modMask = modm
2010-02-13 18:31:17 +01:00
, manageHook = myManageHook
, layoutHook = desktopLayoutModifiers myLayoutHook
2011-02-22 19:40:54 +01:00
, startupHook = myStartupHook
, handleEventHook = myEventHook
2010-02-13 18:31:17 +01:00
}
`additionalKeysP`
[ ("M-a", sendMessage MirrorShrink)
, ("M-y", sendMessage MirrorExpand)
, ("M-<Left>", prevWS)
, ("M-<Right>", nextWS)
, ("M-S-<Left>", shiftToPrev)
, ("M-S-<Right>", shiftToNext)
2010-02-13 18:31:17 +01:00
, ("M-S-b", withFocused toggleBorder >> refresh)
, ("M1-<F4>", kill)
2010-02-16 13:40:28 +01:00
, ("M-<F1>", viewOrWarp 0)
, ("M-<F2>", viewOrWarp 1)
, ("M-<F3>", viewOrWarp 2)
, ("M-p", spawnOnCurrent "exe=`dmenu_path | /home/neoraider/bin/dmemu -b` && eval \"exec $exe\"")
2010-02-13 18:31:17 +01:00
]
`additionalMouseBindings`
2010-02-18 12:52:34 +01:00
[ ((modm, button4), \_ -> sendMessage Shrink)
, ((modm, button5), \_ -> sendMessage Expand)
, ((modm .|. shiftMask, button4), \_ -> sendMessage MirrorExpand)
, ((modm .|. shiftMask, button5), \_ -> sendMessage MirrorShrink)
]
2010-02-13 18:31:17 +01:00
2010-02-16 13:40:28 +01:00
viewOrWarp :: Int -> X ()
viewOrWarp n = do
2010-02-18 12:52:34 +01:00
wset <- gets windowset
2010-02-16 13:40:28 +01:00
i <- getScreen $ P n
whenJust i $ \s -> do
ws <- screenWorkspace s
whenJust ws $ \w -> windows . W.view $ w
when (s == (W.screen . W.current $ wset)) $ warpToScreen s (1%2) (1%2)
2010-08-02 01:43:13 +02:00
--myStartupHook :: X ()
--myStartupHook = do
-- startupHook gnomeConfig
-- spawn "killall -u `id -un` -q xcompmgr; exec xcompmgr"
2010-02-13 18:31:17 +01:00
2011-02-22 19:40:54 +01:00
myStartupHook :: X ()
myStartupHook = do
startupHook gnomeConfig
setWMName "LG3D"
2010-02-13 18:31:17 +01:00
myManageHook :: ManageHook
2011-02-23 17:45:27 +01:00
myManageHook = composeAll
[ composeOne
[ isDialog -?> doFloat
2011-02-23 17:45:27 +01:00
, className =? "Guake.py" -?> doFloatMaybeFullscreen -- <+> doConfigBorderOff)
--, className =? "Do" -?> (doFloat <+> doConfigBorderOff)
, className =? "MPlayer" -?> doCenterFloat
, className =? "Gimp" -?> doFloat
, className =? "Display" -?> doFloat
, className =? "Wine" -?> doFloat
, className =? "Pcsx2" -?> doFloat
, stringProperty "WM_ICON_NAME" =? "ZeroGS" -?> doFloat
, isFullscreen -?> doFullscreen
]
, moveWindowHook
2011-02-23 17:45:27 +01:00
, manageHook gnomeConfig
]
2010-02-13 18:31:17 +01:00
myLayoutHook = processWorkspaceStorage $ manageFullscreen $ smartBorders (Full ||| tiled ||| Mirror tiled)
2010-02-13 18:31:17 +01:00
where
-- default tiling algorithm partitions the screen into two panes
tiled = ResizableTall nmaster delta ratio []
2010-02-13 18:31:17 +01:00
-- The default number of windows in the master pane
nmaster = 1
-- Default proportion of screen occupied by master pane
ratio = 3/5
2010-02-13 18:31:17 +01:00
-- Percent of screen to increment by when resizing panes
delta = 3/100
myEventHook :: Event -> X All
myEventHook ev = do
handleFullscreen ev
(handleEventHook gnomeConfig) ev