2013-07-03 14 views
5

Sadece yeni haskell ve xmonad başlarım var. Bunu nasıl yapılandıracağımı merak ediyordum, böylece herhangi bir pencere açık değilse, herhangi bir anahtar giriş dmenu başlatacaktı. Diyelim ki boş bir ekranım vardı ve "firefox" yazmaya başladıysam dmenu benim "firefox" ile başlatabilirdi.Haskell dmenu tuşa basıldığında otomatik başlatma

Pek önemli ama doğru yönde bazı işaretçiler alabilir :)

+0

@closevoter xmonad hakiki Haskell yapılandırılan (yazılı ve) 'dir. Pencereleme sistemini tam anlamıyla programlıyorsunuz. Haskell yazmadan xmonad'ı yapılandıramazsınız. Programlama. – AndrewC

cevap

2

Bu ilginç bir fikir iyi olurdu! Şimdilik, sadece 'f' anahtarını haritalamak istediğinizi varsayalım. Aklıma gelen yaklaşım, anahtarı herhangi bir pencerenin açık olup olmadığını kontrol eden bir işleve eşlemektir. Eğer bir pencere açılmazsa, yazdığınız karakterle (yani 'f') önceden doldurmak için dmenu başlatır. Eğer başka pencereler açıksa, normalde bu tuşa ne yapmak istersen onu yapar.

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 

Notlar:

  1. Bir pencere zaten açık olup olmadığını öğrenmek için nasıl bilmiyorum, ama xmonad veya xmonad-contrib paketinde bunun için bir işlev bulacaksınız şüpheli .
  2. Yazılmış bir karakterle dmenu nasıl başlatılacağını bilmiyorum. Belki de yardımcı olacak XMonad.Util.Dmenu bir şey var.
  3. Haritalamak istediğiniz her tuş için additionalKeys numaralı telefondan ayrı bir girişiniz olması gerektiğini düşünüyorum. Belki sadece 26 alfabetik anahtarın haritalanması yeterli olacaktır. Xmonad bağırsaklar hakkında daha fazla bilgi edinmek için

, ben jekor Klip tavsiye: part 1part 2

İlgili konular