Help us understand the problem. What is going on with this article?

Windows Subsystem for Linuxを設定する 2

続き

前回の作業のメモはこちら
Windows Subsystem for Linuxを設定する
今回は日本語入力システムの導入の話。

デスクトップ環境

前回サラっと触れたがちゃんと言及していなかった。デスクトップ環境は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

日本語入力ソフト

未解決問題アリ解決済み
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に以下を書いた。
(解決版に書き換え済み)

.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を使ってもいい、シェルでやるなら

iconv -f UTF-8 -t EUC-JP .uim -o .uim

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

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

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

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

参照

uimのローマ字変換表の変更-落穂拾い
Ubuntu で uim-skk の設定 (~/.uim) - Serendip
Web Studio

CustomizeUim uim/uim-doc-ja - github

.bashrc

ここまできたので、一旦.bashrcへの追加分を書いておく。

.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を読む。

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をつかう

手動で起動

これでEmacsが起動したときに自動でuim-modeが読みこまれて有効になると思っていたが、手動で起動しないといけないみたい(だからキーバインド残した)?起動するとマイナーモードとしてモードラインに表示される。モードラインの一番左(文字コードの前)に表示されなかったっけ?LEIMで読み込むとこの位置に出てくるが、やっぱり手動で起動しないといけない。

キーバインドがとられる?

uim-modeが起動していると、Emacsのキーバインドが使えなくなる。ArchWikiだとIMのオン・オフのC-SPCがuimにとられるということを書いているが、全てのキーバインドがとられる。C-x C-cのような基本的なものも全て。
ArchWikiには.Xresources.XdefaultsEmacs*UseXIM: falseを書けとある
が、まだ試してない。→ダメだった

参照

UimEl uim/uim-doc-ja - github
Uim を使って日本語を入力 - ArchWiki

続く

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away