2013-07-03 10 views
5

पर Haskell dmenu स्वचालित लॉन्च केवल Imkell और xmonad शुरू करें। मैं सोच रहा था कि कोई इसे कैसे कॉन्फ़िगर करेगा ताकि अगर कोई खिड़कियां खुलती नहीं हैं, तो कोई भी महत्वपूर्ण इनपुट डेंमेन लॉन्च करेगा। तो कहें कि मेरे पास एक खाली स्क्रीन थी और "फ़ायरफ़ॉक्स" टाइप करना शुरू किया, तो डेंमेनू मेरे "फ़ायरफ़ॉक्स" के साथ लॉन्च होगा उदाहरण के लिए।कुंजी प्रेस

शायद ही महत्वपूर्ण है, लेकिन यह अच्छा नहीं है अगर मैं सही दिशा में कुछ संकेत दिए मिल सकता है :)

+0

@closevoter xmonad (लिखित और) वास्तविक Haskell में विन्यस्त है। आप सचमुच खिड़की प्रणाली का कार्यक्रम करते हैं। आप हैकेल लिखने के बिना xmonad को कॉन्फ़िगर नहीं कर सकते हैं। यह प्रोग्रामिंग है। – AndrewC

उत्तर

2

यह एक दिलचस्प विचार है होता! इस पल के लिए, मान लीजिए कि आप केवल 'एफ' कुंजी को मैप करना चाहते हैं। मेरे दिमाग में आने वाला दृष्टिकोण एक ऐसे फ़ंक्शन को कुंजी मैप करना है जो जांचता है कि कोई खिड़कियां खुली हैं या नहीं। यदि कोई खिड़कियां नहीं खुलती हैं, तो यह डेंमेनू लॉन्च करता है, जिसे आपने अभी टाइप किए गए चरित्र से पहले पॉप्युलेट कर दिया है (यानी, 'एफ')। यदि अन्य खिड़कियां खुली हैं, तो यह वही करता है जो आप सामान्य रूप से करना चाहते हैं।

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-योगदान पैकेज में इस के लिए एक समारोह मिल जाएगा पर शक ।
  2. मुझे नहीं पता कि पहले से टाइप किए गए चरित्र के साथ डेंमेनू कैसे लॉन्च किया जाए। शायद XMonad.Util.Dmenu में कुछ है जो मदद करेगा।
  3. मुझे लगता है कि आपको प्रत्येक कुंजी के लिए additionalKeys में एक अलग प्रविष्टि रखना होगा। शायद 26 वर्णमाला कुंजी मैपिंग पर्याप्त होगा।

Xmonad धर्मशाला के बारे में जानने के लिए, मैं jekor के वीडियो की सिफारिश: part 1part 2

संबंधित मुद्दे