0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Archlinux on WSLを常用環境としてセットアップする

Posted at

はじめに

本記事は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はvimviコマンドを提供しないので、あくまで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 HankakuControl+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

で起動できるようになった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?