を、それはいいだろうそれは面白いアイデアです!今のところ、 '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
注:
- 私は、ウィンドウが既に開いているかどうかを確認する方法を知りませんが、私はあなたがxmonadまたはxmonad-contribのパッケージでこの機能を見つけることができます疑います。
- すでにタイプされた文字でdmenuを起動する方法がわかりません。たぶんXMonad.Util.Dmenuに役立つものがあります。
- マップするキーごとに
additionalKeys
に別のエントリが必要だと思います。 26文字のアルファベットキーをマッピングするだけで十分でしょう。 Xmonadの内臓についての詳細を学ぶため
、私はjekorさんの動画をお勧めします:part 1part 2
@closevoterのxmonadは(書かれて)本物のHaskellで設定されています。あなたは文字通りウィンドウシステムをプログラムします。あなたはhaskellを書くことなくxmonadを設定することはできません。それはプログラミングです。 – AndrewC