はじめに
WSL をはじめて使うので,私の備忘録代わりのメモにします. DrvFS
に metafata を付与して,Linux
側のパーミッションを保持できるようになったので,ホームディレクトリを DrvFS
上に持っていきます.一度,wsl.conf
の設定が有効にならなかったので諦めてたのですが,もう一度試してみたら有効になったので変更しました.前回は typo していたのかもしれません.
Windows
HP Spectre 13-af000
を購入したのファンクションキーと Ctrl
と Caps Lock
の変更します.
- ファンクションキーの設定
電源投入後,ESC
を押してメニューを表示させ、F10
から BIOS
の設定をする.System Configuration
→ Action Keys Mode
を Disabled
に変更する.
- キーの入替え
Caps lock(0x003a)
を 左Ctrl(0x001d)
に、左Alt(0x0038)
と 左Win(0xe05b)
を入れ替える.
regrdit
を起動して,【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout】に【Scancode Map】(REG_BINARY) を追加する(参考: 1d,00,3a,00, (変更後)(変更前)).
00 00 00 00 00 00 00 00
04 00 00 00 1d 00 3a 00
5b e0 38 00 38 00 5b e0
00 00 00 00
WSL
いろいろなところに情報がありますが,取り敢えず作業した内容をメモします.
インストール
-
コントロールパネル
→プログラム
→Windows の機能の有効化または無効化
からWindiws Subsystem for Linux
を有効にして再起動. -
Microsoft Store
からUbuntu 18.04
をインストール
初期設定
スタートメニューから Ubuntu 18.04
を起動してユーザの作成をする.
- システムの更新
プロキシ環境なら下記の設定を行う.
$ export http_proxy=http://サーバ名:ポート番号/
$ export https_proxy=$http_proxy
$ export ALL_PROXY=$http_proxy
sudo apt update
,sudo apt upgrade
でシステムの更新を行う.プロキシ環境なら sudo -E apt update
,sudo -E apt upgrade
のように -E
を付けてコマンドを実行する.
$ sudo -E apt update
$ sudo -E apt upgrade
- 日本語 Locale
$ sudo -E apt install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
exit
で Ubuntu
を終了して,もう一度 Ubuntu
を起動する.echo $LANG
でロケールが変更されているか確認する.
- 日本語 manpage の導入
$ sudo -E apt install manpages-ja manpages-ja-dev
$ sudo apt autoremove
- タイムゾーンの設定
$ sudo dpkg-reconfigure tzdata
- 開発環境のインストール
$ sudo -E apt install build-essential
$ sudo -E apt install gdb
- フォント関連
Windows と共通のフォントを利用する場合は,Windows にフォントをインストールする.
$ sudo ln -s /mnt/c/Windows/Fonts /usr/local/share/fonts/windows
$ sudo fc-cache -vf
Powerline
のパッチを当てたフォントのような Linux からしか利用しないものに関しては,$HOME/.local/share/fonts
にフォントをコピーして,fc-cache -vf
を実行する.知らなかったのですが,$HOME/.local
以下に置くのがお作法みたいですね.
- Hyper ターミナル
https://hyper.is/
からダウンロードしてインストールする.
%USERPROFILE%\appdata\local\hyper
に本体があるので,スタートにピン留めする.
WSL(Ubuntu 18.04)
が起動するように,%USERPROFILE%\.hyper.js
を編集する.
fontSize: 14,
shell: 'C:\\Windows\\System32\\wsl.exe',
shellArgs: [],
- VcXsrv Windows X Server
https://sourceforge.net/projects/vcxsrv/
からダウンロードしてインストールする.
(スタートメニューとデスクトップのショートカットのチェックを外す).
C:\Program Files\VcXsrv\vcxsrv.exe
を右クリックして,プロパティを開き 高 DPI 設定 の変更
→ 高 DPI スケール設定の上書き
にチェックをいれ,アプリケーションにする.
ホームディレクトリの変更
WSL
のデフォルトユーザを変更するのに必要な [distro.exe]
が分からなくて悩みました.Microsoft Store
の Ubuntu 18.04
の説明文に ubuntu1804
とあります.ただし,管理者権限の{コマンドプロンプト,PowerShell}からしか PATH
が通っていないようで,気づくまで無駄に時間がとられました.
- Drvfs の
/mnt/c
をmetadata
付きで自動マウント
/etc/wsl.conf
に下記内容で作成して,WSL
を立ち上げ直します.
[automount]
options = "metadata,umask=22,fmask=11"
mount -l
コマンドで
C: on /mnt/c type drvfs (rw,noatime,uid=1000,gid=1000,umask=22,fmask=11,metadata)
のように,metadata
が付与されているのを確認する.
ホームディレクトリ の場所を C:\home
以下に変更するので,C ドライブに home
フォルダを作成しておきます.
管理者権限でコマンドプロンプトを起動して,下記の手順でホームディレクトリを変更します.念のためバックアップをとることをおすすめします.
% ubuntu1804 config --default-user root
% wsl
# usermod -d /mnt/c/home/xxx -m xxx (xxx はユーザ名)
# exit
% ubuntu1804 config --default-user xxx
% wsl
pwd
コマンドや /etc/passwd
からホームディレクトリが変更できているか確認します.
usermod
の -m
は,現在のホームディレクトリを新たに指定したホームディレクトリに移すオプションです.
Emacs
NTEmacs @ ウィキ の設定です.ありがとうございます。
- インストール
$ sudo -E apt install emacs-25
$ sudo -E apt install cmigemo
.bashrc
などに下記設定を追加.
# emacs setting
export DISPLAY=localhost:0.0
if [ "$INSIDE_EMACS" ] ; then
TERM=eterm-color
fi
(
command_path="/mnt/c/Program Files/VcXsrv/vcxsrv.exe"
command_name=$(basename "$command_path")
if ! tasklist.exe 2> /dev/null | fgrep -q "$command_name"; then
"$command_path" :0 -multiwindow -clipboard -noprimary -wgl > /dev/null 2>&1 & #
for us-keyboard
fi
)
alias emacs="NO_AT_BRIDGE=1 LIBGL_ALWAYS_INDIRECT=1 emacs"
ターミナルから emacs
と打って,Emacs が起動するのを確認する.
- Google 日本語入力
Google 日本語入力
を利用するので,取り敢えずインストールします.Microsoft IME
を使わないので,入力方式エディターから削除します.
設定
→ 時刻と言語
→ 地域と言語
→ 日本語
を選択した,オプションをクリックっして,キーボードの Microsoft IME
を削除する.
時刻と言語
→ 地域と言語
→ キーボードの詳細設定
→ 言語バーオプション
→ キーの詳細設定
の入力言語のホットキーのキーシーケンス
を無効にする.
IME のプロパティ のキー設定の編集から,
-
変換前入力中
,変換中
,入力文字なし
→IMEを無効化
-
直接入力
→IMEを有効化
の入力キーに C-\
を割り当てる.この設定は完全に私の好みです(普通は必要ないです).
mozc_emacs_helper
については,WSL の Emacs で日本語入力 に書いています.
- emacsclient
init.el
に追加する.
;;; server start for emacsclient
(use-package server
:if window-system
:config
(unless (server-running-p)
(server-start))
:diminish (server-buffer-clients . " ⓒ"))
コマンドプロンプトから wsl.exe emacsclient -n ファイル名
で開いています.wslpath
が想定した動作をしてくれないので,カレントのファイルしか開くことができないです.
[6/20 追記]
wslpath
ですが引数を 'aaa.txt'
か "..\aaa.tx "
のようにすると想定した動作になってくれました.
どこに作成したもいいのですが,~/.local/bin
に wslemacsclient.bat
を下記に内容で作成する.
@echo off
for /f "usebackq" %%i in (`wsl wslpath '%1'`) do set unixpath=%%i
wsl emacsclient -q -n %unixpath%
このままでは,使いづらいので doskey
(alias みたいなもの) に登録して,アクセスしやすいようにします.
レジストリエディタを起動して,HKEY_CURRENT_USER\Software\Microsoft\Command Processor
に移動する.
文字列値 AutoRun
を作成し,値のデータを doskey ee=C:\home\xxx\.local\bin\wslemacsclient.bat $1
に設定する(xxx:ユーザ名).
コマンドプロンプトを開き,doskey /macros
で ee
が登録されいることを確認します.ee ファイル名
,ee フォルダ名\ファイル名
などで,emacsclient
が動作することを確認します.もしくは,wslemacsclient.bat
にファイルをドラッグして動作することを確認します(一瞬コマンドプロンプトの画面が表示される).
私は必要ないですが,右クリックの送るメニューに追加してもいいかもしれません.
コマンドプロンプトから start shell:sendto
を実行して SendTo
を開き, wslemacsclient.bat
のショートカットを作成し,プロパティから実行時の大きさ
を最小化
にでもすれば,いいのではと思います.
これで,MSYS2
の Emacs
よりはるかに快適になりました.
[6/20 追記終]
[6/22]
なぜか PATH
の通ったところにバッチファイルを置いても wslemacsclient.bat
のように拡張子まで入力しないと,上手くいかなかったので doskkey
にバッチファイルを登録していましたが,拡張子なしでも動作するようになった(?)ので,doskey
の登録はやめました.
[6/22 追記終]