问题
I can change the names of workspaces, and presumably simply add more by changing this conststant:
myWorkspaces = ["1","2","3⌂","4","5","6","7✉","8☺","9♫"]
If I add something to the array, there will be more workspaces, but how do I keybind them? Mod-1 through Mod-9 are the default but I can't find documentation for how to change that default.
回答1:
I found the answer buried in this example configuration and together with the key names list, it looks like the following:
Defining a tenth workspace:
myExtraWorkspaces = [(xK_0, "0"),(xK_minus, "tmp"),(xK_equal, "swap")]
myWorkspaces = ["1","2","3⌂","4","5","6","7✉","8☺","9♫"] ++ (map snd myExtraWorkspaces)
Then the key binding looks like this:
myKeys =
[ -- ... some more keys ...
] ++ [
((myModMask, key), (windows $ W.greedyView ws))
| (key,ws) <- myExtraWorkspaces
] ++ [
((myModMask .|. shiftMask, key), (windows $ W.shift ws))
| (key,ws) <- myExtraWorkspaces
]
In this example the slash key is used, but any other key from the list above can be used instead.
And finally:
main = do
xmonad $ config {
workspaces = myWorkspaces
} `additionalKeys` (myKeys)
回答2:
Another way is dynamic workspaces. Add
import XMonad.Actions.DynamicWorkspaces
import XMonad.Actions.CopyWindow(copy)
to your xmonad.hs
file and add
, ((modm, xK_v), selectWorkspace myXPConfig)
to the keybindings in that file. Then pressing mod+v lets you switch to a workspace by name or create it if it doesn't exist.
回答3:
-- | The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length
-- of this list.
--
-- A tagging example:
--
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
--
workspaces :: [WorkspaceId]
workspaces = map show [1 .. 9 :: Int]
Modify the length of the list in Config.hs
来源:https://stackoverflow.com/questions/27742421/how-can-i-have-more-than-9-workspaces-in-xmonad