Haskell dmenu按键时自动启动

Haskell dmenu按键时自动启动,haskell,xmonad,Haskell,Xmonad,我只是刚开始haskell和xmonad。 我想知道如何配置它,如果没有打开的窗口,任何键输入都会启动dmenu。比如说,如果我有一个空白屏幕并开始键入“firefox”,dmenu将启动,例如在其中包含我的“firefox” 这并不重要,但如果我能找到正确的方向,那就太好了:)这是一个有趣的想法!现在,假设您只想映射“f”键。我想到的方法是将键映射到一个函数,该函数检查是否有打开的窗口。如果没有打开的窗口,它将启动dmenu,用您刚才键入的字符(即“f”)预先填充它。如果有其他窗口打开,它会执

我只是刚开始haskell和xmonad。 我想知道如何配置它,如果没有打开的窗口,任何键输入都会启动dmenu。比如说,如果我有一个空白屏幕并开始键入“firefox”,dmenu将启动,例如在其中包含我的“firefox”


这并不重要,但如果我能找到正确的方向,那就太好了:)

这是一个有趣的想法!现在,假设您只想映射“f”键。我想到的方法是将键映射到一个函数,该函数检查是否有打开的窗口。如果没有打开的窗口,它将启动dmenu,用您刚才键入的字符(即“f”)预先填充它。如果有其他窗口打开,它会执行您通常希望该键执行的任何操作

 main = xmonad $ blah blah blah
             `additionalKeys`
                [
                  ((0, xK_f), multiMapKey f someAction)
                  -- other mappings
                ]


multiMapKey :: Char -> X () -> X ()
multiMapKey c someAction =
  if ?a window is open?
    then launch dmenu with c already entered
    else someAction
注:

  • 我不知道如何确定窗口是否已经打开,但我怀疑您会在xmonad或xmonad contrib包中找到相应的函数
  • 我不知道如何在已键入字符的情况下启动dmenu。也许XMonad.Util.Dmenu中有些东西会有所帮助
  • 我认为您必须在
    additionalKeys
    中为要映射的每个键设置一个单独的条目。也许仅仅映射26个字母键就足够了
  • 要了解更多关于Xmonad内部的信息,我推荐jekor的视频:

    @closevoter Xmonad是用正版haskell编写和配置的。您可以直接对窗口系统进行编程。如果不编写haskell,就无法配置xmonad。这是编程。