--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2009/06/17

dzen2 に日本語が出るようになった

xmonad の LogHook から dzen2 に出力するようにしていたのだけど、どうしても化けていた日本語が出るようになった。確認はしてないけど、dzen2 は xft 対応版じゃないとだめかも。

日本語が化けていたときの xmonad.hs はこんな感じだった。

import qualified System.IO.UTF8 as U (hPutStrLn)
(snip)
main = do h <- spawnPipe $ dzen2
          xmonad $ defaultConfig {
                     (snip),
                     logHook = myLogHook h,
                     (snip)
                   }

dzen2 = (snip)
myLogHook = dynamicLogWithPP . myPP
myPP h = defaultPP {
           (snip)
           ppOutput = U.hPutStrLn h
         }

ごちゃごちゃと色々やってるけれど、注目すべきは System.IO.UTF8 モジュールの出力関数を使っているところ。UTF8 の入力を期待している dzen2 に出力したいのだから、当然 utf8-string の出力関数を使おうとする。しかしこれでは dzen2 に出力される文字が化ける。

ではどうするのかというと、普通の IO モジュールを使う。

import IO (hPutStrLn)
(snip)
main = do h <- spawnPipe $ dzen2
          xmonad $ defaultConfig {
                     (snip),
                     logHook = myLogHook h,
                     (snip)
                   }

dzen2 = (snip)
myLogHook = dynamicLogWithPP . myPP
myPP h = defaultPP {
           (snip)
           ppOutput = hPutStrLn h
         }

これでなぜか日本語が出るようになり、カレントウィンドウのタイトルが日本語でも化けることがなくなった。残念ながら、裏付けであるとかが何もない。ghc と xmonad のバージョンは、

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.10.1
$ xmonad --version
xmonad 0.8.1

ちなみに hPutStrLn は XMonad.Util.Run モジュールを import すると、System.IO モジュールのものが一緒に import される。

スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。