インストールが自由な環境では、WSLで動作させるLinux環境を使って、modern-unixなコマンドを使ったり(記事)アイコンや記号をフォントに格納したグリフフォントをインストールしてエッジの効いたカスタマイズが可能だ(記事)。
親に見つからないように布団で隠れながら、何度も徹夜した中学生のころのMSXゲーム経験のためか、コンソールに輝くグラフィカルなインタフェースは不思議と魅かれる。一方、インストールが自由に行えないWindows PC環境でもPowerShell環境(PowerShell 7)のプロファイル(notepad $PROFILE)のカスタマイズで随分いろいろできることを確認。灼熱のPC環境で涼しい色合いを工夫していた(記事)ところ、グリフフォントのような"映え"が欲しいと考えた。
"emoji"をPowerShellのプロンプトに反映させる

UnicodeのEmoji 17.0
インストールせずにグラフィカルなターミナルをするには?と模索したところで試したいのが"絵文字"の存在である。Unicodeで定義されており、ブラウザやテキストエディタ環境で使える。PowerShellのプロンプトに設定しておけば、似たような感じになるのではないかと閃いた。
昨年末に公開されたUnicodeのEmoji 17.0サイトを開くと、絵文字が並ぶ。ここから、適当な見栄えを見繕ってコードではなく絵の部分(Browser)をコピーしてPowerShellプロファイルのPrompt関数として貼り付けてみる。ここでは、"computer"の区切りにある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個の絵文字が扱える。コピペで簡単に試せるので"映える"アイコンを探し出し、並べてみるのもまた一興(いっきょう)だ。


