XMonadのcontribパッケージを見るとXMonad.Actions.WindowGo、次の関数をエクスポートするが見つかります。
runOrRaiseMaster :: String -> Query Bool -> X ()
これは実行するプログラムの文字列引数を取ります、例えば "firefox"; X11プロパティなどを介して、すでに実行されているかどうかを確認するために使用されるブールクエリ(className =? "Firefox")(バリアントについては、XMonad.Actions.WindowGoページの上部を参照)。
したがって、必要なのはrunOrRaiseMaster "firefox" (className =? "Firefox")、で説明されXMonad.Doc.Extendingているように、必要なキーにバインドすることだけです。
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
Data.Map設定のキーバインディングの一部として(詳細は設定方法によって異なります。つまり、全体です。キーバインディングの追加をxmonad.hs参照してください)。
XMonadでウィンドウを最大化することに本当の意味がないことに注意してください。説明したように、あなたが物事を設定するときは、必要がありますMod4+ f次のように行為を:
- クラス名のマッチング「のFirefox」とウィンドウがありますならば、それは中心に説明し、マスタに設定され、すなわち、最近に応じたレイアウトになります大きな窓
- 窓なしの一致した場合、Firefoxはされ生成されたと主人に設定します。
ここで説明するFullようにrunOrRaiseMaster、呼び出し後にレイアウトを選択することにより、最大化をエミュレートできます。
("M-<F1>", sendMessage $ JumpToLayout "Full")
(この例はXMonad.Util.EZConfig、キーバインド定義を簡単にすることも示していることに注意してください)
これら2つを組み合わせることも可能です。どちらもタイプですX ()。つまり、Xモナドにあります。用いた>>タイプのものである、(に確認:t (>>)中ghci)
(>>) :: Monad m => m a -> m b -> m b
我々は持っている(runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")二つの組み合わせとして、X ()タイプの種類X ()も、それはこのようにキーにバインドすることができます。
EDIT )コード行に欠落している>>
Edit2- modm > modMask。
Edit3 これはxmonad.hsうまくいけばうまくいきます。
(なぜあなたのためにHaskellを学んでみませんか?)