Haskell dmenu在按键上自动启动

时间:2013-07-03 11:32:26

标签: haskell xmonad

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

非常重要,但如果我能在正确的方向上得到一些指示,那就太好了。)

1 个答案:

答案 0 :(得分:2)

这是一个有趣的想法!目前,我们假设您只想映射'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

注意:

  1. 我不知道如何查看窗口是否已经打开,但我怀疑你会在xmonad或xmonad-contrib包中找到一个函数。
  2. 我不知道如何使用已输入的字符启动dmenu。也许在XMonad.Util.Dmenu中有一些东西可以提供帮助。
  3. 我认为您必须在additionalKeys中为要映射的每个键单独输入一个条目。也许仅仅映射26个字母键就足够了。
  4. 要了解有关Xmonad内脏的更多信息,我建议您使用jekor的视频:part 1 part 2