XMonadのManageHook表記順番について
ManageHook は、XMonadの重要な要素の一つで、ウィンドウ毎に 設定をしたり Xモナド のアクションを実行したりするためのもの。
やりたかったこと
条件に一致するウィンドウをFloat化し、レイアウトを調節する。
ポイント: 順序に気をつける
ポイントは、 ManageHookの中身にEndoが使われている ことです。
Endoは、関数のモノイドを提供するためのラッパーで、これは
結合に .
(関数合成)を用います。
(参考: Haskellerのためのモノイド完全ガイド)
これはつまり、二つの ManageHook
a ::ManageHook
/ b ::ManageHook
があった場合、これをモノイドとして結合
(e.g. a <> b
) した
際の実行順序は後ろからかけた方(例の場合は b
)
が先に実行されるということです。
なので、「Float化してからレイアウト調整する」のであれば
先にFloatさせる = 先に doFloat
する
眠いのでちょっとあとでまた整理するかもzzz