Oh My Poshを利用してWSL2上のUbuntuのbashプロンプトをいい感じにする

`Oh My Posh`は`Posh`という`PowerShell`の短縮形が命名にはいっている事からわかるように。
元々は`PowerShell`のコマンドプロンプトをいいかんじにする`PowerShell`モジュールでありましたが、今現在は、`PowerShell`以外のシェルについてもいい感じにするようサポートされています。

本記事では`bash`プロンプトをいい感じにしてみます。

## ドキュメント

[Installation Linux](https://ohmyposh.dev/docs/installation/linux)
[Change your prompt | Oh My Posh](https://ohmyposh.dev/docs/installation/prompt)

## 今回インストールする環境

今回は`WSL2`上の`Ubuntu-22.04`に`Oh My Posh`をインストールして`Windows Terminal`からいい感じにプロンプトが表示されるようにしてみます。

## インストール

[Installation Linux](https://ohmyposh.dev/docs/installation/linux)

Installationのドキュメントを参照すると、homebrewを使った方法と、マニュアルでのインストール方法の記載があります。

今回は、マニュアルでの方法でインストールしていきます。

```bash:Oh My Posh のインストール
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
sudo chmod +x /usr/local/bin/oh-my-posh
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/7ea49753-3001-905a-48b3-07402d51a48c.png)

```bash:Poshテーマのダウンロード
mkdir ~/.poshthemes
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.omp.*
rm ~/.poshthemes/themes.zip
```

## Nerdフォントのインストール と Windows Terminalの設定

今回は`Windows`の`WSL2`上の`Ubuntu 22.04`を`Windows Terminal`から利用するケースとなります。

[Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher](https://www.nerdfonts.com/)

`Oh My Posh`でプロンプトをいい感じにするのには、`Nerdフォント`と呼ばれるフォントを利用しています。
（プロンプトにいい感じのアイコンだったりを表示するのに利用されています）

ドキュメントでは　[Meslo LGM NF](https://github.com/ryanoasis/nerd-fonts/releases) がおすすめされているようですが、他の`Nerdフォント`でも互換性があり問題はなさそうです。

お好みの`Nerdフォント`をインストールした上で、`Windows Terminal`のフォント設定を行います。

最近の`Windows Terminal`ではjsonファイルを直接いじらなくてもフォント設定ができるので、GUI上からフォント設定した図

下記の例では[HackGenNerd](https://github.com/yuru7/HackGen)という`Nerdフォント`をインストールし、既定値　ー＞　外観　から [HackGenNerd](https://github.com/yuru7/HackGen)を選択しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/d064ec75-c299-d9ba-e5d0-c7c9d1e4d0ad.png)

## bashでOh My Poshを利用するように設定する

[Change your prompt](https://ohmyposh.dev/docs/installation/prompt)

`.bashrc` に下記を追加して起動時に `Oh My Posh`を読み込むように設定します。（

```bash:~/.bashrc
eval "$(oh-my-posh init bash)"
```

`.bashrc`を更新したら、下記でプロファイルをリロードします。

```bash
exec bash
```

`bash`プロンプトがいい感じに更新されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/0d6c7397-8708-ac29-507d-7d75e5167fb5.png)

## 文字化けする場合

本記事の環境では、`Windows Terminal`で`Nerdフォント`を利用する設定になっていない場合は下記のように文字化けします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/122a5ae0-d59b-099d-a13d-4fcdfdf93240.png)

このような表示になった場合は、`Nerdフォント`のインストールと、Windows Terminalで`Nerdフォント`を利用するように設定してください。

##　テーマを変更してみる

今回、手順の中でマニュアルでテーマを下記パスにダウンロードしています。

- `~/.poshthemes`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/26465d52-30b1-1370-5d62-37f4a1bbf338.png)


[Customize](https://ohmyposh.dev/docs/installation/customize)

上記ページに記載がありますが、`bash`の場合は下記コマンドでテーマを切り替える事ができます。

```bash:1_shellテーマに切り替え
eval "$(oh-my-posh init bash --config ~/.poshthemes/1_shell.omp.json)"
```

コマンドを実行すると、テーマが切り替わった事を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1670622/41b70dd5-a442-910a-35de-cf41390829ac.png)

恒久的にテーマを切り替えたい場合は、`.bashrc`に追加した一行を上記コマンドに変更すればOKです。

## 総評

`Oh My Posh`の記事を書いていたと思ったら、いつの間にか。

- [PowerSHellへのインストール記事](https://qiita.com/SAITO_Keita/items/14cd9d7349bc2256b4da)
- [cmd（Clink）へのインストール記事](https://qiita.com/SAITO_Keita/items/7eac08eb632c3d3eb286)
- Bashへのインストール記事（本記事）

と各種シェルへのインストール記事をかいている事に気が付きます。

自分は元々`PowerShell`で便利に利用していましたが、別のシェルでも普通に使えるようになり。
現在はWindows , Linux , Mac上で様々なシェルをいい感じにしてくれるソフトウェアになっています。

こうなってくると、`Posh`（PowerShellの省略形）という名称がついていますが。
様々な環境の様々なシェルを横断的に自分好みのテーマでいい感じにできる、いい感じのソフトウェアになっています。

弱点としては名前から、各種シェルに対応しているといった事が解りづらい点があるかと思いますが。