🔤

en_USで頑張るArch Linux日記 5日目:zsh

2025/03/27に公開

en_USで頑張るArch Linux日記の5日目です。

そろそろBashもしんどくなってきたので、Zshを入れていきます。

てか、paru -S zshでよくね?

はい。そのとおりだと思います。

パッケージでZshを入れて、年季の入った.zshrcやらzplug一式をgit cloneしてきたらふつうに動きます。

しかし、Zshの話題を5日目まで遅らせたのは、それなりの理由があったからです。

ここから下は、paru -S zshを直接使わず、ML4WのGUIを使ってZshをインストールする方法を紹介します。

  • ML4Wのテーマとターミナルの表示色をいい感じに合わせたい
  • ML4Wの今風なBashプロンプトをZshでも使ってみたい
  • 今使ってるZshのプラグインは古いから、いいのがあったら試してみたい

このような人向けの記事となっています。

そもそもML4WはGUIのために入れたので、Zshにまで口出ししてほしくないという向きにはパッケージを直接使うほうが断然楽です。


最初にML4Wを使ってZshをインストールする方法のデメリットを挙げます。

ML4Wを使う方法ではZshとその設定を同時にインストールでき、かつML4Wをアップデートするときにこれらも更新されるようになります。

ですが、これがいいかどうかは正直微妙です。
例えるなら、職場のZshガチな先輩の設定ファイルに直接symlinkを貼ってるようなものなので、いつも使っているコマンドがある日突然挙動が変わるなんてこともあるかもしれません。

しかしこの後説明するようにすれば、多少手間ではあるものの、わりと安全にいいとこ取りをすることができます。

やってみて分かりましたが、zsh plugins alternatives 2025とかでいちいちググらなくても、誰かの最新の設定が手元にあるというのは案外便利なものです。

導入はちょっと面倒かもしれませんが、参考にしてみてください。

どんなのが入るのか

そもそもZshはシェルに異常なこだわりを持つ人が使うシェルです。

つまり普段からZshを使っている人にとっては、デスクトップの外観や操作性以上に違和感を感じやすいといえるでしょう。

そこでまず、ML4Wで入れるとどんなのが入るのかザクッとお見せしましょう。

M4Lでは上記の構成になっています。
そして、実際に入るものは下記のファイルです。

~/.zshrc           # by ML4W
~/.config/zshrc/   # -> ~/dotfiles/.config/zshrc/
                   #       00-init                : export EDITOR, PATH, ZSH
                   #       20-custommization      : plugins, fzf, oh-my-zsh, oh-my-posh
                   #       25-alias               : ls->eza, qtile, xrandr 
                   #       30-autostart           : pywal, fastfetch

~/dotfiles/.config/zshrc/にいくつかスクリプトが入っており、~/.config/zshrc/という名前でsymlinkが貼られます。

ファイル名の右側に、何をしてるファイルなのか説明を書いたので参考にしてください。

Zshにこだわりがあるなら、これらのML4Wスクリプトと自分のスクリプトのどちらを使うか、ここでちょっと考える必要があります。

筆者は25-aliasはちょっといただけないと感じました。
上の説明書きにあるように、lsezaにするような豪快なエイリアスが大量にありますしxrandrはそもそもX11用なので、まだ移行過渡期のスクリプトに思えたからです。

また、20-custommizationから呼び出されるfzfの設定も普段使っているものを使いたいですし、プラグインも以前からsheldonで管理しているのでそれを使いたいところです。

設定ファイルの配置場所

具体的にどうすればいいかは、.zshrcを見れば分かります。
短いのでそのまま載せます。

~/.zshrc
#            _
#    _______| |__  _ __ ___
#   |_  / __| '_ \| '__/ __|
#  _ / /\__ \ | | | | | (__
# (_)___|___/_| |_|_|  \___|
#
# -----------------------------------------------------
# ML4W zshrc loader
# -----------------------------------------------------

# DON'T CHANGE THIS FILE

# You can define your custom configuration by adding
# files in ~/.config/zshrc
# or by creating a folder ~/.config/zshrc/custom
# with you own zshrc configuration
# -----------------------------------------------------

if [ -d ~/.config/zshrc/custom ]; then
    for f in ~/.config/zshrc/custom/*; do source $f; done
else
    for f in ~/.config/zshrc/*; do source $f; done
fi

コメントを読むと、

  • ~/.config/zshrc/custom (要 mkdir custom
  • ~/.config/zshrc/*

のどちらかに設定ファイルを置く構成だと気づきます。

ML4WのインストーラでZshを入れた直後は後者の構成になっています(前述のファイル構成はこの状態を表しています)。

筆者はまずこの状態で何時間か試したあとcustomフォルダを掘り、そこに自分のスクリプトとML4Wの欲しいファイルだけをコピーしました。

その後、fzfの設定や重複するプラグインを削除するため20-custommizationを変更しています。

下記にその手順を示します。

ML4Wを使ったZshインストール方法

インストールには、起動時に表示されるML4WのWelcomeアプリを使います。
もし、表示しないようにしている場合は、App launcherでwelcomeと入力すれば起動できます。

  1. ML4WのWelcomeアプリを起動
  2. 右下のInstallation Optionsボタンを押す
  3. Shellを選択
  4. Zshを選択

これで.zshrcに記載されている後者の配置になっています。
次にcustomフォルダを作って、必要なML4Wスクリプトだけをそこにコピーします。

cd ~
cp -a dotfiles{,.ml4w-orig}         # 念のためバックアップ
mkdir ~/.config/zshrc/custom
cd $_
cp ../00-init .
cp ../20-customization .
cp ../30-autostart .

次に、以下のようにして自分の.zshrcを名前を変えてsymlinkを貼ります。

ln -s PATH/TO/.zshrc ~/.config/zshrc/custom/99-my-zshrc

上記のPATH/TO/.zshrcは変更してください。

これでとりあえずZshを起動できるはずなので、ターミナルを開いて確認します。
99-my-zshrcは最後にロードされるので、それほどおかしな動作にならないはずです。

あとは20-customization99-my-zshrcを修正して、不要な部分を削ったり、望みの動作に近づけていくとよいでしょう。

ちなみに私の.zshrcsheldonを起動するので、最後にプラグインがロードされますが特に問題ありません。sheldonの遅延ロード機能も問題なく動いています。

→6日目

脚注
  1. 恥ずかしながら筆者は今まで「なんかまたPoshとかいう新しいシェルが出たんか」と勘違いしてました。 ↩︎

Discussion