このページの本文へ

前へ 1 2 次へ

Windows Info 第261回

v1.6まで進化し、GUIでの設定ページも用意されたWindows Terminal

2021年02月07日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windows Terminalのプレビューv1.6が公開された。このバージョンでは、GUI設定ページが搭載されるなど、比較的大きく変更された。また、正式版でもv1.5が公開されている。v1.5に関しては、Preview版として以前紹介しているので、概要についてはその記事を見ていただきたい(「Preview版でv1.5まで進化したWindows Terminalの新機能を確認」)。

 なお、Microsoftストアで公開されているv1.5は、一部v1.6で修正された内容もを含んでいる。リリースに関する情報は、githubにリリースノートがある(https://github.com/microsoft/terminal/releases/tag/v1.5.10271.0)。

Windows Terminal Preview v1.6では、ついにGUI設定ページが搭載された

v1.6のプレビューで追加されたGUI設定ページ

 Windows Terminalは、これまで設定をjsonファイルの編集でする必要があった。開発者が使うことが多いものなので、外部のJsonエディタでの編集もそれほど苦ではないはずだが、今後は広く一般ユーザーの利用も考えられる。そこで、GUI設定ページの開発を昨年から進めていた。ただし、このGUI設定ページはまだ開発途上で、キー割り当てはまだなされていない。プレビュー版で利用する場合、まず、Settings.jsonに以下のようなキー割り当てを記述する。

{ "command": { "action": "openSettings", "target": "settingsUI" }, "keys": "ctrl+shift+," },

 ただし、v1.6でsettings.jsonの仕様が変わっており、v1.6で初めてWindows Terminalをインストールした場合、キー定義を書くのは「"actions":」になるが、v1.5以前に一回インストールしてsetting.jsonが存在する場合、「"keybindings":」になる点に注意してほしい(内側の構造は同じ)。

 これにより、「Ctrl+Shit+,」でGUI設定ページが開くようになるほか、コマンドパレット(Ctrl+Shift+P)からも「設定を開く」(英語だと「Open Settings...」)でページを表示するようになる。前記のキー割り当てをしないと、コマンドパレットにも表示されない。

 設定ページは、settings.jsonでしていたほとんどの内容をカバーしている。ただし、キー割り当てや特殊な設定(後述のHLSLシェーダーなど)は、settings.json側でする必要がある。

 設定ページはWindowsの設定アプリと同じく、左側に大項目、右側に設定ページがでる構造で、大項目は、「スタートアップ」、「操作」「概観」「配色」「レンダリング」の5項目とプロファイル設定になっている。

「操作」には、クリップボード操作やタブ切り替えなどに関する設定がある

「外観」は、テーマやタブバーの表示、タブ幅などの設定がある

「配色」は、Color-Schemeの設定になっていて、20色のカラーセットを指定する

「レンダリング」テキストレンダリングエンジンの設定

プロファイルの設定は、全プロファイルで共通となる「基本レイヤー」と各プロファイルの設定からなっているが、ページ構成は全て同じで、1つの項目に「全般」「外観」「詳細設定」の3つのタブがある

 settings.jsonの「"schemes":」が「配色」、「"profiles":」がプロファイルになっていて、そのほかは、Settings.jsonのトップレベルに記述していた項目が分類されて残りの4項目に割り当てられている。ちょっとした設定であれば、外部のJsonエディタを起動することなく設定変更が可能だ。

HLSLシェーダーのサポート

 こちらも実験的な機能だが、Windows Terminalのテキスト表示領域に対して、HLSL(High Level Shading Language)による描画機能が追加されている。これは、外部ファイルにあるHLSLシェーダープログラムを使うもの。シェーダープログラムはGPU側で処理するため、CPUに負荷をかけずに高速な描画が可能になる。これを利用するには、Profilesに以下の行を追加する。

"experimental.pixelShaderPath": "HLSLファイルパス",

 HLSLファイルはHLSLで記述されたソースコード(テキストファイル)で、Direct3DのコンパイラがGPUのバイナリシェーダープログラムに変換して実行する。

 以前からあったRetroTerminalEffectsは、このシェーダープログラムを利用したものだったようだ。外部のHLSLソースファイルを読み込んでコンパイルして利用できるようにして、ユーザーがさまざまなシェーダープログラムにより背景描画などをできるようにした。

 たとえば、サンプルとして提示されている「Rasterbars.hlsl」は、以下のリストのようにテキストのソースコードだが、これをsettings.jsonで指定すると、読み込み時に自動的にコンパイルされ、GPUがWindows Terminalの背景を描画する。

Texture2D shaderTexture;
SamplerState samplerState;
cbuffer PixelShaderSettings {
  float Time;
  float Scale;
  float2 Resolution;
  float4 Background;
};
float4 main(float4 pos : SV_POSITION, float2 tex : TEXCOORD) : SV_TARGET {
  float4 color = shaderTexture.Sample(samplerState, tex);
  float4 ocolor = shaderTexture.Sample(samplerState, tex+2.0*Scale*float2(-1.0, -1.0)/Resolution.y);
  const float thickness = 0.1;
  float ny = floor(tex.y/thickness);
  float my = tex.y%thickness;
  const float pi = 3.141592654;
  float cola = ny*2.0*pi;
  float3 col = 0.75+0.25*float3(sin(cola*0.111), sin(cola*0.222), sin(cola*0.333));
  float brightness = 1.0-smoothstep(0.0, thickness*0.5, abs(my - 0.5*thickness));
  float3 rasterColor = col*brightness;
  float3 final = rasterColor;
  final = lerp(final, float(0.0), ocolor.w);
  final = lerp(final, color.xyz, color.w);
  return float4(final, 1.0);
}

 このプログラムでは、背景に印影のついた横棒が表示される。よく見ると横棒の明るいところでは、文字の影が見える。

rasterbars.hlslを指定すると、陰影のある横棒が表示される。よく見ると2行目の"Copyright……"の部分は、背景のバーの上に影が落ちている。こうした表示はGPUのシェーダーで処理されるため、CPU側に影響を与えない

 サンプルは以下のURLにある。

●Pixel Shaders in Windows Terminal
 https://github.com/microsoft/terminal/tree/main/samples/PixelShaders#pixel-shaders-in-windows-terminal

 念のため言っておくと、ここはgithubなので、上記ページのhlslファイルのリンクを右クリックして保存しても、保存されるのはファイルの中身を表示しているHTMLファイルなので注意が必要。

 本来ならgitで取得するのだが、開発者でもなければ、gitをインストールするのは面倒だろうし、サンプルファイルだけほしいのにプロジェクト全部をダウンロードするのも無駄な感じがある。試してみたければ、リンクを開いて、HLSLのソースコードをコピーしてメモ帳に貼り付けるのが簡単かもしれない。

 サンプルをいろいろと試してみたが、どうもWindows Terminal側が提供しているはずの経過時間を示す、Timeなどのパラメーターが更新されないようで、時間で変化するアニメーションのサンプルAnimate_scan.hlsl、Animate_breathe.hlslは動作しなかった。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン