Comment #1 on issue 543 by byor... at gmail.com: StackSet: non-positive
argument to StackSet.new with mroe monitors than workspaces
http://code.google.com/p/xmonad/issues/detail?id=543
Here's the relevant code from XMonad.StackSet:
-- | /O(n)/. Create a new stackset, of empty stacks, with given tags,
-- with physical screens whose descriptions are given by 'm'. The
-- number of physical screens (@length 'm'@) should be less than or
-- equal to the number of workspace tags. The first workspace in the
-- list will be current.
--
-- Xinerama: Virtual workspaces are assigned to physical screens, starting
at 0.
--
new :: (Integral s) => l -> [i] -> [sd] -> StackSet i l a s sd
new l wids m | not (null wids) && length m <= length wids && not (null m)
= StackSet cur visi unseen M.empty
where (seen,unseen) = L.splitAt (length m) $ map (\i -> Workspace i l
Nothing) wids
(cur:visi) = [ Screen i s sd | (i, s, sd) <- zip3 seen [0..] m ]
-- now zip up visibles with their screen id
new _ _ _ = abort "non-positive argument to StackSet.new"
As you can see the comment even explicitly states the precondition that
there must be more workspaces than screens. Unfortunately a fix for this
is not trivial because of the way we keep track of screens in the StackSet,
where each screen is actually a wrapper around a visible workspace. So if
we don't have enough workspaces we are literally unable to construct the
required Screen objects.
Perhaps changing the definition of Screen to include a Maybe Workspace
would work, though I am not sure what other changes that would require.
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings