0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellにposh(oh-my-posh)を叩き込む

Last updated at Posted at 2025-05-01

ふとWindowsのTerminalをもっとかっこいい見た目にしておもちゃにしたいと思い、poshを入れたりPowerShellをアプグレしたりした際の備忘録。
Twitter(X)に画像でメモしてたけれども、場所や環境によってはTwitterを堂々と見られなかったり、そもそも画像じゃこんな長文をコピーできず面倒くさかったりするのでQiitaに書き込んでおく。

PowerShellをアップグレードする

Terminalなんて滅多に触らないって人はあんまりいないだろうが、初期状態だとPowerShell 5.1を使っているはず。
アップグレードは簡単なんでちゃちゃっとやっとく。

winget install --id Microsoft.Powershell --source winget

powers1.png
出来たらこんな感じになるのでターミナルを再起動してあげよう。
そしたら左上のプラスの隣の下矢印を押すともう一つPowerShellができている。この黒い奴が新しいPowerShellとなっている。
powers2.png

PowerShell 7をデフォルトにする

これで新しいPowerShellをインストールできた。
ただこのままではターミナルを起動して矢印を押して新しいPowershellに切り替えて~なんて手間がかかる。
なので下矢印を押して設定→既定のプロファイル→PowerShellを選ぶ。
選んだら保存を忘れずに。
powers3.png

いらないやつを非表示にする

さっきの矢印を押したときに古いPowerShellやらAzureやら色々表示されたが、古いPowerShellやAzure Cloudなんて多分一生使わないだろう。
そこで設定画面左下にあった"JSONファイルを開く"から設定ファイルを見てみる。
色々書いてあるが重要なのは"profiles"の部分。

{
    "commandline": "hogehoge",
    "guid": "{fugafuga}",
    "hidden": false,
    "name": "Windows PowerShell"
}

"commandline"や"guid"の部分は人によって違うだろうから適当な文字にしている。
この"name"に書いてある部分が、さっき矢印を押したときに出てきたAzureやらコマンドプロンプト(Unicode文字になっているから読めないけど)やら書いてあった部分だ。
もうわかると思うが、表示から消したい項目(今回は古いPowerShellである"Windows PowerShell")の"hidden"をtrueにしてやればいい。
多分コマンドプロンプト君とは今後ともお世話になると思うが、いらない人は消しちゃってもいいと思う。

Poshをインストールする

本題、Poshのインストール。
こちらもPowerShellのアップグレードと同じように、wingetでダウンロードからインストールまでやっちゃう。

winget install JanDeDobbeleer.OhMyPosh -s winget

終わったらターミナルの再起動を忘れずに。
再起動を忘れると次以降の手順で「そんなコマンドがありません!」と怒られてしまう。(実際怒られた)

wingetに頼らずStep by Stepでインストールしたいのであれば公式のドキュメントを見ながらやろう。

フォントのインストール

Poshは特定のフォント(Nerd font)を使わないと一部レイアウトが文字化けしてしまうのだが、どのサイトを検索してもフォントサイトから直接ダウンロードするよう解説されていた。
それで直接ダウンロードしてみても以前文字化けしたままであったり、表示されなかったりと非常に煩雑。
なのでPoshから提供されているFontのインストール機能を使おう。

oh-my-posh font install

実行するとこんな感じでフォントを選ぶ画面が出る
powers4.png
調べていた際、一番おすすめされていたフォントがCascadiaCodeだったのでとりあえずそれを入れておけばなんとかなる。多分。
普通のCascadiaやMSの文字のあるものなどいろいろあるが、迷ったら無印の方を選んでいる。
powers5.png
終わったらこんな感じ。

Poshが使えるか見てみる

とりあえずここまでやったが「あれ?全然画面が変わってないぞ?」と疑問になるかもしれない。
なのでとりあえず画面を変えてみよう。

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression

これを入力してみるとあら不思議、一部文字化けした画面が出てきます。
powers6.png
それも当然のこと、インストールしたフォントがまだ適用されていません。
まず設定→PowerShell→外観
powers7.png
フォントフェイスから"CascadiaCove Nerd Font"を選択
powers8.png
忘れずに保存をしてからPowerShellに戻ってみると...
powers9.png
できた。

先ほど入力したコマンドがPoshのテーマを適用するコマンドになっており、最後についている*.omp.jsonの部分を書き換えると違うテーマを使うことができる。
どんなテーマがあるかは公式ドキュメントを見るとわかりやすい。

Profileを作る

これでターミナルをいい感じの見た目にできたが、このままでは起動のたびにテーマを適用するコマンドを打たないと元に戻ってしまう。
面倒なのでターミナルが起動されたらコマンドを勝手に実行するようにする。
そのためにはまずPowerShell用のProfileを作成する。

New-Item -Path $PROFILE -ItemType file -force

追加: 既にプロファイルを作成済みの場合、このコマンドを使うと初期化されてしまうのでスキップしてください

このコマンドひとつでユーザーのドキュメントファイルにPowerShellフォルダを作成し、その中にMicrosoft.PowerShell_profile.ps1というファイルを作成してくれる。便利。
作成したら以下コマンドでProfileをメモ帳で開く。

notepad $profile

(もちろんわかってる人なら自分の好きなテキストエディタで当該ファイルをいじってもよい)
メモ帳で開いたら以下を追記する

if($env:WT_PROFILE_ID){
    oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression
}

この部分は以下サイトを使ってます。

if($env:WT_PROFILE_ID)を使うことでPowerShellを直接起動した際には実行せず、ターミナルでPowerShellを起動した際にコマンドが実行されるようになる。

これでターミナルを起動すればカッコいい画面になるぞ!やったね!

おまけ: 外観の設定

黒い背景は画面や文字が見やすく利点しかないですが、やっぱりこういうところもカスタマイズしたいですよね。
というわけでカスタマイズしちゃいましょう。
フォントの設定時に開いたPowerShellの外観設定ページを開き、"背景画像のパス"を選択、参照ボタンを押して画像を選択するか、デスクトップの壁紙を使用を押します。
これだけでもかなり変わりますが、もうひと手間かけます。
"背景画像の不透明度"及びその下にある"背景の不透明度"を任意の数値に下げておきます。
その際、両方同じ値にしておかないと高い方の不透明度に引っ張られちゃうので何も考えず設定するなら同じ数値にした方がいいです。

上記設定をするとこのようになります。
powers10.png
見えずらいかもしれませんが、ターミナル後ろの画面が透けて見えるようになります。
これで「ネットでコマンドを調べながらターミナルを叩いている最中にターミナル画面がでかすぎてコマンドが読めない!」なんてことが減ったりするので地味に便利です。


以上、Posh導入方法でした。Twitterに書いた備忘録より長いな。冗長。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?