Haskell 在xmonad中,我怎么可能有9个以上的工作区?

Haskell 在xmonad中,我怎么可能有9个以上的工作区?,haskell,desktop,xmonad,Haskell,Desktop,Xmonad,我可以更改工作区的名称,并可以通过更改此常量简单地添加更多内容: myWorkspaces = ["1","2","3⌂","4","5","6","7✉","8☺","9♫"] 如果我向数组中添加了一些内容,将会有更多的工作空间,但是如何对它们进行键绑定呢?Mod-1到Mod-9是默认值,但我找不到如何更改默认值的文档 -- | The default number of workspaces (virtual screens) and their names. -- By default

我可以更改工作区的名称,并可以通过更改此常量简单地添加更多内容:

myWorkspaces = ["1","2","3⌂","4","5","6","7✉","8☺","9♫"]
如果我向数组中添加了一些内容,将会有更多的工作空间,但是如何对它们进行键绑定呢?Mod-1到Mod-9是默认值,但我找不到如何更改默认值的文档

-- | 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]

修改Config.hs中列表的长度

我发现答案隐藏在

定义第十个工作区:

myExtraWorkspaces = [(xK_0, "0"),(xK_minus, "tmp"),(xK_equal, "swap")]

myWorkspaces = ["1","2","3⌂","4","5","6","7✉","8☺","9♫"] ++ (map snd myExtraWorkspaces)
然后密钥绑定如下所示:

myKeys = 
      [ -- ... some more keys ...
      ] ++ [
        ((myModMask, key), (windows $ W.greedyView ws))
        | (key,ws) <- myExtraWorkspaces
      ] ++ [
        ((myModMask .|. shiftMask, key), (windows $ W.shift ws))
        | (key,ws) <- myExtraWorkspaces
      ]
另一种方法是。 加

添加到
xmonad.hs
文件并添加

, ((modm, xK_v), selectWorkspace myXPConfig)
到该文件中的键绑定。
然后按mod+v可以按名称切换到工作区,如果工作区不存在,则可以创建工作区。

@AndrewC:不,它不是从字符串生成的。我可以说“foo”而不是“1”,这只会影响显示为工作区名称的内容。请注意,我使用Unicode字符来描述某些工作区的专用功能。谢谢!为了让您的示例正常工作,我还需要
将合格的XMonad.StackSet导入为W
,并且必须将
myModMask
的两个匹配项都替换为
modm
。我不确定在哪里定义了
modm
,但它与其他键绑定中使用的模式相匹配。
import XMonad.Actions.DynamicWorkspaces
import XMonad.Actions.CopyWindow(copy)
, ((modm, xK_v), selectWorkspace myXPConfig)