2013-07-03 20 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