使用鼠标按钮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矫枉过正了。 也许你已经在键盘绑定中使用了模块的一些功能? 您也可以在鼠标绑定中使用它们。 nextWSprevWSX()类型的,所以你需要使用它们的常量函数,就像上面一样。

链接地址: http://www.djcxy.com/p/82639.html

上一篇: switching workspaces with mouse buttons 6 and 7

下一篇: Json.Net DeserializeObject failing with OData.Delta