🚀

Ubuntu Desktop に Alacritty + Starship を導入してターミナルをリッチにする

2024/12/19に公開

はじめに

こんにちは、D2Cエンジニアの穐澤です。

本記事では、ターミナルエミュレータのAlacritty、及びプロンプトカスタマイズツールのStarshipをUbuntu環境に導入及びカスタマイズする手順についてご紹介します。

D2Cでは開発環境の一部として、AWS上の仮想デスクトップ環境である Amazon Workspaces を利用しています。私もこれまで Amazon Linux 2 ベースの仮想デスクトップマシンを使っていたのですが、Amazon Linux 2 が来年EOLを迎える[1]ことから、新たに Ubuntu Desktop for Workspaces に移行することになりました。そこで、この機会に環境構築をちゃんとしよう!と思い立ち、以前から使ってみたいと思っていたAlacrittyとStarshipを導入することにしました。

本記事が少しでもお役に立てれば幸いです。

導入ツールについて

Alacrittyとは

AlacrittyはRust製のターミナルエミュレータです。GPUレンダリングによって高速な動作を実現しています。私がAlacrittyを導入する決め手になったのは、以下の3つの特長です。

  1. タブ機能等を持たず描画に特化したシンプルな作り
    • 個人的にタブやセッション管理はTmuxに任せたい
  2. 設定はすべてTOMLファイルに記述する(GUIがない)
    • dotfilesで管理しやすい
  3. クロスプラットフォーム対応している(Windows/Mac/Linux)
    • ローカルの業務PCがMacであり、そちらでも共通設定で導入可能

特に、設定周りをファイルで完結できるのは嬉しいです。Amazon Workspaces ではマシンの不具合でルートボリューム(Windowsで言うCドライブ)の初期化が必要になることがたまにある[2]のですが、設定ファイルをdotfilesなどで管理しておけば、簡単に元の環境を復元することができます。

https://alacritty.org/

Starshipとは

Starshipは、Rust製の高速かつシンプルなプロンプトカスタマイズツールです。対応しているシェルの幅も広く、一般的なシェルはだいたい網羅されています(Bash/Zsh/Fish/Powershell etc...)。Alacrittyと組み合わせたクロスプラットフォーム運用にもかなり相性が良さそうです。また、ドキュメントがすべて日本語訳されているのも嬉しいポイントです。

プリセットが用意されていて大きくカスタマイズしなくてもすぐに使えること、動作が高速であることなどから導入することにしました。

https://starship.rs/ja-JP/

実際に導入・カスタマイズする

Alacrittyのビルド

まずは、Alacrittyをインストールします。インストール方法としては、以下が提供されています。

  • ビルド済みバイナリのダウンロード (Windows/Macのみ。Releasesより入手可能)
  • Cargoでのインストール (実行バイナリ以外不要であればこちらでOK)
  • ローカルでのビルド (デスクトップエントリやマニュアルページも必要な場合はこちら)

今回はデスクトップのメニューからAlacrittyを起動できるようにしたいので、デスクトップエントリを入手できるローカルでのビルドを行います。詳細手順は公式ドキュメントに記載があるので、ここでは割愛します。インストール先のパス等は適宜変更してください。

インストール手順が完了しメニューにAlacrittyのアイコンが表示されたので、起動してみます。

Alacrittyのカスタマイズ

続いて、Alacrittyをカスタマイズしてみましょう。公式ドキュメントに従い、今回は以下の内容で ~/.config/alacritty/alacritty.toml を作成します。

Alacritty doesn't create the config file for you, but it looks for one in the following locations on UNIX systems:

  • $XDG_CONFIG_HOME/alacritty/alacritty.toml
  • $XDG_CONFIG_HOME/alacritty.toml
  • $HOME/.config/alacritty/alacritty.toml
  • $HOME/.alacritty.toml
~/.config/alacritty/alacritty.toml
[general]
import = [
    # https://github.com/alacritty/alacritty-theme から好きなカラースキームのTOMLファイルをコピー
    "~/.config/alacritty/themes/citylights.toml"
]

[terminal.shell]
program = "/usr/bin/zsh"  # デフォルトは$SHELLの値、$SHELLが設定されていなければログインシェル
args = ["-l"]

[font]
normal = { family = "FiraCode Nerd Font", style = "Regular" }
bold = { family = "FiraCode Nerd Font", style = "Bold" }
italic = { family = "FiraCode Nerd Font", style = "Regular" }
bold_italic = { family = "FiraCode Nerd Font", style = "Bold" }
size = 12.0

設定ファイルでは、カラースキームの読み込みやフォントの設定を行っています。Alacrittyのカラースキームは以下のリポジトリで配布されているので、好きなカラースキームのTOMLファイルをダウンロードorコピーして配置しましょう。

