Oh My Poshでシェルのテーマを統一しよう

この記事はfishのテーマとbashのテーマを一緒にしたかった人がOh My Poshを導入するだけのお話です。

# 環境

 - OS: Debian GNU/Linux 11 (bullseye) aarch64
 - fish 3.7.1
 - bash 5.1.4

# インストール

### Oh My Posh本体インストール

本体のインストールは簡単で、公式が用意したスクリプトを実行するだけです。

```bash:Terminal
curl -s https://ohmyposh.dev/install.sh | bash -s
```

これでOh My Poshがコンピューターにインストールされました。

### フォントの設定

Oh My Poshを使っていると普通のフォントだとアイコンなどがうまく表示できません。

```bash:Terminal
oh-my-posh font install
```

で好きなフォントをインストールして、ターミナルのフォント設定を更新しておきましょう。

### テーマを決める

次にテーマをダウンロードしていきます。

```bash:Terminal
mkdir ~/.local/share/ohmyposh/
mkdir ~/.local/share/ohmyposh/themes/
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.local/share/ohmyposh/themes/themes.zip
unzip ~/.local/share/ohmyposh/themes/themes.zip -d ~/.local/share/ohmyposh/themes/
rm ~/.local/share/ohmyposh/themes/themes.zip
```

そして[Themes | Oh My Posh](https://ohmyposh.dev/docs/themes)から好きなテーマを選んでおきましょう。

### シェルに導入する

最後にシェルの設定ファイルに以下の行を追加しましょう。

#### fish

```bash:~/.config/fish/config.fish
oh-my-posh init fish --config ~/.local/share/ohmyposh/themes/好きなテーマの名前.omp.json | source
```

#### bash

```bash:~/.bashrc
eval "$(oh-my-posh init bash --config ~/.local/share/ohmyposh/themes/好きなテーマの名前.omp.json)"
```

これで使っているシェルにOh My Poshを導入することができました。
`` exec シェル `` でシェルを再読み込みしてみましょう。

# 結果（catppuccin_mochaテーマの場合）

![スクリーンショット 2025-03-27 211829コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4044565/9f26b57e-7955-4fd4-bac6-f514c7f87bc7.png)

統一感が生まれていいですね！

# おまけ

catppuccin_mochaテーマは少し使いづらかったので改造しました。

```json:catppuccin_mocha_mod2.omp.json
{
  "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
  "palette": {
        "os": "#ACB0BE",
        "closer": "p:os",
        "pink": "#F5C2E7",
        "lavender": "#B4BEFE",
        "blue":  "#89B4FA"
  },
  "blocks": [
    {
      "alignment": "left",
      "segments": [
        {
          "foreground": "p:os",
          "style": "plain",
          "template": "{{ .Name }} ",
          "type": "shell"
        },
        {
          "foreground": "p:blue",
          "style": "plain",
          "template": "{{ .UserName }}@{{ .HostName }} ",
          "type": "session"
        },
        {
          "foreground": "p:pink",
          "properties": {
            "folder_icon": "..\ue5fe..",
            "home_icon": "~",
            "style": "letter"
          },
          "style": "plain",
          "template": "{{ .Path }} ",
          "type": "path"
        },
        {
          "foreground": "p:lavender",
          "properties": {
            "branch_icon": "\ue725 ",
            "cherry_pick_icon": "\ue29b ",
            "commit_icon": "\uf417 ",
            "fetch_status": false,
            "fetch_upstream_icon": false,
            "merge_icon": "\ue727 ",
            "no_commits_icon": "\uf0c3 ",
            "rebase_icon": "\ue728 ",
            "revert_icon": "\uf0e2 ",
            "tag_icon": "\uf412 "
          },
          "template": "{{ .HEAD }} ",
          "style": "plain",
          "type": "git"
        },
	{
	  "style": "plain",
	  "foreground": "#f2777a",
	  "template": "[{{ if gt .Code 0 }}{{ .Code }}{{ end }}] ",
	  "type": "status"
	},
	{
	  "style": "plain",
	  "foreground": "p:closer",
	  "template": "{{ if .Root }}#{{ else }}${{ end }}",
	  "type": "text"
	}
      ],
      "type": "prompt"
    }
  ],
  "final_space": true,
  "version": 3
}
```
![スクリーンショット 2025-03-28 145202コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4044565/c586c5aa-a7f2-4451-bc63-ec9329d63ce9.png)

終了ステータスとかもしっかり表示してくれます

# 参考

 - [Oh My Posh公式ドキュメント](https://ohmyposh.dev/docs)