moving layouts to Workspace

Hi all, I've been thinking that we'd be better off if the contents of layouts were moved to Workspace, something like data Workspace i l a = Workspace { tag :: !i, layouts :: (l a,[l a]), stack :: StackOrNot a } deriving (Show, Read, Eq) Thus the layout for each workspace would be stored with that workspace. This seems cleaner than the current approach of using a Data.Map.Map to figure out what the layout is for each workspace, since the data type would enforce that a layout exists for each workspace, rather than relying on an invarient that each workspace must have an entry in the map (an invarient I broke while writing DynamicWorkspaces, embarassingly crashing xmonad). This change would be pretty pervasive, and a fair amount of work, so I'm not keen on making it unless there's some sort of consensus that it looks like a good idea. Personally, I think it'll be far more beautiful. There *are* bits of code that'll get trickier (e.g. Operations.broadcastMessage). But in my mind any such complexities are outweighed by the greater modularity, that one can modify a Workspace in isolation--and in a way that doesn't cause xmonad to crash when the workspace ids get out of sync with the contents of the Data.Map layouts. -- David Roundy http://www.darcs.net

On Monday 20 August 2007 20:17:45 David Roundy wrote:
Hi all,
I've been thinking that we'd be better off if the contents of layouts were moved to Workspace, something like
data Workspace i l a = Workspace { tag :: !i, layouts :: (l a,[l a]), stack :: StackOrNot a } deriving (Show, Read, Eq)
Thus the layout for each workspace would be stored with that workspace. This seems cleaner than the current approach of using a Data.Map.Map to figure out what the layout is for each workspace, since the data type would enforce that a layout exists for each workspace, rather than relying on an invarient that each workspace must have an entry in the map (an invarient I broke while writing DynamicWorkspaces, embarassingly crashing xmonad).
This change would be pretty . We just need to think of a way to serialize layouts first (another thing that should happen for 0.4). like a good idea. Personally, I think it'll be far more beautiful. There *are* bits of code that'll get trickier (e.g. Operations.broadcastMessage). But in my mind any such complexities are outweighed by the greater modularity, that one can modify a Workspace in isolation--and in a way that doesn't cause xmonad to crash when the workspace ids get out of sync with the contents of the Data.Map layouts.
Yes, we should do this for 0.4. We need to figure out how to serialize layouts first (which is another thing that should happen for 0.4). Cheers, Spencer Janssen
participants (2)
-
David Roundy
-
Spencer Janssen