Windows Subsystem for Linuxを設定する 2

# 続き
前回の作業のメモはこちら
[Windows Subsystem for Linuxを設定する](https://qiita.com/ShotaroImai/items/4e6b57c8aadf35493786)
今回は日本語入力システムの導入の話。

# デスクトップ環境
前回サラっと触れたがちゃんと言及していなかった。デスクトップ環境はLXDEを選んだ。今後これを詳しく設定するかわからないが、やったこととして書いておく。VcXsrvを起動させておく。

```
sudo apt install xlde
export DISPLAY=:0.0
xpalel --profile LXDE &
```
これでパネルだけ出しておけばランチャーから適宜アプリを起動できる。WSLをコンソールとして使いつづけるなら最後は``$``を入れておく。``--profile LXDE``があるほうがいいのかは不明。

## Windowsのフォントを使う
Windowsのフォントフォルダのシンボリックリンクをfontsディレクトリに貼ってキャッシュクリア

```
sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
sudo fc-cache -fv
```

これでWindowsでつかってるフォントをLinuxでも使える。Windowsに``Ricty``やら``Source Han Sans/Serif``などを導入済みだと楽できる。

# Emacsの導入
Emacs 26など最新版を入れたい場合はレポジトリを追加してからインストールする

```
sudo add-apt-repository ppa:kelleyk/emacs
sudo apt update
sudo apt install emacs26 emacs26-el
```

ちなみにアンインストールしたい場合 ``sudo apt remove --autoremove emacs26 emacs26-nox``
### 参照
[How to Install GNU Emacs 26.1 in Ubuntu 18.04, 16.04, 18.10](http://ubuntuhandbook.org/index.php/2019/02/install-gnu-emacs-26-1-ubuntu-18-04-16-04-18-10/)

# 日本語入力ソフト
~~**未解決問題アリ**~~解決済み
SKKを使いたいのだが、今時のLinuxはどのIMがいいのだろう？昔Linuxを使っていた頃はibusがUbuntuで標準になってきて、fcitxも出てきたころ(そんなに前じゃない)だった。でもイマイチ使いづらくて長く使っていたuimのままだった。Emacsでもuim.elがあるし。今回、ibus-skkやfcitx-skkも試してみたのだが、よくわからず、結局uimにした。

```
sudo apt install uim-skk uim-el
```
ついでにuim.elも入れておく。uimで使える入力システムが一気に入るので、``uim-pref-gtk&``などでskkだけ残してもいい。uim.elはEmacsのパッケージ管理で導入できるかと思ったけど。``melpa``とかにはないんだっけ? uimのgithubで本体とまとめて配布しているからかな。


ひらがな入力が有効になっているときの記号も半角にしたいので、昔やった記憶を掘り起こして``.uim``に以下を書いた。
(解決版に書き換え済み)

```lisp:.uim
(require-module "skk")
(define skk-ja-rk-rule
  (append
    '(
      ((("~") . ()) ("~" "~" "~"))
      ((("!") . ()) ("!" "!" "!"))
      ((("?") . ()) ("?" "?" "?"))
      ((("@") . ()) ("@" "@" "@"))
      ((("#") . ()) ("#" "#" "#"))
      ((("$") . ()) ("$" "$" "$"))
      ((("%") . ()) ("%" "%" "%"))
      ((("^") . ()) ("^" "^" "^"))
      ((("&") . ()) ("&" "&" "&"))
      ((("*") . ()) ("*" "*" "*"))
      ((("(") . ()) ("(" "(" "("))
      (((")") . ()) (")" ")" ")"))
      ((("{") . ()) ("{" "{" "{"))
      ((("}") . ()) ("}" "}" "}"))
      ((("\\") . ()) ("\\" "\\" "\\"))
      ((("+") . ()) ("+" "+" "+"))
      ((("~") . ()) ("~" "~" "~"))
      ((("<") . ()) ("<" "<" "<"))
      (((">") . ()) (">" ">" ">"))
      ((("`") . ()) ("`" "`" "`"))
      ((("'") . ()) ("'" "'" "'"))
      ((("=") . ()) ("=" "=" "="))
      ((("""") . ()) ("""" """" """"))
      ((("_") . ()) ("_" "_" "_"))
      (((";") . ()) (";" ";" ";"))
      (((":") . ()) (":" ":" ":"))

      ((("z" "~")) ("～" "～" "～"))
      ((("z" "!")) ("！" "！" "！"))
      ((("z" "?")) ("？" "？" "？"))
      ((("z" "@")) ("＠" "＠" "＠"))
      ((("z" "#")) ("＃" "＃" "＃"))
      ((("z" "$")) ("＄" "＄" "＄"))
      ((("z" "%")) ("％" "％" "％"))
      ((("z" "^")) ("＾" "＾" "＾"))
      ((("z" "&")) ("＆" "＆" "＆"))
      ((("z" "*")) ("＊" "＊" "＊"))
      ((("z" "(")) ("（" "（" "（"))
      ((("z" ")")) ("）" "）" "）"))
      ((("z" " "). ())("　" "　" "　"))
      )
    skk-ja-rk-rule))

(define uim-pref-suppress-dot-uim-warning-dialog? #t)
```

ついでに、ひらがな入力のときに``Z-SPC``で全角スペースを入れたり、``.uim``がある状態で``uim-pref-*``を開くと注意が出るのが邪魔なので消した。
## ~~未解決~~
~~でもこれは機能していない。最後の注意だけは消せたが、他は相変らず。記号の問題はわりとシリアスなのだが……。~~
解決した。文字コードはEUC-JPで書いてないといけないのだった。ちゃんと作者のGithubのドキュメントは読むべきだ。
ついでに、全角記号を出すための設定も書いておいた。そういえば昔もこれで困ったことがあったのを思い出した。
euc-jpへの変換はemacsを使ってもいい、シェルでやるなら

```bash:
iconv -f UTF-8 -t EUC-JP .uim -o .uim
```
でいいと思う(元がUTF-8である場合)。これをやったらX Window Systemも含めて再起動。
``uim-sh ~/.uim``を実行するとミスがないか教えてくれる。

なお、emacsで``.uim``で開くなら

```lisp:.uim
;; Local Variables:
;; mode: scheme
;; coding: euc-jp
;; End:
```

を末尾に書いておくといいかもしれない。

### 参照
[uimのローマ字変換表の変更-落穂拾い](https://blog.goo.ne.jp/gleaning/e/3a8d178d51829ba3dde6e1ebc6796949)
[Ubuntu で uim-skk の設定 (~/.uim) - Serendip
Web Studio](https://www.serendip.ws/archives/3442)
[CustomizeUim uim/uim-doc-ja - github](https://github.com/uim/uim-doc-ja/wiki/CustomizeUim)
# .bashrc
ここまできたので、一旦.bashrcへの追加分を書いておく。

````bash:.bashrc
export XIM=uim
export XMODIFIERS=@im=uim
export UIM_CANDWIN_PROG=uim-candwin-gtk
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim

export DISPLAY=:0.0
exec fish
````

# Emacs Lisp
~~**未解決問題アリ**~~解決済み
``~/.emacs.d/init.el``をバンバン書いていけばEmacs上で望みの環境が構築できる!
パッケージ管理やらはEmacsに特化した記事を後で投稿することにして、ここで関係しているuimのことだけ書いておく。
当然のように``uim.el``を読むようにしてやればいい。uimのgithubやArchiWikiを読む。

```lisp:init.el
;; read uim.el
(require 'uim)
;; uncomment next and comment out previous to load uim.el on-demand
;(autoload 'uim-mode "uim" nil t)
;; key-binding for activate uim (ex. C-\)
(global-set-key "\C-\\" 'uim-mode)
;; Set UTF-8 as preferred character encoding (default is euc-jp).
(setq uim-lang-code-alist
      (cons '("Japanese" "Japanese" utf-8 "UTF-8")
           (delete (assoc "Japanese" uim-lang-code-alist) 
                   uim-lang-code-alist)))
;インライン変換表示
(setq uim-candidate-display-inline t)
```

## ~~未解決~~
自力解決を記事にしたので参照
[Ubuntu 18.04 (LTS)のemacs26でuim.elをつかう](https://qiita.com/ShotaroImai/items/ac992ee79ce540528b71)

### ~~手動で起動~~
~~これでEmacsが起動したときに自動で``uim-mode``が読みこまれて有効になると思っていたが、手動で起動しないといけないみたい(だからキーバインド残した)？起動するとマイナーモードとしてモードラインに表示される。モードラインの一番左(文字コードの前)に表示されなかったっけ？LEIMで読み込むとこの位置に出てくるが、やっぱり手動で起動しないといけない。~~
### ~~キーバインドがとられる？~~
~~uim-modeが起動していると、Emacsのキーバインドが使えなくなる。ArchWikiだとIMのオン・オフのC-SPCがuimにとられるということを書いているが、全てのキーバインドがとられる。``C-x C-c``のような基本的なものも全て。
ArchWikiには``.Xresources``か``.Xdefaults``に``Emacs*UseXIM: false``を書けとある~~が、まだ試してない~~。→ダメだった~~

### 参照
[UimEl uim/uim-doc-ja - github](https://github.com/uim/uim-doc-ja/wiki/UimEl)
[Uim を使って日本語を入力 - ArchWiki](https://wiki.archlinux.jp/index.php/Uim_を使って日本語を入力)

# 続く
とりあえずこれでEmacsがあたかもWindowsのネイティブアプリであるかのように動く(NTEmacsではなくて)のでハッピー。
次は``.emacs``をガシガシ書いていく(コピペしてるだけが)ことになる。これは別に書く。