https://github.com/alacritty/alacritty-theme

フォントとしては、以前から私が使い慣れている FiraCode Nerd Font を指定しました。詳しくは後述しますが、Starshipを使用するには Nerd Fonts が必要になるので、手元に無い方はここでインストールしておきましょう。フォントのインストール方法については以下の記事などを参考にしてください。

https://zenn.dev/hideoka/articles/b6f86c8974a806

また、私はzshを導入しているので、起動シェルにはzshのフルパスを指定しています。以下の記事のように、Alacrittyの起動時にtmuxを立ち上げることもできるようなので、いずれやってみようと思います。

https://zenn.dev/a24k/articles/20221027-alacritty-tmux

設定ファイルの記載が完了したので、Alacrittyを再度起動します。

設定変更前

設定変更後

フォントが変わり、サイズも大きくなりました。
また、先述のカラースキームのリポジトリに用意されているスクリプトの実行結果を比較すると、色味が変わっているのが分かります。これでAlacrittyの設定が完了です🎉

Starshipのインストール

続いて、Starshipをインストールします。

前節でも少し触れましたが、Starshipを使用するには Nerd Fonts をインストールしておく必要があります。Nerd Fonts は、Font AwesomeMaterial DesignDevicons といった複数のアイコンフォントを取り込んで1つにまとめたフォントであり、Starshipは Nerd Fonts のアイコンフォントを用いてリッチなプロンプトを実現しています。Nerd Fonts 自体にはアイコンフォントしか含まれず、実際には既存の文字フォントに Nerd Fonts のアイコンが追加されたもの(patched fonts)を使用することになります。あらかじめこちらのページから好きなフォントをダウンロードし、マシンにインストールしておきましょう。

https://nerdfonts.com/#home

改めて、Starshipをインストールしていきましょう。公式ドキュメントの通り、以下のワンライナーを実行するか、各パッケージマネージャ経由でのインストールが可能です。

curl -sS https://starship.rs/install.sh | sh

使用しているシェルに合わせて、Starshipの起動設定も入れておきます。私はzshを使用しているので、以下を ~/.zshrc に追加しました。なお、デフォルトのプロンプト設定を読み込むことで競合が起きているようだったので、該当箇所をコメントアウトしておきました。

~/.zshrc
# デフォルトのプロンプト設定をコメントアウトする
# autoload -Uz promptinit
# promptinit
# prompt adam1
(中略)

if type starship >/dev/null 2>&1; then
    eval "$(starship init zsh)"
fi

Starshipの初期設定が完了したので、Alacrittyを開き直してみましょう。ディレクトリ名の他、ブランチ名や仮想環境の情報が色付きで表示されていますね。

Starshipのカスタマイズ

このままでもいいのですが、もう少しだけ手を加えてみます。Starshipではいくつか構成プリセットが用意されており、これを利用することで簡単に表示形式を変更することができます。ここでは、Nerd Font Symbols プリセットを設定してみましょう。以下のコマンドで、設定ファイルにプリセットの内容を書き込みます。

starship preset nerd-font-symbols -o ~/.config/starship.toml

Alacrittyを開き直すと、ブランチのアイコンが変わり、Pythonのアイコンも表示されるようになりました。

ディレクトリのパスを省略せずに表示したいので、今度は設定ファイルを直接編集してみます。公式ドキュメントを参考に、directory モジュールの設定に以下を追加します (コードブロック内では read_only の値が見えなくなっていますが、🔒のアイコンフォントです)。

~/.config/starship.toml
  [directory]
  read_only = " 󰌾"
+ truncation_length = 5
+ truncate_to_repo = false

ディレクトリのパスが表示されるようになりました。Starshipのカスタマイズもこれで完了です🎉

まとめ

本記事では、Alacritty + Starship でUbuntuのターミナル環境をカスタマイズする方法について取り上げました。Alacritty、Starship ともシンプルな作りでありながら設定の柔軟性も持ち合わせており、TOMLファイルを記述するだけで簡単に自分好みの環境を作れるのが嬉しいポイントです。こういった開発環境の整備は開発効率やモチベーションの向上につながると思うので、今後も少しずつ環境整備に取り組んでいきたいと思います。

Alacritty、Starship を使われたことのない方もぜひ一度試してみてはいががでしょうか?

最後までお読みいただきありがとうございました。

脚注
  1. https://aws.amazon.com/jp/amazon-linux-2/faqs/ ↩︎

  2. https://docs.aws.amazon.com/workspaces/latest/adminguide/rebuild-workspace.html ↩︎

D2C m-tech

Discussion