fixXinerama :: X ()
fixXinerama = do
  rescreen
  windows $ \wins@(W.StackSet { W.visible = vis, W.hidden = hid }) ->
    let present = fromList $ W.tag <$> W.workspaces wins
        wanted = fromList $ show <$> [1..10]
        missing = toList $ wanted \\ present
        base = W.workspace (W.current wins)
        withTag tag = base { W.tag = tag, W.stack = Nothing }
     in wins { W.hidden = W.hidden wins ++ (withTag <$> missing) }
fixXinerama :: X ()
fixXinerama = do
  rescreen
  windows $ \wins@(W.StackSet { W.visible = vis, W.hidden = hid }) ->
    let present = fromList $ W.tag <$> W.workspaces wins
        wanted = fromList $ show <$> [1..10]
        missing = toList $ wanted \\ present
        base = W.workspace (W.current wins)
        withTag tag = base { W.tag = tag, W.stack = Nothing }
     in wins { W.hidden = W.hidden wins ++ (withTag <$> missing) }
fixXinerama = do
  rescreen
  windows $ \wins@(W.StackSet { W.visible = vis, W.hidden = hid }) ->
    let present = fromList $ W.tag <$> W.workspaces wins
        wanted = fromList $ show <$> [1..10]
        missing = toList $ wanted \\ present
        base = W.workspace (W.current wins)
        withTag tag = base { W.tag = tag, W.stack = Nothing }
     in wins { W.hidden = W.hidden wins ++ (withTag <$> missing) }