summaryrefslogtreecommitdiffstats
path: root/EventLoop.hs
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 08:23:08 +0100
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-11-01 08:23:08 +0100
commitb7e7fa2399db8c05fdcf0edf9189dfefaa904cef (patch)
tree76dcbdaf5392f74926cc85e21f0971b8a4e94020 /EventLoop.hs
parentc1dab22936b718b48f98b39befc6af6ce416fbf6 (diff)
downloadmetatile-b7e7fa2399db8c05fdcf0edf9189dfefaa904cef.tar
metatile-b7e7fa2399db8c05fdcf0edf9189dfefaa904cef.zip
Store user configuration in XConf
darcs-hash:20071101072308-a5988-e5a5231e3adcff8f03ebdab37721b19c0e19fc00
Diffstat (limited to 'EventLoop.hs')
-rw-r--r--EventLoop.hs29
1 files changed, 7 insertions, 22 deletions
diff --git a/EventLoop.hs b/EventLoop.hs
index 78e75b7..719edb0 100644
--- a/EventLoop.hs
+++ b/EventLoop.hs
@@ -13,7 +13,7 @@
--
-----------------------------------------------------------------------------
-module EventLoop ( makeMain, XMonadConfig(..) ) where
+module EventLoop (makeMain) where
import Data.Bits
import qualified Data.Map as M
@@ -28,31 +28,17 @@ import Graphics.X11.Xlib hiding (refreshKeyboardMapping)
import Graphics.X11.Xlib.Extras
import Graphics.X11.Xinerama (getScreenInfo)
-import XMonad hiding ( logHook, borderWidth )
-import qualified XMonad ( logHook, borderWidth )
+import XMonad
import StackSet (new, floating, member)
import qualified StackSet as W
import Operations
import System.IO
-data XMonadConfig = forall l. (LayoutClass l Window, Read (l Window)) =>
- XMonadConfig { normalBorderColor :: !String
- , focusedBorderColor :: !String
- , defaultTerminal :: !String
- , layoutHook :: !(l Window)
- , workspaces :: ![String]
- , defaultGaps :: ![(Int,Int,Int,Int)]
- , keys :: !(M.Map (ButtonMask,KeySym) (X ()))
- , mouseBindings :: !(M.Map (ButtonMask, Button) (Window -> X ()))
- , borderWidth :: !Dimension
- , logHook :: !(X ())
- }
-
-- |
-- The main entry point
--
-makeMain :: XMonadConfig -> IO ()
+makeMain :: XConfig -> IO ()
makeMain xmc = do
dpy <- openDisplay ""
let dflt = defaultScreen dpy
@@ -64,7 +50,7 @@ makeMain xmc = do
hSetBuffering stdout NoBuffering
args <- getArgs
- let (layout, lreads) = case xmc of XMonadConfig {layoutHook = lh } -> (Layout lh, \s -> [(Layout (x `asTypeOf` lh), s') | (x, s') <- reads s])
+ let (layout, lreads) = case xmc of XConfig {layoutHook = lh } -> (Layout lh, \s -> [(Layout (x `asTypeOf` lh), s') | (x, s') <- reads s])
initialWinset = new layout (workspaces xmc) $ zipWith SD xinesc gaps
maybeRead reads' s = case reads' s of
@@ -81,8 +67,7 @@ makeMain xmc = do
cf = XConf
{ display = dpy
- , XMonad.logHook = logHook xmc
- , XMonad.borderWidth = borderWidth xmc
+ , config = xmc
, terminal = defaultTerminal xmc
, theRoot = rootw
, normalBorder = nbc
@@ -259,7 +244,7 @@ scan dpy rootw = do
&& (wa_map_state wa == waIsViewable || ic)
-- | Grab the keys back
-grabKeys :: XMonadConfig -> X ()
+grabKeys :: XConfig -> X ()
grabKeys xmc = do
XConf { display = dpy, theRoot = rootw } <- ask
let grab kc m = io $ grabKey dpy kc m rootw True grabModeAsync grabModeAsync
@@ -271,7 +256,7 @@ grabKeys xmc = do
when (kc /= '\0') $ mapM_ (grab kc . (mask .|.)) extraModifiers
-- | XXX comment me
-grabButtons :: XMonadConfig -> X ()
+grabButtons :: XConfig -> X ()
grabButtons xmc = do
XConf { display = dpy, theRoot = rootw } <- ask
let grab button mask = io $ grabButton dpy button mask rootw False buttonPressMask