WSL2でStarshipを使っておしゃれなターミナルを作成する

# はじめに

職場の先輩がおしゃれでかっこいいターミナルを使っていました。
その名も「Starship」

https://starship.rs/

以前WSL2(Ubuntu20.04)にいれようと調べて試行錯誤したのですがうまくいかずあきらめました。
そして先日Starshipの話をする機会があり、再度挑戦していれることができたので記事にします。

ただしVSCodeで動かすのはすこし問題があるので合わせて紹介します。

# 開発環境

- WSL2
- Ubuntu20.04.4
- VSCode

# Starshipの設定

まずは`Ubuntu20.04`(Wsl2)上で以下のコマンドを実行します。

```.sh:bash
# starshipインストール
$ curl -sS https://starship.rs/install.sh | sh
# インストールを確かめられるのでyを入力してエンター
```

次にUbuntu20.04を起動時にStarshipが起動するように`~/.bashrc`を修正します。

```.sh:bash
vi ~/.bashrc
```

```.bash:~/.bashrc
# 一番下に以下の行を追加
eval "$(starship init bash)"
```

Ubuntu20.04のウインドウを消して再起動します。
すると以下の画面になってStarshipが有効になったことが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/7561244c-9de2-e794-322c-da23652b1e1f.png)

次にターミナルをカスタマイズするための設定ファイルを作成します。

```.sh:bash
$ mkdir -p ~/.config && touch ~/.config/starship.toml
```

作成したファイルに設定を追加していきます。今回は[Starshipでプロンプトをおしゃれにしてみた](https://zenn.dev/oosuke3/scraps/38a42f48c6dba4)の設定を使います。

```
# 設定ファイルを開く
$ starship config
```

```toml:~/.config/starship.toml
scan_timeout = 10

[character]
error_symbol = "[❯](bold red)"
success_symbol = "[❯](bold green)"

[directory]
truncation_length = 100
truncate_to_repo = false
truncation_symbol = "…/"

[aws]
format = 'on [$symbol($profile )(\($region\) )]($style)'
style = "bold blue"

[aws.region_aliases]
ap-northeast-1 = "jp"

[docker_context]
format = "via [🐋 $context](blue bold)"

[git_branch]
symbol = " "

[username]
style_user = "white bold"
style_root = "black bold"
format = "[$user🌱]($style) "
disabled = false
show_always = true
```

保存をすると以下の画面になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/079835e3-7f35-73d7-4b4e-db7d84dd2b3c.png)

適当なリポジトリに移動したところ以下のように文字化けします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/59c0d84e-3291-4595-c095-bbd51da91d68.png)
本来Gitのアイコンが(・のところに)表示されるはず

これは`Nerd Font`というものを利用することで表示することができるので、フォントを変更する必要があります。

https://www.nerdfonts.com/

`Windows Terminal`を設定してWindowsにインストールした`Nerd Font`を適応させる方法でフォントを変更します。

# フォントの変更

## フォントのインストール

[こちら](https://www.nerdfonts.com/font-downloads)から`Noto Nerd Font`をインストールします。(Downloadをクリック)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/bbc9f08c-a903-36bd-5795-e4ae315e43eb.png)

ダウンロードしたら解凍して`Noto Mono Nerd Font Complete Windows Compatible.ttf`をクリック
インストールをクリックしてフォントをWindowsにインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/e2d84dd2-a88f-847e-a68e-b049cf834c53.png)

## Windows Terminalの設定

`Microsoft Store`から`Windows Terminal`をインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/a48981a0-e679-c9fd-0658-86880dccf7de.png)

Windows Terminalを開いて、`V`ボタンをクリックして`設定`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/a92ba957-c272-b2ed-d0cf-89dfe287944d.png)

左メニューから`JSONファイルを開く`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/0ee6fd73-76b3-56df-3e8c-ab0774e87b05.png)

VSCodeを選択して設定ファイルを開きます
`profiles`のlistから`Ubuntu-20.04`が書かれている箇所を見つけます。(ここでは53-56行目)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/74bc2942-1067-3952-c629-604cc76d8ea4.png)

最後に`"fontFace": "NotoMono NF"`を追加します。(55行目の最後に`,`をつける)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/88741c0d-87d1-7919-25be-f8cbf0949402.png)

Ctrl+sで保存したらWindows Terminalに戻ります。

# 確認

`V`ボタンをクリックして`Ubuntu-20.04`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/0b6247cc-7910-9d72-5a39-82a70e8cab54.png)

先ほどの文字化けしていたリポジトリに移動するとアイコンが表示されていることが確かめられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/777a54e9-4a32-c5df-7630-cfe145414c18.png)

# VSCodeのターミナルの場合

VSCodeからターミナルでWSL2を開く場合、Windows Terminalから開いていないため、Windowsのフォントを利用することができません

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/01f52c51-daca-b320-fbcf-5f15cc180442.png)

どうすれば文字化けせずにNerdFontをVSCodeで利用するかはわかりませんでした。
回避策としてはNerdFontのアイコンを利用しないくらいしか思いつきませんでした。

**別の方法がわかる方はコメントいただきたいです**

Starshipの設定方法は以下を参考にしてみてください

https://starship.rs/ja-jp/config/

# おわりに

以前できなかったことにチャレンジしたらできたということは案外あるものです。
昔難しくてあきらめたことを再チャレンジする大切さがわかりました。難しくてもとりあえずチャレンジすべきですね

# 参考
- [Starship](https://starship.rs/)
- [Starshipでプロンプトをおしゃれにしてみた](https://zenn.dev/oosuke3/scraps/38a42f48c6dba4)
- [Nerd Font](https://www.nerdfonts.com/)