Help us understand the problem. What is going on with this article?

Windows TerminalをWSL用に軽くいじってみた

2020-06-13 追記
v0.11 で設定ファイルの構造が変わりましたので、それに合わせて設定した記事を書きました。
そちらも一緒に参照してください。( Windows Terminalの設定が変わったので改めていじる )

Windows Terminalが発表され、ストアからも簡単に落とせるようになってしばらく経ったものの、インストールしただけであんまり触れていなかったので、WSL用に軽く設定をいじってみた。

環境

  • Windows 10 Pro 1903
  • Windows Terminal (Preview) 0.7.3451.0
  • WSL
    • Ubuntu 18.04.3 LTS

触ったところ

  • WSLのUbuntuをデフォルトにする
    • 起動時のカレントディレクトリは %USERPROFILE% ではなくWSL上の /home/{user名} に変更
  • 起動時の行、列
  • フォント
  • カーソル
  • キーバインド
    • タブ操作
    • 画面分割

がっつりカスタマイズする人ではないので、ひとまずこのあたりを整えれば使っていけるかなと。

インストール

随分前にインストールしたのと、特に難しいことはないので割愛。Microsoft Storeから windows terminal で検索して Windows Terminal (Preview) をインストールする。

設定ファイル(profiles.json)を開く

Windows Terminalを起動し、 + の右隣のボタンで表示されるメニューの Settings か、 Ctrl + , で設定ファイルを開く。ちなみにこのファイルは %USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminal_{ランダムな文字列}\LocalState に格納されている。

image.png

profiles.json概要

構造をわかりやすくするためにいろいろ端折ったものがこちら。

profiles.json
{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" : 
    {
        "defaultProfile" : "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
        "keybindings" : 
        [
            {
                "command" : "closeTab",
                "keys" : 
                [
                    "ctrl+w"
                ]
            }
        ]
    },
    "profiles" : 
    [
        {
            "guid" : "{yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}",
            "name" : "Windows PowerShell"
        },
        {
            "guid": "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}",
            "name": "Ubuntu"
        }
    ],
    "schemes" : 
    [
        {
            "name" : "Solarized Dark"
        },
        {
            "name" : "Solarized Light"
        }
    ]
}

globals は文字通りWindows Terminal全体の設定。キーバインドの設定もここ。profiles に PowerShellやWSLのディストリビューション等の設定が並ぶ。 schemes はカラースキームの設定。試しにデフォルトで入ってた Solarized Dark にしてみたけど、 ls 打ったときにファイルとディレクトリの色の区別が付かなくなってしまったので、今回はやめました。

設定

設定項目についてはGithubリポジトリ内のドキュメントを参照する。

Ubuntuをデフォルトにする

profiles 内のUbuntuのprofileのguidを globalsdefaultProfile に指定する。

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" : 
    {

        (略)

        "defaultProfile" : "{2c4de342-38b7-51cf-b940-2309a097f518}",

        (略)

起動時のカレントディレクトリの設定はUbuntuのprofile内の startingDirectory で指定。WSLの場合は //wsl$/{ディストリビューション名}/home/{user名} となる。(ディストリビューション名は wslconfig /l で確認)

    "profiles" : 
    [
        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",

            (略)

            "startingDirectory" : "//wsl$/Ubuntu/home/hotaru",
            "name": "Ubuntu",
            "source": "Windows.Terminal.Wsl"
        }
    ],

    (略)

見た目系

行、列

globalsinitialRowsinitialCols で指定。

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" : 
    {
        (略)

        "initialCols" : 150,
        "initialRows" : 40,

        (略)

フォント、カーソル

こちらはUbuntuのprofile内で指定。

    "profiles" : 
    [
        {
            "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",

            (略)

            "acrylicOpacity" : 0.75,
            "useAcrylic" : true,
            "padding" : "0",
            "fontFace" : "Migu 1M",
            "fontSize" : 10,
            "cursorShape" : "filledBox",

            (略)

        }
    ],

    (略)
項目 説明
acrylicOpacity 透過率。0 ~ 1で指定。
useAcrylic true にしないと acrylicOpacity が反映されない。
padding ウィンドウ内の余白の設定。カンマ区切りで 0, 0, 0, 0 などとして左上右下で指定も可能。
fontFace フォントの指定。
fontSize フォントサイズ。
cursorShape カーソルの形の指定。値の種類はドキュメント参照。

ちなみに padding を指定したときとしないときはこんな感じ。

  • なし
    image.png

  • あり
    image.png

0にしても右と下に微妙にまだ余白が… 右はスクロールバーの分かな?
そして今回指定したフォントで全角記号を打つとこんな表示に… おしい…

image.png

キーバインド

タブ操作や画面分割あたりを手に馴染むように変更。デフォルトの closeTabctrl+w だったんですが、単語削除のキーバインドにぶつけてくるの個人的にはどうかと思う…
ちなみに一部のcommandについては前述のページに載ってないのものもあるので、こちらも合わせて参照。
terminal/AppKeyBindingsSerialization.cpp at master · microsoft/terminal

        "keybindings" : 
        [
            {
                "command" : "closeTab",
                "keys" : 
                [
                    "ctrl+shift+w"
                ]
            },
            {
                "command" : "newTab",
                "keys" : 
                [
                    "ctrl+shift+t"
                ]
            },
            {
                "command" : "splitVertical",
                "keys" : 
                [
                    "ctrl+alt+i"
                ]
            },
            {
                "command" : "splitHorizontal",
                "keys" : 
                [
                    "ctrl+alt+o"
                ]
            },
            {
                "command" : "nextTab",
                "keys" : 
                [
                    "ctrl+tab"
                ]
            },
            {
                "command" : "nextTab",
                "keys" : 
                [
                    "ctrl+right"
                ]
            },
            {
                "command" : "openSettings",
                "keys" : 
                [
                    "ctrl+,"
                ]
            },
            {
                "command" : "prevTab",
                "keys" : 
                [
                    "ctrl+shift+tab"
                ]
            },
            {
                "command" : "prevTab",
                "keys" : 
                [
                    "ctrl+left"
                ]
            },
        ],

変更、追加したもののみ記載してます。
split系のデフォルトが alt+shift++alt+shift+- なのが微妙に違和感あったので変更。
ちなみに同じコマンドに対して2つ以上のキーバインドを設定することも可能みたい。

あとキーバインドではないけど、文字列をドラッグして選択したときに自動でクリップボードにコピーするように globals 内で "copyOnSelect": true, を設定。

{
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "globals" : 
    {

        "copyOnSelect": true,

        (略)

ひとまず完成

こんな感じになりました。カラースキームも特に指定していないので地味ですね。
あと透過させても後ろの文字見えないやつ…
image.png

所感

前述のフォントの件だったり、タブを閉じた時に表示がおかしくなったり等、まだPreview版なので不具合はあるけど、それなりにカスタマイズできるしPowerShellもコマンドプロンプトもWSLもこれ1つで扱えるのでなかなかいい感じです。正式版が楽しみですね。

参考

hotaru51
アプリも書けるようになりたいインフラ寄りっぽい人。
https://www.hotaru51.com
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした