summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSpencer Janssen <sjanssen@cse.unl.edu>2007-10-05 02:00:31 +0200
committerSpencer Janssen <sjanssen@cse.unl.edu>2007-10-05 02:00:31 +0200
commitfef4121478dee22f87f010dff820b3f5aa195c44 (patch)
treec5a350a84c25f3199b7aceccf8b7534de7e69047
parentfb60d205050cf17ce4778e1279ea8fdb8ae57ef3 (diff)
downloadmetatile-fef4121478dee22f87f010dff820b3f5aa195c44.tar
metatile-fef4121478dee22f87f010dff820b3f5aa195c44.zip
Make WindowSet serialization robust to layout changes
darcs-hash:20071005000031-a5988-c8ab82b01a70dc7526fa64c71edc7673dbfab4db
-rw-r--r--Main.hs13
-rw-r--r--XMonad.hs3
2 files changed, 12 insertions, 4 deletions
diff --git a/Main.hs b/Main.hs
index 414a283..a149d34 100644
--- a/Main.hs
+++ b/Main.hs
@@ -52,9 +52,16 @@ main = do
let initialWinset = new defaultLayout workspaces $ zipWith SD xinesc gaps
- winset | ("--resume" : s : _) <- args
- , [(x, "")] <- reads s = W.ensureTags defaultLayout workspaces x
- | otherwise = initialWinset
+ maybeRead s = case reads s of
+ [(x, "")] -> Just x
+ _ -> Nothing
+
+ winset = fromMaybe initialWinset $ do
+ ("--resume" : s : _) <- return args
+ ws <- maybeRead s
+ return . W.ensureTags defaultLayout workspaces
+ $ W.mapLayout (fromMaybe defaultLayout . maybeRead) ws
+
gaps = take (length xinesc) $ defaultGaps ++ repeat (0,0,0,0)
cf = XConf
diff --git a/XMonad.hs b/XMonad.hs
index 818586f..48f49ca 100644
--- a/XMonad.hs
+++ b/XMonad.hs
@@ -218,8 +218,9 @@ spawn x = io $ do
restart :: Maybe String -> Bool -> X ()
restart mprog resume = do
prog <- maybe (io getProgName) return mprog
- args <- if resume then gets (("--resume":) . return . show . windowset) else return []
+ args <- if resume then gets (("--resume":) . return . showWs . windowset) else return []
catchIO (executeFile prog True args Nothing)
+ where showWs = show . mapLayout show
-- | Run a side effecting action with the current workspace. Like 'when' but
whenJust :: Maybe a -> (a -> X ()) -> X ()