mirror of
https://github.com/xmonad/xmonad.git
synced 2025-08-03 05:31:54 -07:00
make layouts preserved over restart
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
module Config where
|
module Config where
|
||||||
import Graphics.X11.Xlib.Types (Dimension)
|
import Graphics.X11.Xlib.Types (Dimension)
|
||||||
import Graphics.X11.Xlib (KeyMask)
|
import Graphics.X11.Xlib (KeyMask,Window)
|
||||||
import XMonad
|
import XMonad
|
||||||
borderWidth :: Dimension
|
borderWidth :: Dimension
|
||||||
logHook :: X ()
|
logHook :: X ()
|
||||||
numlockMask :: KeyMask
|
numlockMask :: KeyMask
|
||||||
workspaces :: [WorkspaceId]
|
workspaces :: [WorkspaceId]
|
||||||
|
defaultLayouts :: [SomeLayout Window]
|
||||||
|
@@ -18,7 +18,7 @@ module Operations where
|
|||||||
|
|
||||||
import XMonad
|
import XMonad
|
||||||
import qualified StackSet as W
|
import qualified StackSet as W
|
||||||
import {-# SOURCE #-} Config (borderWidth,logHook,numlockMask)
|
import {-# SOURCE #-} Config (borderWidth,logHook,numlockMask,defaultLayouts)
|
||||||
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Data.List (nub, (\\), find)
|
import Data.List (nub, (\\), find)
|
||||||
@@ -105,6 +105,12 @@ kill = withDisplay $ \d -> withFocused $ \w -> do
|
|||||||
data UnDoLayout = UnDoLayout deriving ( Typeable, Eq )
|
data UnDoLayout = UnDoLayout deriving ( Typeable, Eq )
|
||||||
instance Message UnDoLayout
|
instance Message UnDoLayout
|
||||||
|
|
||||||
|
instance Read (SomeLayout Window) where
|
||||||
|
readsPrec _ = readLayout defaultLayouts
|
||||||
|
instance Layout SomeLayout Window where
|
||||||
|
doLayout (SomeLayout l) r s = fmap (fmap $ fmap SomeLayout) $ doLayout l r s
|
||||||
|
modifyLayout (SomeLayout l) = fmap (fmap SomeLayout) . modifyLayout l
|
||||||
|
|
||||||
-- | windows. Modify the current window list with a pure function, and refresh
|
-- | windows. Modify the current window list with a pure function, and refresh
|
||||||
windows :: (WindowSet -> WindowSet) -> X ()
|
windows :: (WindowSet -> WindowSet) -> X ()
|
||||||
windows f = do
|
windows f = do
|
||||||
|
@@ -131,10 +131,9 @@ atom_WM_STATE = getAtom "WM_STATE"
|
|||||||
-- returns an updated 'Layout' and the screen is refreshed.
|
-- returns an updated 'Layout' and the screen is refreshed.
|
||||||
--
|
--
|
||||||
data SomeLayout a = forall l. Layout l a => SomeLayout (l a)
|
data SomeLayout a = forall l. Layout l a => SomeLayout (l a)
|
||||||
|
|
||||||
instance Show (SomeLayout a) where
|
instance Show (SomeLayout a) where
|
||||||
show (SomeLayout l) = show l
|
show (SomeLayout l) = show l
|
||||||
instance Read (SomeLayout a) where
|
|
||||||
readsPrec _ _ = [] -- We can't read an existential type!!!
|
|
||||||
|
|
||||||
readLayout :: [SomeLayout a] -> String -> [(SomeLayout a, String)]
|
readLayout :: [SomeLayout a] -> String -> [(SomeLayout a, String)]
|
||||||
readLayout ls s = concatMap rl ls
|
readLayout ls s = concatMap rl ls
|
||||||
@@ -146,10 +145,6 @@ class (Show (layout a), Read (layout a)) => Layout layout a where
|
|||||||
doLayout :: layout a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (layout a))
|
doLayout :: layout a -> Rectangle -> Stack a -> X ([(a, Rectangle)], Maybe (layout a))
|
||||||
modifyLayout :: layout a -> SomeMessage -> X (Maybe (layout a))
|
modifyLayout :: layout a -> SomeMessage -> X (Maybe (layout a))
|
||||||
|
|
||||||
instance Layout SomeLayout a where
|
|
||||||
doLayout (SomeLayout l) r s = fmap (fmap $ fmap SomeLayout) $ doLayout l r s
|
|
||||||
modifyLayout (SomeLayout l) = fmap (fmap SomeLayout) . modifyLayout l
|
|
||||||
|
|
||||||
runLayout :: Layout l a => l a -> Rectangle -> StackOrNot a -> X ([(a, Rectangle)], Maybe (l a))
|
runLayout :: Layout l a => l a -> Rectangle -> StackOrNot a -> X ([(a, Rectangle)], Maybe (l a))
|
||||||
runLayout l r = maybe (return ([], Nothing)) (doLayout l r)
|
runLayout l r = maybe (return ([], Nothing)) (doLayout l r)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user