Windows Terminalがすごすぎた件

WinAPIとかVue.jsとかフラフラした3連休を過ごしています、みなとです。

以前からちょくちょく使っていましたが、設定などを調べてカスタマイズしていったら結構細かいところまで自分好みにできたので雑感などを。

Windows Terminalとは

Windowsでは命令をコマンドベースで記述するのにレガシーのコマンドプロンプトやWindows7以降にはPowerShellがありますが、こういったコマンドラインインタフェース(Command Line Interface: CLI)を統合して一つのアプリケーションとして操作できるようにしたのがこのWindows Terminalになります。

去年の春辺りに発表されており、今入手できるのはMicrosoftストア経由でプレビュー版となります。ちょうど先週リリース候補(RC)版がリリースされ、4月に正式リリース予定となっています。

見た目はこんな感じ。初期設定のままだと「CLIにタブが付いた程度」くらいの違いしか分かりません。

こちらから入手できます。

何がすごいのか

とりあえず公式のYouTube動画をご覧ください。

どう?クソかっこよくない??(低能)

まぁ冗談はさておいて特長を簡単にまとめると(出典・Wikipedia)

  • タブ機能付きインタフェース
  • UTF-8及びUTF-16のサポート(CJK統合漢字及び絵文字を含む)
  • ハードウェア・アクセラレータに対応したDirectWrite/DirectXベースのテキスト描画
  • ウィンドウの透過効果のサポート
  • トゥルーカラーのサポート
  • テーマのサポート
  • JSONによる設定ファイル
  • Microsoft UI Automation (UIA) ツリーを介したMicrosoft Narratorとの互換性
  • Azure Cloud Shell Connector
  • クリップボードへテキストをコピーする際に、HTMLとしてマークアップしてコピーする機能
  • 標準フォント「Cascadia Code」採用

こんな感じです。

正直、普段CLIを使ってない方には誰得機能だと思われるかもしれませんが、Linuxライクというか自動化とか諸々の事情で最近コマンドラインの需要が高まっており、MSがそのニーズに答えたかたちではないかと思います。WindowsでUbuntuが動かせる機能(Windows Subsystem for Linux: WSL)も割とちゃんと使えるようになってきたのでこれからWindows Terminalが役立つ場面は多くなるのではないでしょうか。

個人的に嬉しいのはWindows 10(の最近のバージョン?)でOpenSSHクライアントを標準でサポートしてくれたことです。これも相まってWindowsからssh接続といったらTera Termに代表されるサードパーティのフリーソフトが長きに渡り覇権を握っていましたが、その情勢が一変しそうな気配です。

設定をカスタマイズする

Windows Terminalの設定ボタンを押すとやにわに無骨なJSONファイルがデフォルトのテキストエディタで開かれ、面喰らいます。

「こんなん出されてもリファレンスのないのに分かるかいボケ」と思っていたのですが、ちゃんとあったのです、GitHubに……

デフォルトプロファイル

全部のシェルで一括して設定する項目は defaults に定義します。同時に個別の設定を list に入れ、階層を一つ下げます。

{
    ...
    "profiles":
    {
        "defaults":
        {
            "acrylicOpacity": 0.8,
            "fontFace": "MigMix 1M",
            "fontSize": 12,
            "useAcrylic": true
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "hidden": false
            },
            ...
        ]
}

acrylicOpacity は画面の透過設定です。0~1の範囲で設定し、小さいほど透明、大きいほど不透明になります。この設定を反映するには併せて useAcrylic プロパティを true に設定する必要があります。上記リファレンスにも書いてありますが、フォーカスが外れると不透明になります。これはOSの制約だそうです。

あとはフォントをお気に入りのやつにしました。Cascadia Codeのフォントもいいなと思ったのですが、若干日本語がヨコに伸びて見えるのが惜しいポイントかな、と。

シェル追加

このブログをホストしている自宅サーバをメンテするときTera Termを使っていたのですが、これもWindows Terminalから一発で起動できるよう、シェルを追加します。

Azure Cloud Shellの設定に繋げて、以下のように書きました。

{
    ...
    {
        ...
        "list"
        [
            ...
            {
                "guid": "{1018f5bc-3f84-4661-a430-d3ce4ddf9c30}",
                "hidden": false,
                "name": "minatoproject",
                "commandline": "ssh -p [PORT] [USERNAME]@[HOSTNAME]"
            }
        ]
    },
    ...
}

セキュリティの都合上一部マスクしますが、やっていることは普通にsshコマンドです。公開鍵認証なのでこれだとシェルを開いた時に秘密鍵のパスフレーズを毎回聞かれますが、そこはそういうもんだと目を瞑ることにします。

なお guid ですがこれはこういう感じのフォーマットの文字列で他と重複していなければ何でもよく、PowerShellで生成するのが一番簡単かなと思います。

$ [Guid]::NewGuid()

Guid
----
8b682990-583d-4b8d-bb03-55e817b8177b

参考サイト

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です