xmobarで日本語dateをフォーマットして表示する方法
xmobar標準のdateを使うと表示はこうなります.

私は英語を理解しないのでSatの意味が分かりません. しばらくそのままこれを表示させて英語の曜日を覚えようと思いましたが無理でした. 日本語にしたい.
実は日本語にすること自体は簡単です.
xmobarにDate
の設定をせずに%date%
を動かせば良いのです.

しかしこれはなんかスペースが多くて領域が勿体ないですね. JSTなのも自分にとっては自明ですし…
と思って設定します.
Run Date "%F %a %T" "date" 10
すると先程のように英語設定で表示されます. なんで…?
そこでDateZoneですね.
xmobarをwith_datezone
フラグ付きでインストールします.
stack install . xmobar --flag xmobar:with_xft --flag xmobar:with_datezone
設定を書きます.
Run DateZone "%F %a %T" "ja_JP.utf8" "Japan" "date" 10
これでOKです.

ちなみに現在の私の.xmobarrc
は以下のようになっています.
Config
{ font = "xft:monospace:antialias=true"
, bgColor = "#002b36"
, fgColor = "#93a1a1"
, position = TopW L 90
, lowerOnStart = False
, commands =
[ Run StdinReader
, Run Cpu [] 100
, Run Memory ["-t", "Mem: <used>M"] 100
, Run Swap ["-t", "Swap: <used>M"] 100
, Run DiskIO [("/", "IO: <read> <write>")] [] 100
, Run DynNetwork ["-t", "Net: <rx>KB|<tx>KB"] 100
, Run ThermalZone 0 ["-t", "Thermal: <temp>°C"] 100
, Run BatteryP ["BAT0"] ["-t", "Bat: <watts> <left>%"] 600
, Run DateZone "%F%a%T" "ja_JP.utf8" "Japan" "date" 10
]
, sepChar = "%"
, alignSep = "{}"
, template = "%StdinReader% {} %cpu%, %memory%, %swap%, %diskio%, %dynnetwork%, %thermal0%, %battery%, %date%"
}
