Edited at

深海なPowerShellにPowerShellをPowerSehllする。(Windows ColorTool & ConEmu)


はじめに

実行ポリシーを変更していない場合は、次のコマンドを予めエンターしておくのじゃよ。

PS >Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force

上のコマンドでは現在のウィンドウでのみExecutionPolicyをRemoteSignedに変更します。新しいウィンドウを開いた場合ExecutionPolicyはもとに戻ります。

恒久的に「RemoteSigned」にする場合は、

PS >Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force


第一章 デフォのPowerShellは浅すぎませんか?


「Iceberg」を手に入れるのじゃ!


下記webサイトにアクセスし、下の画像の赤枠の部分をコピーするのじゃ。

https://gist.github.com/cocopon/1d481941907d12db7a0df2f8806cfd41#file-xresources

ps_iceberg.png


へんかん?hennkan?変換するのじゃ!

下のURLの記事の「4.」でさっきコピーしたのをペーストするのじゃ。

https://qiita.com/Suzukaze31/items/f3b0110afe2397e2e1bb

「9.」まで終わらせるのじゃよ。

ダウンロードした「terminal.sexy.itermcolors」を「iceberg.itermcolors」に名前を変更するのじゃ!


次にToolを手に入れるのじゃ!

(https://github.com/microsoft/terminal/archive/1904.29002.zip) クリックするとダウンロードが始まります。(2019/04/30のリリース)

ダウンロードした圧縮ファイルを解凍するのじゃ!

解凍してできた「ColorTool」フォルダを開いて、「schemes」フォルダを開くのじゃ!

ダウンロードした「terminal.sexy.itermcolors」を「schemes」に移動させるのじゃ!

そして「ColorTool」フォルダを「Program Files」に移動するのじゃ!

PowerShellを開くのじゃ!開き方がわからない??「Ctrl + r」をおして「powershell」と打ってEnterを押すのじゃ!

そして次の2つのコマンドを実行するのじゃ!

PS >set-location C:\Program` Files\ColorTool

PS >.\ColorTool.exe -s

2つ目のコマンドでiceberg.itermcolorsというのが出てくるのが確認できたら、

PS >.\ColorTool.exe -b iceberg.itermcolors

これで設定完了。次のようになったはずじゃ!

ps_iceberg3.png

しかしちともの足りないじゃろ?そうプロンプトが白一色なのじゃ!だからプロンプトをカスタマイズしたい人は第二章に行くのじゃ!


真っピンク(ないし濃紺ではない色)になっちゃった君は、次のようにするのじゃ!

ウィンドウの上の「Windows PowerShell」と書かれている上の白い枠の上で右クリックして「Defaults」をクリックして、下の画像の通りにするのじゃ!

ps_iceberg2.png

次にまたウィンドウの上の「Windows PowerShell」と書かれている上の白い枠の上で右クリックして今度は、「Properties」をクリックして、上の画像の通りにするのじゃ!

そして、一度すべての「Windows PowerShell」ウィンドウをとじて新しいウィンドウを開くと、うまくできているはずじゃ!


第二章 さらなる深みを目指すのじゃ!

~~ナレーション~~

さきほど、PowerShellをカスタマイズしましたが、ここではコンソールエミュレータの「ConEmu」を使います。そしてパッケージマネージャーである「Chocolatey」をインストールします。

~~ナレーションおわり~~


まず必要なものをインストールするのじゃ!


その1.Chocolateyをインストールするのじゃ!

PS >iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex


その2.Chocolateyを使って必要なパッケージをインストールするのじゃ!

PS >choco install git.install -y

PS >choco install conemu -y


その3.PowerShellモジュールをインストールするのじゃ!

下の四つのコマンドを一つずつ実行していくのじゃ!

PS >Install-PackageProvider NuGet -MinimumVersion '2.8.5.201' -Force

PS >Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
PS >Install-Module -Name 'posh-git'
PS >Install-Module -AllowClobber Get-ChildItemColor


ConEmuを開いて初期設定じゃ!


その1.ひらけConEmu!

ps_iceberg5.png


その2.OK?OKじゃ!

ps_iceberg4.png


その3.設定ウィンドウをひらけごま!

ps_iceberg6.png


その4.シングルインスタンスモード ON!

ps_iceberg7.png

チェックを入れることによって新しいインスタンスを実行するとき、新しいウィンドウを作るのではなく既存のウィンドウに新しいタブを作成します。


その5.PowerShellを使うのじゃ!

ps_iceberg9.png


その6.カラースキームは「Iceberg」にするのじゃ!

PowerShellを開いて、次の2つのコマンドを実行するのじゃ!

PS >Set-Location C:\Users\ユーザーネーム\AppData\Roaming

PS >notepad iceberg.xml

「iceberg.xml」というファイルはもともとないはずなので新しくつくるか聞かれたら「はい」とするのじゃよ。

そしてノートパッドが開いたら、この記事の一番下にある「iceberg.xml」ファイルのテキストをすべてコピーして開いたノートパッドにペーストするのじゃ!

そして下の画像の様に「General」、「Choose color scheme」で一番下にある「iceberg」を選択するのじゃ!

ps_iceberg12.png


プロファイルを作成するのじゃ!


その1.PowerShellを開くのじゃ!

そしてnotepad $PROFILEを実行するのじゃ。そして、下記のテキストを記述するのじゃ!

# ConEmu

Import-Module -Name posh-git
Import-Module Get-ChildItemColor
Set-Alias ls color-ls -option AllScope -Force
Set-Alias dir color-ls -option AllScope -Force


その2.プロンプトをカスタマイズするのじゃ!

ここではまずサンプルとして 、Joon's Blogを参考にするのじゃ!

ここでは上手くいくか確認するためにそのまま使うがここから自分好みにカスタムしていくのじゃよ。

下記テキストを一つ上の「その1.PowerShellを開くのじゃ!」でペーストした四行の下にペーストするのじゃ!

#Profile

function Test-Administrator {
$user = [Security.Principal.WindowsIdentity]::GetCurrent();
(New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

function prompt {
# https://github.com/dahlbyk/posh-git/wiki/Customizing-Your-PowerShell-Prompt
$origLastExitCode = $LastExitCode
Write-VcsStatus

if (Test-Administrator) { # if elevated
Write-Host "(Elevated) " -NoNewline -ForegroundColor White
}

Write-Host "$env:USERNAME@" -NoNewline -ForegroundColor DarkYellow
Write-Host "$env:COMPUTERNAME" -NoNewline -ForegroundColor Magenta
Write-Host " : " -NoNewline -ForegroundColor DarkGray

$curPath = $ExecutionContext.SessionState.Path.CurrentLocation.Path
if ($curPath.ToLower().StartsWith($Home.ToLower()))
{
$curPath = "~" + $curPath.SubString($Home.Length)
}

Write-Host $curPath -NoNewline -ForegroundColor Blue
Write-Host " : " -NoNewline -ForegroundColor DarkGray
Write-Host (Get-Date -Format G) -NoNewline -ForegroundColor DarkMagenta
Write-Host " : " -NoNewline -ForegroundColor DarkGray
$LastExitCode = $origLastExitCode
"`n$('>' * ($nestedPromptLevel + 1)) "
}

