インストールが自由な環境では、WSLで動作させるLinux環境を使って、modern-unixなコマンドを使ったり(記事)アイコンや記号をフォントに格納したグリフフォントをインストールしてエッジの効いたカスタマイズが可能だ(記事)。

親に見つからないように布団で隠れながら、何度も徹夜した中学生のころのMSXゲーム経験のためか、コンソールに輝くグラフィカルなインタフェースは不思議と魅かれる。一方、インストールが自由に行えないWindows PC環境でもPowerShell環境(PowerShell 7)のプロファイル(notepad $PROFILE)のカスタマイズで随分いろいろできることを確認。灼熱のPC環境で涼しい色合いを工夫していた(記事)ところ、グリフフォントのような"映え"が欲しいと考えた。

"emoji"をPowerShellのプロンプトに反映させる

Unicodeの<a href="https://unicode.org/emoji/charts/full-emoji-list.html" target="_blank">Emoji 17.0</a>

UnicodeのEmoji 17.0

インストールせずにグラフィカルなターミナルをするには?と模索したところで試したいのが"絵文字"の存在である。Unicodeで定義されており、ブラウザやテキストエディタ環境で使える。PowerShellのプロンプトに設定しておけば、似たような感じになるのではないかと閃いた。

昨年末に公開されたUnicodeのEmoji 17.0サイトを開くと、絵文字が並ぶ。ここから、適当な見栄えを見繕ってコードではなく絵の部分(Browser)をコピーしてPowerShellプロファイルのPrompt関数として貼り付けてみる。ここでは、"computer"の区切りにあるNo1246(U+1F4BB)の💻をコピーする。

  • No1246(U+1F4BB)の💻をコピー

    No1246(U+1F4BB)の💻をコピー

PowerShellを開いて、notepad $PROFILEと入力して開くプロファイルに


function prompt {
"💻> "
}

と記して、.$PROFILEで変更を反映させる。すると、

  • ちゃんとコンピューターの絵文字がプロンプトに反映されている

    ちゃんとコンピューターの絵文字がプロンプトに反映されている

コピペだけでプロンプトに設定できるというのは、手軽でありながら結構、面白いのではないだろうか。

目的にった絵文字を追加すある

プロンプトに情報を組み込むカスタマイズを行ってきた筆者は、現在以下のようなprompt関数だ。目的にあった絵文字を見繕ってコピペしてみよう。


function prompt {


    # リアルタイム取得
    $C = (Get-Location).Path
    $U = $env:USERNAME
    $F = (ls).Count
    $T = (Get-Date -Format "HH:mm")
    $D = (Get-Date -Format "yyyy/MM/dd")
    $Temp = Get-Content "C:\Users\●●●\Desktop\log.txt" -Tail 1
    $Forcast = Get-Content "C:\Users\●●●\Desktop\temp.txt" -Tail 1

    # リアルタイム記号列
    $Realtime = "File:$F / $C / U:$U / T:$T / D:$D / 気温:$Temp / 週間予報:$Forcast"

    # SetPrompt で設定した固定パート
    $Fixed = $global:PromptText

    # 合成して返す
    return "`e[38;5;39m$Fixed $Realtime > "

}

$C = (Get-Location).Pathは、現在の場所を表すため💻 No1246(U+1F4BB)。$U = $env:USERNAMEはユーザー名を表すので人の顔でいいだろう。ここでは🤡 NO 113(+1F921 )のピエロ。$F = (ls).Countは現行ディレクトリにおけるファイル数なので🗂 No1324 (U+1F5C2)。$Tには⌚ No998 (U+231A )、$Dには📆 No1326(U+1F4C6)。$Tempには🌡 No1039(U+1F321)の温度計、天気予報には🌤 No1051(U+1F324)☂ No1063(U+2602)と適当に選んで以下のように設定してみる。


function prompt {


    # リアルタイム取得
    $C = (Get-Location).Path
    $U = $env:USERNAME
    $F = (ls).Count
    $T = (Get-Date -Format "HH:mm")
    $D = (Get-Date -Format "yyyy/MM/dd")
    $Temp = Get-Content "C:\Users\●●●\Desktop\log.txt" -Tail 1
    $Forcast = Get-Content "C:\Users\●●●\Desktop\temp.txt" -Tail 1

    # リアルタイム記号列
    $Realtime = "🗂 File:$F /💻 :$C / 🤡 :$U / ⌚ :$T / 📆 :$D / 🌡 気温:$Temp / 🌤☂  週間予報:$Forcast"

    # SetPrompt で設定した固定パート
    $Fixed = $global:PromptText

    # 合成して返す
    return "`e[38;5;39m$Fixed $Realtime > "

}

これを実行(.$PROFILE)すると

  • 絵文字をプロンプトに配置

    絵文字をプロンプトに配置

フォントグリフのような統一感のある単色の良さはないものの、手軽さも相まって、また違った良さもある。UnicodeのEmoji 17.0ではトータルで1918個の絵文字が扱える。コピペで簡単に試せるので"映える"アイコンを探し出し、並べてみるのもまた一興(いっきょう)だ。