使用鼠标按钮6和7切换工作区
我希望能够使用鼠标上的按钮6和7(车轮两侧的摇臂按钮)移动到上一个和下一个工作区。 我猜它是与additionalMouseBindings
,如果随后的相同的模式additionalKeys
我会金。 唉,它不是,我不完全理解如何定义一个新的绑定。 天真:
`additionalMouseBindings`
[ -- get the middle button to switch views
((0, button6), spawn "xdotool key super+Down")
, ((0, button7), spawn "xdotool key super+Up")
]
没有工作,原因对于知道Haskell和xmonad的人来说是显而易见的。
TIA提供任何建议。
通过“不起作用”,我想你的意思是它不能编译。
在@chi评论之后,我检查了按钮:button6和7没有定义,所以这是第一个问题。 但根据这篇文章,额外的按钮工作,如果你只是给他们的号码。
看起来您正在使用XMonad.Util.EZConfig模块中的additionalMouseBindings
函数。 它的类型是:
additionalMouseBindings :: XConfig a -> [((ButtonMask, Button), Window -> X ())] -> XConfig a
你用反引号把它变成一个操作员。 这里没有显示类型为XConfig a
的第一个操作数,所以在这里可能会出现第一个错误。 你应该有一些形式:
yourPreviousConfig `additionalMouseBindings` listOfBindings
该表达式等于您的新XConfig。
您可以看到,鼠标按钮的绑定列表与键的类型不同。 列表元素的类型为((ButtonMask, Button), Window -> X ())
:按钮与一个接受Window
并返回X()
的函数关联(而键则与X()
)。 XMonad将以点击的窗口作为参数调用您在此处指定的函数。 你不关心你的情况下的窗口。 spawn "xdotool key super+Down"
是X ()
类型的,你可以通过创建一个lambda函数来将它变成一个接受Window
(或其他)的函数:
((0, 6), w -> spawn "xdotool key super+Down")
或者你可以使用const
来获得一个总是返回spawn "xdotool key super+Down"
的常量函数:
((0, 6), const $ spawn "xdotool key super+Down")
最后,调用xdotool
切换工作区似乎确实xdotool
矫枉过正了。 也许你已经在键盘绑定中使用了模块的一些功能? 您也可以在鼠标绑定中使用它们。 nextWS
和prevWS
是X()
类型的,所以你需要使用它们的常量函数,就像上面一样。