2013-07-03 18 views
5

我只是刚刚开始的haskell和xmonad。 我想知道如何配置它,以便如果没有窗户打开,任何关键输入将启动dmenu。所以说,如果我有一个空白的屏幕,并开始键入“火狐”,dmenu将启动与我的“火狐”,例如在它内。Haskell dmenu按键自动启动

几乎没有重要的,但是这将是很好,如果我能在正确的方向得到一些指点:)

+0

@closevoter xmonad是(书面和)在真正的哈斯克尔配置。你从字面上编程窗口系统。不能在不编写haskell的情况下配置xmonad。这是编程。 – AndrewC

回答

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个字母键就足够了。

学习更多有关Xmonad内脏,我建议jekor的视频:part 1part 2