Import-Module posh-git

$global:GitPromptSettings.BeforeText = '['
$global:GitPromptSettings.AfterText = '] '

さて一度ConEmuを閉じてもう一度開くのじゃ!

クールで深海なConEmuができたじゃろう。

ここから、

「Settings」>「Size & Pos」>「Window size」でウィンドウサイズを調整するのじゃ!

「Settings」>「Fonts」>「Main console font」でフォントをお気にのフォントに変更するのじゃ!


おわりに(重要)

タイトルで「深海な」と書きましたが、テーマは「iceberg」つまり氷山です。

深い、浅いとは色の濃さのことです。

むかし、仙人なりたかったので仙人の気分で書きました。

仙人はもう飽きたので、つぎに仙人になりっきて記事を書くことはないと思います。


~重要~追記

「その2.プロンプトをカスタマイズするのじゃ!」でペーストした「$PROFILE」に下記テキストも追加してください。

function color-ls

{
$regex_opts = ([System.Text.RegularExpressions.RegexOptions]::IgnoreCase `
-bor [System.Text.RegularExpressions.RegexOptions]::Compiled)
$fore = $Host.UI.RawUI.ForegroundColor
$compressed = New-Object System.Text.RegularExpressions.Regex(
'\.(zip|tar|gz|rar|jar|war)$', $regex_opts)
$executable = New-Object System.Text.RegularExpressions.Regex(
'\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$', $regex_opts)
$text_files = New-Object System.Text.RegularExpressions.Regex(
'\.(txt|cfg|conf|ini|csv|log|xml|java|c|cpp|cs)$', $regex_opts)

Invoke-Expression ("Get-ChildItem $args") | ForEach-Object {
if ($_.GetType().Name -eq 'DirectoryInfo')
{
$Host.UI.RawUI.ForegroundColor = 'Magenta'
echo $_
$Host.UI.RawUI.ForegroundColor = $fore
}
elseif ($compressed.IsMatch($_.Name))
{
$Host.UI.RawUI.ForegroundColor = 'darkgreen'
echo $_
$Host.UI.RawUI.ForegroundColor = $fore
}
elseif ($executable.IsMatch($_.Name))
{
$Host.UI.RawUI.ForegroundColor = 'Red'
echo $_
$Host.UI.RawUI.ForegroundColor = $fore
}
elseif ($text_files.IsMatch($_.Name))
{
$Host.UI.RawUI.ForegroundColor = 'Yellow'
echo $_
$Host.UI.RawUI.ForegroundColor = $fore
}
else
{
echo $_
}
}
}


参考

https://devblogs.microsoft.com/commandline/introducing-the-windows-console-colortool/

https://github.com/microsoft/terminal/releases/tag/1904.29002

https://hodgkins.io/ultimate-powershell-prompt-and-git-setup

https://joonro.github.io/blog/posts/powershell-customizations.html#


iceberg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.12941176470588237</real>
<key>Green Component</key>
<real>0.09411764705882353</real>
<key>Red Component</key>
<real>0.08627450980392157</real>
</dict>
<key>Ansi 1 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.47058823529411764</real>
<key>Green Component</key>
<real>0.47058823529411764</real>
<key>Red Component</key>
<real>0.8862745098039215</real>
</dict>
<key>Ansi 10 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.5568627450980392</real>
<key>Green Component</key>
<real>0.792156862745098</real>
<key>Red Component</key>
<real>0.7529411764705882</real>
</dict>
<key>Ansi 11 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.5372549019607843</real>
<key>Green Component</key>
<real>0.6941176470588235</real>
<key>Red Component</key>
<real>0.9137254901960784</real>
</dict>
<key>Ansi 12 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.6745098039215687</real>
<key>Red Component</key>
<real>0.5686274509803921</real>
</dict>
<key>Ansi 13 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8274509803921568</real>
<key>Green Component</key>
<real>0.6274509803921569</real>
<key>Red Component</key>
<real>0.6784313725490196</real>
</dict>
<key>Ansi 14 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.807843137254902</real>
<key>Green Component</key>
<real>0.7686274509803922</real>
<key>Red Component</key>
<real>0.5843137254901961</real>
</dict>
<key>Ansi 15 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8705882352941177</real>
<key>Green Component</key>
<real>0.8313725490196079</real>
<key>Red Component</key>
<real>0.8235294117647058</real>
</dict>
<key>Ansi 2 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.5098039215686274</real>
<key>Green Component</key>
<real>0.7450980392156863</real>
<key>Red Component</key>
<real>0.7058823529411765</real>
</dict>
<key>Ansi 3 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.47058823529411764</real>
<key>Green Component</key>
<real>0.6431372549019608</real>
<key>Red Component</key>
<real>0.8862745098039215</real>
</dict>
<key>Ansi 4 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.7764705882352941</real>
<key>Green Component</key>
<real>0.6274509803921569</real>
<key>Red Component</key>
<real>0.5176470588235295</real>
</dict>
<key>Ansi 5 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.7803921568627451</real>
<key>Green Component</key>
<real>0.5764705882352941</real>
<key>Red Component</key>
<real>0.6274509803921569</real>
</dict>
<key>Ansi 6 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.7607843137254902</real>
<key>Green Component</key>
<real>0.7215686274509804</real>
<key>Red Component</key>
<real>0.5372549019607843</real>
</dict>
<key>Ansi 7 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.7843137254901961</real>
<key>Red Component</key>
<real>0.7764705882352941</real>
</dict>
<key>Ansi 8 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.5372549019607843</real>
<key>Green Component</key>
<real>0.4392156862745098</real>
<key>Red Component</key>
<real>0.4196078431372549</real>
</dict>
<key>Ansi 9 Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.5372549019607843</real>
<key>Green Component</key>
<real>0.5372549019607843</real>
<key>Red Component</key>
<real>0.9137254901960784</real>
</dict>
<key>Background Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.12941176470588237</real>
<key>Green Component</key>
<real>0.09411764705882353</real>
<key>Red Component</key>
<real>0.08627450980392157</real>
</dict>
<key>Bold Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.7843137254901961</real>
<key>Red Component</key>
<real>0.7764705882352941</real>
</dict>
<key>Cursor Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.7843137254901961</real>
<key>Red Component</key>
<real>0.7764705882352941</real>
</dict>
<key>Cursor Text Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.12941176470588237</real>
<key>Green Component</key>
<real>0.09411764705882353</real>
<key>Red Component</key>
<real>0.08627450980392157</real>
</dict>
<key>Foreground Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.7843137254901961</real>
<key>Red Component</key>
<real>0.7764705882352941</real>
</dict>
<key>Selected Text Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.8196078431372549</real>
<key>Green Component</key>
<real>0.7843137254901961</real>
<key>Red Component</key>
<real>0.7764705882352941</real>
</dict>
<key>Selection Color</key>
<dict>
<key>Color Space</key>
<string>sRGB</string>
<key>Blue Component</key>
<real>0.12941176470588237</real>
<key>Green Component</key>
<real>0.09411764705882353</real>
<key>Red Component</key>
<real>0.08627450980392157</real>
</dict>
</dict>
</plist>