यह एक दिलचस्प विचार है होता! इस पल के लिए, मान लीजिए कि आप केवल 'एफ' कुंजी को मैप करना चाहते हैं। मेरे दिमाग में आने वाला दृष्टिकोण एक ऐसे फ़ंक्शन को कुंजी मैप करना है जो जांचता है कि कोई खिड़कियां खुली हैं या नहीं। यदि कोई खिड़कियां नहीं खुलती हैं, तो यह डेंमेनू लॉन्च करता है, जिसे आपने अभी टाइप किए गए चरित्र से पहले पॉप्युलेट कर दिया है (यानी, 'एफ')। यदि अन्य खिड़कियां खुली हैं, तो यह वही करता है जो आप सामान्य रूप से करना चाहते हैं।
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
नोट्स:
- मैं पता लगाने के लिए अगर एक खिड़की पहले से खुला है पता नहीं है, लेकिन मैं आपको xmonad या xmonad-योगदान पैकेज में इस के लिए एक समारोह मिल जाएगा पर शक ।
- मुझे नहीं पता कि पहले से टाइप किए गए चरित्र के साथ डेंमेनू कैसे लॉन्च किया जाए। शायद XMonad.Util.Dmenu में कुछ है जो मदद करेगा।
- मुझे लगता है कि आपको प्रत्येक कुंजी के लिए
additionalKeys
में एक अलग प्रविष्टि रखना होगा। शायद 26 वर्णमाला कुंजी मैपिंग पर्याप्त होगा।
Xmonad धर्मशाला के बारे में जानने के लिए, मैं jekor के वीडियो की सिफारिश: part 1part 2
@closevoter xmonad (लिखित और) वास्तविक Haskell में विन्यस्त है। आप सचमुच खिड़की प्रणाली का कार्यक्रम करते हैं। आप हैकेल लिखने के बिना xmonad को कॉन्फ़िगर नहीं कर सकते हैं। यह प्रोग्रामिंग है। – AndrewC