Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@beckorz

次世代WindowsターミナルソフトWindows Terminal

More than 1 year has passed since last update.

次世代WindowsターミナルソフトWindows Terminal

Microsoftがモダンな次期ターミナルソフト(?)として、オープンソースソフトウェアで開発中
https://github.com/microsoft/terminal

インストール

GitHubよりインストールバイナリ(msixbundle)を入手してインストールをする。
※ msixbundleインストーラーは、Windows 10 v1809 以降から対応しているので、必然的に1809以前は、verupしないと使用できない可能性。

以下、v0.9指定のものぐさインストール方法

REM When install
curl -k -L https://github.com/microsoft/terminal/releases/download/v0.9.433.0/Microsoft.WindowsTerminal_0.9.433.0_8wekyb3d8bbwe.msixbundle -O
powershell Add-AppPackage -path "Microsoft.WindowsTerminal_0.9.433.0_8wekyb3d8bbwe.msixbundle"
del "Microsoft.WindowsTerminal_0.9.433.0_8wekyb3d8bbwe.msixbundle"

REM When uninstall
REM powershell Remove-AppPackage -Package "Microsoft.WindowsTerminal_0.9.433.0_x64__8wekyb3d8bbwe"

あとは、wt.exe にパスが通ってるので、wt コマンドで起動可能(0.9以降より)

Settings

Windows Terminal起動後、メニューよりSettingsで、profiles.jsonを弄って編集する。GUIは現状用意されていない。編集後の保存時にリアルタイムで設定は反映される。
設定ファイルは、ファイル更新監視されているようで、設定保存したタイミングで動的にすぐに反映される。
(尚、中身を見ると、//コメントのjsonファイルを使ってるので、JSON.parse()等でエラーが出るかもで、気持ち悪い気もしますが最近のJSONパーサー的(jsoncpp使ってるいるよう)にはアリなんですかね)

profiles.jsonの保存場所は以下へ保存されている
%localappdata%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\profiles.json
(8wekyb3d8bbweはランダムな文字列)

デフォルト起動シェルの変更

デフォルト起動シェルは、PowerShellなので、cmdに変更したいとかの場合は、以下。
(jsonファイル内にcmd.exeのguidがあるので、そちらを後に書けば良い。個人的には、行を入れ替えればすぐに切り替え確認可能なので、以下のように同一ハッシュキーで別の値で上書きするスタイルが好き。)

{
    "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "defaultProfile": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
}

ダークモード

{
    "requestedTheme": "dark",
}

文字列選択時にコピー

{
    "copyOnSelect": true,
}

フォント変更

デフォルトはConsolasに設定されているようだが、リガチャ対応のCascadia Code(cascadia.ttf)もWindows Terminalの内部に同梱されている。好きなフォントで設定可能。またシェル毎に個別に設定変更可能

{
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
            "fontFace": "Consolas",
            "fontFace": "Cascadia Code",
            "fontSize": 9
        },
    }
}

Window透過設定

全シェル共通デフォルト設定以外にも、シェル毎に個別に設定変更可能

{
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
            "useAcrylic": true,
            "acrylicOpacity": 0.5
        },
    }
}

背景画像設定

動画gifとかも設定できるが五月蠅いのでほどほどに。Opacityや、StretchModeを細かく設定可能
- ref: How to customize the new Windows Terminal with Visual Studio Code - DEV Community 👩‍💻👨‍💻

{
    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles
            "backgroundImage": "ms-appdata:///roaming/images/backgrounds/matrix.gif",
            // 直接画像ファイルの場合は、パス区切りは \ ではなく、 / に置き換えて設定
            "backgroundImage": "C:/temp/WallPaper.jpg",
            "backgroundImageOpacity": 0.3,
            "backgroundImageStretchMode": "uniform",
            "backgroundImageStretchMode": "uniformToFill",
            "backgroundImageStretchMode": "none",
            "backgroundImageStretchMode": "fill",
        },
    }
}

ソフト内のデフォルト設定確認

そもそものソフト内のデフォルト設定は以下に同梱されており、直接確認も可能
C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_0.9.433.0_x64__8wekyb3d8bbwe\defaults.json

コマンドライン引数に対応(v0.9以降)

元々、アプリストア特有のms-~URIスキーム対応等をするのかと思いきや、v0.9からは、コマンドライン引数と言うか、アプリエイリアス対応をしてきてexe直接実行にも対応している。

> where wt
C:\Users\user\AppData\Local\Microsoft\WindowsApps\wt.exe

エスケープシーケンス対応

元々 cmd.exe では、完全なエスケープシーケンス対応がされていなかったが、Windows Terminal上のcmdではエスケープシーケンス対応も可能

chcp 65001 & curl ja.wttr.in

上記のようにchcpでコードページをUTF-8に変更してからだが、固定長フォントで見れば綺麗に見えるようになった💪

WindowsTerminal01.png

Vim の :terminal から wt.exe

Vimは、:terminal で他のシェル(bash, powershell, ubuntu等)を起動する事も可能だが、
v0.9 以降、wt.exe が同梱されるようになったので、:termも対応出来ているのか確認してみたが、
:term wt で実行してもGUIなWindows Terminalが普通に起動するだけで、Vim内表示出来る対応が出来ていない。
(コンソール系APIに対応していないWindows Terminal側の問題かな)

Refs

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
beckorz
Vimmer

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?