• 作成:

xmonadでxmobarなどに表示されるウィンドウタイトルがかなり短く省略されてしまうことの対策

問題

4Kディスプレイを買ってから気がついたのですが,xmonadが表示するウィンドウタイトルはかなり短く省略されてしまいます.

短く省略されている図
短く省略されている図

せっかく大きなディスプレイを買ったのにタイトルが省略されているのは勿体無い!

特にFirefoxのwebページのタイトルは長いのが多いですし,Emacsのマイナーモード群は下のステータスバーではウィンドウ分割されると読めなくなるので余ってる領域で全部閲覧したい.

ということで何故省略されているのか調べて解決させました.

原因

xmonadやxmonad-contribやxmobarのソースコードを読んで,原因はxmonad-contribにあることがわかりました.

私のxmobar周りの設定は以下のようになっています.

main :: IO ()
main = statusBar "xmobar" myPP (\XConfig{modMask} -> (modMask, xK_u)) myConfig >>= xmonad

myPP :: PP
myPP = def
  { ppCurrent = wrap "[" "]"
  , ppVisible = wrap "(" ")"
  , ppSep = ":"
  , ppWsSep = ""
  }

ここでXMonad.Hooks.DynamicLogPPdefの実装が問題で,

ppTitle           = shorten 80

となっています.つまり80文字に省略されるわけですね.

解決

myPPppTitleidにすることで解決しました.

myPP :: PP
myPP = def
  { ppCurrent = wrap "[" "]"
  , ppVisible = wrap "(" ")"
  , ppSep = ":"
  , ppWsSep = ""
  , ppTitle = id
  }