2013-07-03 15 views
5

Imはhaskellとxmonadをちょうど開始しています。 私はどのようにウィンドウを開いていなくても、どのキー入力もdmenuを起動するように設定する方法を知りました。だから、もし私が空白の画面を持っていて、 "firefox"と入力し始めたら、dmenuはその中の "firefox"で起動します。ハスケルdmenu自動起動キープレス

ほとんど重要であるが、私は正しい方向にいくつかのポインタを取得することができれば:)

+0

@closevoterのxmonadは(書かれて)本物のHaskellで設定されています。あなたは文字通りウィンドウシステムをプログラムします。あなたは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

関連する問題