はじめに
本記事はManjaro / Archlinuxの初期セットアップ手順と似たテーマだが、WSL2を前提とした内容で、条件が違うためかなり違った内容になる。
本記事で取り扱うのは、日常的な利用を取り仕切る環境としてWSL上のArchlinuxを使うためにセットアップすることである。
これは、可能であればArchlinux系のLinuxデスクトップを利用したいが、何らかの理由でWindowsを使わざるを得ないという状況を想定している。
WSLの有効化とArchlinuxの導入
ごくふつうの人にも便利なGitを使おう レベル15〜でも解説したが、
Windowsの機能の有効化または無効化」を開いて「Linux用Windowsサブシステム」「仮想マシンプラットフォーム」を有効化し、再起動。
wsl --update
wsl --install archlinux
とする。
Windows Terminalの使用を推奨。
X概念
Xアプリケーション(Xクライアント)はXサーバーに対して描画とコントロールを提示する。
ローカルホスト環境の場合、簡略化した言い方をすればXアプリケーションがXサーバーと通信し、Xサーバーが描画してユーザーの目に届くということになる。
XサーバーはTCPの6000〜6063番ポートをwell-knownとして使う。
つまり、実装及びXサーバーが動作するホストは任意である。
ただし、独自のアクセスコントロールがあるため、単にリモートのポートにアクセスすればリモートで描画できるわけではない。
WSLの場合、WSLgがWSL内のLinux環境のXサーバーとして機能する。
Xサーバーとしての完全な実装ではないが、Windowsとの統合が組み込まれているため、リモートXサーバーを用いるのよりもかなり簡略化できるようになっている。
以上を踏まえて
- 通常はGUIアプリを使うためにはXサーバー環境一式のインストールを必要とする
- WSL環境ではXサーバーとしてWSLgを使うため、Linux内のXサーバー環境は不要である
ということを念頭に置いておくと良い。
インストール
コマンド
pacman -Syu
pacman -S x-apps vivaldi adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts fuse2 fuse3 vim vim-plugins zellij fcitx5-im fcitx5-anthy zsh grml-zsh-config
x-apps, vivaldi
基本的なGUIアプリケーション群の中で、x-appsパッケージグループは依存関係が軽く、ミニマル環境に向いている。
Gnome 3のアプリケーションから派生したものなので、機能性も申し分ない。
Vivaldiはそれなりの依存関係を持ったウェブブラウザだが、実はx-appsとvivaldiをインストールすると最低限GUI環境を動作させるのに必要なものが入る。
実用的かつコンパクトな指定だ。
テキストエディタxed
の存在を覚えておくといい。
fuse2, fuse3
Fuseはユーザー空間ファイルシステムサポート。
ここでFuseを必要とする理由は、AppImageがFuseを必要とするためである。
Linux環境をなるべく軽く留めるためにできるだけAppImageを使いたいが、そのAppImageを使うにはシステム側にFuseがいる、というわけである。
vim関連
本来、基本はgvim
, vim-plugins
が鉄板。
これは、vim
にクリップボード連携を与えるためだ。
でもWSL環境内ならvim
もアリ。
なお、Archlinuxはvim
はvi
コマンドを提供しないので、あくまでTUIで使いやすいエディタとして選択している。
だから、別にNeoVimでもHelixでもEmacsでも良い。
最低限で済ませたいなら、一番軽いのはnano
。
Zellij
Linuxデスクトップ環境ならX上で端末を開いて、そこからマルチセッションするものだが、WSL自体が端末内で立ち上がるのでターミナルデュプレクサが欲しい。
別にscreenでもtmuxでも良いが、一般ユーザーにはZellijが優しい。
ターミナルエミュレータで依存関係が薄いのが欲しい場合はlxterminal
がおすすめ。
Dependenciesがvte3
, git
(make), intltool
(make)とかなり薄い。
Zshと基本環境
ユーザー追加
useradd -m -U -s /bin/zsh username
username
はWindowsのユーザー名と揃えておくと後々苦労がないが、Windowsのユーザー名が[A-Za-z][A-Za-z0-9]+
で構成されていない場合はその規則に従ったユーザー名にしておいたほうが良い。
WSLは起動時に常にroot
でのログインになるため、通常ユーザーを使うにあたり
su - username
する必要がある。
一見面倒そうだが、root
での動作に制限があるソフトウェアもあるので、通常ユーザーで使うようにしたほうが良い。
.zshenv
作成したユーザーの~/.zshenv
に
export DISPLAY=:0
と書いておく。
- ログインシェルをZshにした
- rootのコマンドラインから開始する関係上、ユーザーコマンドは基本的にZshで実行される
- Archlinuxの
/etc/profile
は~/.profile
を読むようになっていない - 非対話環境でも反映して欲しいので
~/.zshenv
に書く
- 普通にWSLgを使う場合、
$DISPLAY
は:0
固定- 特に許可設定も不要で一般ユーザーからも使える
万全を期すなら~/.profile
に書いておいて~/.zshrc.local
で
source ~/.profile
してもいいが、今回の場合はenvで読みたいし、どうせZsh経由で起動されるので^/.zshenv
にしている。
日本語入力
前提
当たり前の話だがLinux上のXアプリにMS-IMEで書けるようにはなっていないので、LinuxアプリにはLinuxの日本語入力環境が必要になる。
ただし、Windows Terminalは起動しているのがWSLであろうともWindowsのアプリであるため、Windows Terminalに対してはMS-IMEで入力する。
つまり、LinuxのGUIアプリのために日本語入力環境が必要で、そのためにFcitxを導入した。
なお、fcitx5-anthy
を選択したのは、Mozcの場合Mozcのツールから設定をする必要があるが、そのためのコマンドが
/usr/lib/mozc/mozc_tool --mode=config_dialog
でちょっとめんどくさいので、fcitx5-configtool
から設定できるAnthyのほうがよかろうという判断だ。
起動
fcitx5の起動コマンドを初期化ファイルに含める快適性は低く、ログイン時に一発fcitx5-configtool
を起動してそこからFcitx5を起動したほうがいい。
設定
セットアップしたときのデフォルトがUSキーボードだけになるので、「Fcitx5を起動するとキーボードレイアウトがUSになる」というよくわからない挙動が発生する。
まず、System keyboard layoutを選択してJapaneseに。
するとダイアログが出るので(JISキーボードを使っているなら)追加する。
そして、(USキーボードを使っていないなら)→
を押してUSキーボードを削除し、Anthyを←
を推して追加する。
次にグローバルオプションの入力メソッドの切り替えだが、Zenkaku Hankaku
やControl+Space
のようなWindowsのキーバインドと競合するものは外す。
特にZenkaku Hankaku
を有効にしているとMS-IMEが反応してものすごい荒ぶった動作になる。
私はControl+Eisu Toggle
にしている。
設定ファイル
~/.zshenv
に
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
AppImageやFlatpakを使う
普通にAppImageをダウンロードして実行権限を与えて実行すれば良い。
Flatpakを使う場合は
pacman -S flatpak
して、あとはFlatpakの手順でインストールする。
WSL上で動かすならシステム内で組むよりもFlatpakのほうが楽。
AppImageになっていて使いやすいウェブブラウザはLibreWolf。
my-browser-profile-chooserを使う
プロファイルの使い分けも便利だが、もうひとつ地味に便利なこととしてforkしてからexecする構造になっているので、ブラウザ起動時に&|
をつける必要がなくなり、単にweb youtube
みたいなコマンドが使える。
mkdir ~/.local/opt ~/.local/bin
cd ~/.local/opt
git clone https://github.com/reasonset/my-browser-profile-chooser.git
cd ~/.local/bin
ln -s ~/.local/opt/my-browser-profile-chooser/web
mkdir -p ~/.config/reasonset/browsers
とりあえずVivaldiを使うmain
プロファイルを定義するなら、~/.config/reasonset/browserprofiles.yaml
として、こう
---
Profiles:
main: {type: viv}
~/.zshrc.local
にも追記
path+=($HOME/.local/bin)
これで
web main
で起動できるようになった。