Manjaro on WSL で Agda を書こうとしたら特殊文字の文字化けに苦しめられた件

TL ; DR

  • 使う理由があり WSL で Manjaroを入れた
  • Manjaro on WSL で Agda を書こうとしたら特殊文字で文字化けが発生した
  • 最終的にここの日本語フォントを読み込むのとロケールを日本語にするので解決

Windows の環境は全部WSLで何とかしたい

大学に入ってからはずっと macOSLinux を使っていたので、Windowsのシステムと相容れなくなってしまった。

素のWindowsでプログラミングはあまりしたくないお気持ちが強く、ずっとWSLで完結するようにしていた。

(Windowsだけでプログラミングして、Gitにまで上げてる人は普段何食べてるんだろう…僕の不足した技術力では想像すらつかない…)

唐突にWSLgで研究環境を構築したい欲が!

おととし(2021年)くらいからWSLでもGUIアプリケーションを使えることは小耳に挟んでいた。が、素の Manjaro Linux で今のところ全部やっちゃってるし、今のところはいいかな…と思っていた。

そんな矢先、修論の締め切りが近づくとさすがに「家でも研究のコーディングや執筆とかすすめられたらな…」と思うことが多くなった。(筆者の愛用している Manjaro Linux が入ってる PC は研究室にあり、研究室には昼から朝までいる事ことがよくある。そして研究できる環境は研究室にしかないぞ!)

最初は Windows ラップトップにUSBを付けて、そこに Manjaro をインストールして使っていた。が、Windows OS と行き来するのが煩雑という問題を抱えた。

じゃあWSLでやればいいじゃん!(ということで環境構築していく)

この問題を解決するために、今はWSLgがあるんだし WSL で manjaro を動かして、開発環境(Agda on Spacemacs)を整えようと思った。(Agdaには後述もするが、特殊文字を多用する性質上GUIでやった方が楽)

まずはWSLにManjaroを入れるところから

とても簡単。以下のリポジトリのREADME通りにやればよいだけ github.com (こんなに簡単なら最初からやっておけばよかったな…と思ったのは内緒)

無事にManjaroが入ったなら次はAgdaのインストールだ

Manjaro だと普通に pacmanAgda 各種はインストールできる。 (pacman-mirrors -c Japanとかで早い順でミラーリポジトリをソートしたり、このタイミングで /etc/pacman.conf でパッケージのダウンロードを並列化すると幸せになれる)

sudo pacman -S agda agda-stdlib emacs

そのあとはspacemacsをインストールする

www.spacemacs.org

一応emacsを立ち上げてみると、GUIでspacemacsが立ち上がると思う。(この際、初期設定とインストールが挟まる。)

その後、emacsemacs-agda-modeを入れるためにagda-mode setupを実行する。一瞬emacsが立ち上がったと思ったら消えたらだいたい成功してる。

そしたら以下のコマンドを入れてStanderd libraryの設定を完了する。(standard-library.agda-libの場所はmacとかだと違うので要注意)

mkdir -p ~/.agda
echo /usr/share/agda/lib/standard-library.agda-lib >>~/.agda/libraries
echo standard-library >>~/.agda/defaults

ちゃんと入ってるかの確認は test.agda を spacemacs で新規作成して以下を書いて C-c l するとわかる。 (C-c lの指の動きはコントロールキーを押しながらcキーを押す。その後押しているキーは離してlキーを押す)

module test where

open import Data.Nat

文字化けの解消(問題はここからだった…)

書いていたagdaファイルを開いたところ、日本語が文字化けしていた。 あーじゃあ sudo pacman -S otf-ipafont の実行で直るのでは?->結果、日本語は表示されるようになったが、Agda 上で使用している特殊文字は文字化けしたままだった。

四角の中に数字が入っている僕が見たことない文字の化け方をしていて、色々試してみた結果、Win11のWSL2 (WSLg)を日本語化 & Mozcで日本語入力 | AsTechLog

Windows側にインストールされているフォントをWSL2側でも参照する...

とあり、これとその下にあるロケールの日本語化で特殊文字も正常に表示されるようになった。 こんな方法わかるなんて元記事の人は天才かもしれないな…

いかがでしたか?

これでWindowsのWSL環境で立ち上げたManjaroでWSLgを使ってspacemacsにてAgdaを書くことができるようになったぞ!

それでは良きAgdaライフを!

余談

最近なぜかvimモードでもhybridモードでもemacs-agda-modeが動かない…(しかたなくemacsモードにしている)

参考文献

astherier.com

www.inohome.net

(下の方で万事解決~と慢心していたら案の定特殊文字が文字化けして足元を掬われた)

(特殊文字なんか使わないよ、という方には下の解決法で事足りるかもしれない…)