ubuntu を 16.04 に上げると xmonad のバージョンが 0.12 にあがり,avoidStruts 関数はあるはずなんだけど,私の環境では効かなくなった.
文法ミスを疑い haskell の本を読んだりして勉強したが原因が分からず,結局のところ avoidStruts を使わない方法で解決した.
とりあえず desktopLayoutModifiers を使うだけでできた.
import XMonad.Config.Desktop(desktopLayoutModifiers) main = do { -- 略 , layoutHook = toggleLayouts (noBorders Full) $ desktopLayoutModifiers $ myLayout --, layoutHook = toggleLayouts (noBorders Full) $ avoidStruts $ myLayout } myLayout = (spacing 18 $ ResizableTall 1 (3/100) (3/5) []) ||| (dragPane Vertical (1/10) (1/2)) ||| Full
ドライバをnvidiaのcudaにしたら,また効かなくなった.
その場合,左のワークスペースにウィンドウを開いた状態でAlt+2,Alt+1としてワークスペースを右に持っていってから戻すとステータスバーの分だけスペースをあけてくれるようになった.