• 作成:

xmobarで日本語dateをフォーマットして表示する方法

xmobar標準のdateを使うと表示はこうなります.

date

私は英語を理解しないのでSatの意味が分かりません. しばらくそのままこれを表示させて英語の曜日を覚えようと思いましたが無理でした. 日本語にしたい.

実は日本語にすること自体は簡単です.

xmobarにDateの設定をせずに%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です.

日本語フォーマットdate

ちなみに現在の私の.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%"
}
表示はこう