<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Windows Terminal on kenji.blog</title><link>http://kenji.blog/en/tags/windows-terminal/</link><description>Recent content in Windows Terminal on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/en/tags/windows-terminal/index.xml" rel="self" type="application/rss+xml"/><item><title>Ultimate Customization Guide for Windows Terminal (Themes and Prompt Settings)</title><link>http://kenji.blog/en/p/windows-terminal-ultimate-customization-guide/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/windows-terminal-ultimate-customization-guide/</guid><description>&lt;img src="http://kenji.blog/p/windows-terminal-ultimate-customization-guide/img/eyecatch.jpg" alt="Featured image of post Ultimate Customization Guide for Windows Terminal (Themes and Prompt Settings)" />&lt;h1 id="introduction-why-customize-windows-terminal-to-the-limit">Introduction: Why Customize Windows Terminal to the Limit?
&lt;/h1>&lt;p>In modern software development, a terminal emulator is more than just a command input/output interface; it has become the most crucial &amp;ldquo;cockpit&amp;rdquo; that directly dictates a developer&amp;rsquo;s productivity. The standard &amp;ldquo;Command Prompt (cmd.exe)&amp;rdquo; and traditional &amp;ldquo;Windows PowerShell&amp;rdquo; console (conhost.exe) in past Windows environments were vastly inferior compared to the refined terminal environments of Linux and macOS due to their poor rendering performance, low customizability, and incomplete Unicode support.&lt;/p>
&lt;p>However, with the advent of &amp;ldquo;Windows Terminal,&amp;rdquo; an open-source project led by Microsoft, the situation has dramatically changed. With ultra-fast text rendering driven by DirectX-based hardware acceleration, native support for tabbed UI and pane splitting, freely configurable shortcut keys, and advanced profile management features, Windows Terminal is an extremely powerful application that satisfies all the requirements of a &amp;ldquo;modern terminal&amp;rdquo; that developers have truly sought after.&lt;/p>
&lt;p>In this article, we provide an ultimate customization guide to elevate this Windows Terminal into the &amp;ldquo;strongest&amp;rdquo; environment. Going beyond superficial visual changes, we will provide thorough and technical explanations covering the mathematical models underlying text rendering, the deep structure of &lt;code>settings.json&lt;/code>, the introduction of Oh My Posh in PowerShell, setting up Starship in a WSL environment, and even a theoretical analysis of rendering latency.&lt;/p>
&lt;p>We hope this article helps readers build their own ultimate terminal environment and dramatically improve their daily coding experience.&lt;/p>
&lt;hr>
&lt;h1 id="1-windows-terminal-rendering-architecture-and-mathematical-model">1. Windows Terminal Rendering Architecture and Mathematical Model
&lt;/h1>&lt;p>Behind the incredibly fast and smooth operation of Windows Terminal lies a sophisticated rendering pipeline that fully utilizes the modern Windows graphics stack. Replacing the traditional GDI (Graphics Device Interface), Windows Terminal adopts GPU-based hardware acceleration utilizing DirectWrite and DirectX (Direct2D/Direct3D).&lt;/p>
&lt;p>Below is a conceptual diagram of the terminal rendering pipeline from key input to text rendering on the screen.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;User Input (Keyboard/Mouse)&amp;#34;] --&amp;gt; B[&amp;#34;ConPTY (Console Pseudoterminal API)&amp;#34;]
B --&amp;gt; C[&amp;#34;Terminal Application Logic (Input Thread)&amp;#34;]
C --&amp;gt; D[&amp;#34;Text Buffer Management &amp;amp; Parser&amp;#34;]
D --&amp;gt; E[&amp;#34;DirectWrite (Text Layout &amp;amp; Shaping)&amp;#34;]
E --&amp;gt; F[&amp;#34;Direct2D/Direct3D (Hardware Rendering)&amp;#34;]
F --&amp;gt; G[&amp;#34;GPU Frame Buffer&amp;#34;]
G --&amp;gt; H[&amp;#34;Display Output&amp;#34;]
style A fill:#f9f,stroke:#333,stroke-width:2px
style H fill:#9ff,stroke:#333,stroke-width:2px
&lt;/pre>
&lt;h2 id="11-subpixel-antialiasing-and-geometry-of-fonts">1.1 Subpixel Antialiasing and Geometry of Fonts
&lt;/h2>&lt;p>In text rendering, antialiasing technology is essential to ensure high visibility that prevents eye fatigue even during long hours of work. DirectWrite supports advanced subpixel antialiasing applying ClearType technology.&lt;/p>
&lt;p>Each pixel on a typical LCD (Liquid Crystal Display) consists of three vertical or horizontal subpixels: R (Red), G (Green), and B (Blue). Subpixel antialiasing is a technology that controls luminance using the high spatial resolution of these 1/3 pixel units rather than single pixel units (grayscale antialiasing).&lt;/p>
&lt;p>Let $ f(x, y) $ be a binary function defining the ideal vector font glyph outline. If the coordinates $ (x, y) $ within a pixel are inside the glyph, $ f(x, y) = 1 $, and if outside, $ f(x, y) = 0 $.&lt;/p>
&lt;p>The luminance $ I_R $ of a single subpixel (e.g., the red subpixel) is calculated as the convolution of the integral of $ f(x, y) $ in the spatial domain $ S_R $ of that subpixel and a filter function $ h(x, y) $ for correcting the physical characteristics of the display and human visual characteristics (such as gamma characteristics).&lt;/p>
$$
I_R = \iint_{S_R} f(x, y) \ast h(x, y) \,dx\,dy
$$&lt;p>Similarly, green ($ I_G $) and blue ($ I_B $) are calculated based on their respective domains $ S_G, S_B $. In Windows Terminal, these complex subpixel-level integration and convolution operations are massively parallel-processed using pre-generated glyph caches (Atlas textures) and GPU pixel shaders, realizing beautiful text rendering without delay and without putting a load on the CPU.&lt;/p>
&lt;hr>
&lt;h1 id="2-complete-understanding-and-deep-configuration-of-settingsjson">2. Complete Understanding and Deep Configuration of settings.json
&lt;/h1>&lt;p>The core of Windows Terminal customization lies in editing the configuration file, &lt;code>settings.json&lt;/code>. While many items can be changed from the GUI settings screen, knowledge of editing JSON directly is essential for pursuing ultimate customization and for version-controlling settings with Git or similar tools.&lt;/p>
&lt;p>The configuration file mainly consists of the following three major sections:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>profiles&lt;/code>&lt;/strong>: Defines the behavior and appearance (font, background, starting directory) for each shell (PowerShell, cmd, WSL, Azure Cloud Shell, etc.).&lt;/li>
&lt;li>&lt;strong>&lt;code>schemes&lt;/code>&lt;/strong>: Defines the 16-color palettes (color schemes) used within the terminal.&lt;/li>
&lt;li>&lt;strong>&lt;code>actions&lt;/code>&lt;/strong>: Defines custom actions (keybindings and pane splitting) invoked by shortcut keys or the command palette.&lt;/li>
&lt;/ol>
&lt;h2 id="21-profile-hierarchical-structure-and-inheritance-model">2.1 Profile Hierarchical Structure and Inheritance Model
&lt;/h2>&lt;p>In profile settings, configurations common to all profiles are described in the &lt;code>defaults&lt;/code> object, and individual configurations are described in each object within the &lt;code>list&lt;/code> array. This inheritance model eliminates redundancy in the configuration file and improves maintainability.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;profiles&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;defaults&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;font&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;face&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;CaskaydiaCove Nerd Font&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;size&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;weight&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;normal&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;features&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;calt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;liga&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.85&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorShape&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;filledBox&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorBlinking&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;padding&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;12, 12, 12, 12&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;antialiasingMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;cleartype&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;historySize&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10000&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;list&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{574e775e-4f2a-5b96-ac1e-a2962a402336}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.PowershellCore&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\Terminal\\cyberpunk_bg.png&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">0.15&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;uniformToFill&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;%USERPROFILE%\\Projects&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;guid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;{2c4de342-38b7-51cf-b940-2309a097f518}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;hidden&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Windows.Terminal.Wsl&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colorScheme&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;One Half Dark&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;startingDirectory&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;\\\\wsl$\\Ubuntu-22.04\\home\\username&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>In the example above, a setting to enable ligatures in the font &lt;code>&amp;quot;features&amp;quot;: { &amp;quot;calt&amp;quot;: 1, &amp;quot;liga&amp;quot;: 1 }&lt;/code> is added. This allows multiple symbols like &lt;code>!=&lt;/code> and &lt;code>=&amp;gt;&lt;/code> to be rendered as a single beautiful symbol suitable for programming.&lt;/p>
&lt;h2 id="22-modular-configuration-with-json-fragments">2.2 Modular Configuration with JSON Fragments
&lt;/h2>&lt;p>Windows Terminal supports an extension mechanism called &amp;ldquo;JSON Fragments.&amp;rdquo; This is a mechanism by which third-party applications (for example, a newly installed WSL distribution or a development tool like Visual Studio) can dynamically and safely add their own profiles and color schemes to the terminal without directly modifying the user&amp;rsquo;s main &lt;code>settings.json&lt;/code>.&lt;/p>
&lt;p>Developers can also apply this mechanism when they want to manage their own settings in a modular way (simply placing JSON files in a specified directory will merge them).&lt;/p>
&lt;hr>
&lt;h1 id="3-supreme-visual-experience-the-art-of-themes-fonts-and-backgrounds">3. Supreme Visual Experience: The Art of Themes, Fonts, and Backgrounds
&lt;/h1>&lt;p>Terminal color schemes are crucial factors directly tied not just to good looks, but to the readability of code and logs, and reducing eye strain during long hours of work.&lt;/p>
&lt;h2 id="31-creating-and-applying-color-schemes">3.1 Creating and Applying Color Schemes
&lt;/h2>&lt;p>Numerous color schemes for Windows Terminal are published on the internet (the website &amp;ldquo;Windows Terminal Themes&amp;rdquo; is well-known). By adding these to the &lt;code>schemes&lt;/code> array, you can use any color palette you like.&lt;/p>
&lt;p>Below is an example JSON definition for the &amp;ldquo;Tokyo Night&amp;rdquo; theme, which has been extremely popular among developers in recent years. It is an eye-friendly, high-contrast theme based on blue and purple.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;schemes&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Tokyo Night&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;background&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#1A1B26&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;foreground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;black&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#32344A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;red&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;green&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;yellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;blue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;purple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;white&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#A9B1D6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlack&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#414868&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightRed&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#F7768E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightGreen&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#9ECE6A&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightYellow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#E0AF68&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightBlue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7AA2F7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightPurple&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#BB9AF7&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightCyan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#7DCFFF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;brightWhite&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cursorColor&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#C0CAF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;selectionBackground&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#33467C&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Each color is specified by a hexadecimal color code (HEX) and corresponds to each color number (0-15) of the ANSI escape sequence.&lt;/p>
&lt;h2 id="32-introducing-nerd-fonts-and-optimizing-font-settings-caskaydiacove-nerd-font">3.2 Introducing Nerd Fonts and Optimizing Font Settings (CaskaydiaCove Nerd Font)
&lt;/h2>&lt;p>When using advanced prompt tools like Oh My Posh or Starship (described later), a font containing special glyphs (icons) such as Git branch icons, programming language logos, and OS symbols is essential. Fonts that have patched (added) these icons to existing programming fonts are called &amp;ldquo;&lt;strong>Nerd Fonts&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;p>&amp;ldquo;Cascadia Code&amp;rdquo;, a programming font developed by Microsoft, is extremely readable and excellent, but it does not include Nerd Font icons by default. Therefore, we highly recommend introducing &amp;ldquo;&lt;strong>CaskaydiaCove Nerd Font&lt;/strong>&amp;rdquo;, which applies the Nerd Font patch to Cascadia Code.&lt;/p>
&lt;h3 id="installation-steps">Installation Steps:
&lt;/h3>&lt;ol>
&lt;li>Download &lt;code>CascadiaCode.zip&lt;/code> from the &lt;a class="link" href="https://github.com/ryanoasis/nerd-fonts/releases" target="_blank" rel="noopener"
>official Nerd Fonts GitHub releases page&lt;/a>.&lt;/li>
&lt;li>Extract it, right-click the &lt;code>.ttf&lt;/code> files inside, and select &amp;ldquo;Install for all users&amp;rdquo;.&lt;/li>
&lt;li>Change &lt;code>font.face&lt;/code> in &lt;code>settings.json&lt;/code> to &lt;code>&amp;quot;CaskaydiaCove Nerd Font&amp;quot;&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="33-creating-immersion-with-acrylic-effects-and-background-images">3.3 Creating Immersion with Acrylic Effects and Background Images
&lt;/h2>&lt;p>One of the features embodying the Fluent Design System in Windows 11 is the &amp;ldquo;Acrylic&amp;rdquo; material effect. You can make the terminal background translucent, beautifully blurring and showing through the windows and wallpaper behind it.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;useAcrylic&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;acrylicOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.75&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Furthermore, it is also possible to set any image as the background. Gif animations are also supported, allowing you to create dynamic backgrounds. The placement and opacity of the image can also be finely controlled.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImage&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;C:\\Users\\Username\\Pictures\\wallpapers\\anime_cyberpunk.gif&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageOpacity&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="mf">0.2&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageStretchMode&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;none&amp;#34;&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;backgroundImageAlignment&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="s2">&amp;#34;bottomRight&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This allows for customizations that boost motivation, such as discreetly placing a favorite character or logo in the bottom right corner of the terminal.&lt;/p>
&lt;hr>
&lt;h1 id="4-maximizing-productivity-pane-splitting-keybindings-and-command-palette">4. Maximizing Productivity: Pane Splitting, Keybindings, and Command Palette
&lt;/h1>&lt;p>Windows Terminal natively features the basic functionalities (screen pane splitting) possessed by terminal multiplexers like tmux and screen.&lt;/p>
&lt;p>By customizing the &lt;code>actions&lt;/code> section, you can freely split, move, and resize screens using only keyboard operations, without ever touching the mouse.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;actions&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;auto&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;splitMode&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;duplicate&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+d&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+plus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;splitPane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;split&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+minus&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;moveFocus&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+left&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+right&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+up&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;resizePane&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;direction&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alt+shift+down&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;closePane&amp;#34;&lt;/span> &lt;span class="p">},&lt;/span> &lt;span class="nt">&amp;#34;keys&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ctrl+w&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>By setting the keybindings above, you can adjust pane sizes with &lt;code>Alt + Shift + Arrow keys&lt;/code> and instantly shift focus between panes with &lt;code>Alt + Arrow keys&lt;/code>. This enables seamless advanced concurrent work, such as starting a Node.js local server in one pane to monitor logs, executing Git commands in another pane, and checking the status of Docker containers in yet another pane.&lt;/p>
&lt;h2 id="41-quake-mode-global-dropdown-terminal">4.1 Quake Mode (Global Dropdown Terminal)
&lt;/h2>&lt;p>A &amp;ldquo;Quake Mode&amp;rdquo; (dropdown mode) is also supported, allowing you to summon the terminal from the top of the screen at any time, just like the console screen in the FPS game &amp;ldquo;Quake&amp;rdquo;. By default, pressing the &lt;code>Win + \&lt;/code> keys will slide down a terminal half the size of the window from the top with an animation. This is extremely convenient when you want to quickly type a command.&lt;/p>
&lt;hr>
&lt;h1 id="5-automating-startup-layouts-using-wtexe">5. Automating Startup Layouts Using &lt;code>wt.exe&lt;/code>
&lt;/h1>&lt;p>Routine tasks, such as opening a terminal in a specific project directory at the start of work every morning, splitting the screen into three, and executing commands for frontend building, backend server startup, and database monitoring in each, should be automated.&lt;/p>
&lt;p>&lt;code>wt.exe&lt;/code>, the actual executable for Windows Terminal, supports powerful command-line arguments, allowing you to control the profile specified at startup and the pane splitting state via arguments.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">wt&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;PowerShell 7&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;C:\Projects\MyApp&amp;#34;&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;Ubuntu-22.04&amp;#34;&lt;/span> &lt;span class="n">-d&lt;/span> &lt;span class="s2">&amp;#34;/var/log&amp;#34;&lt;/span> &lt;span class="n">-V&lt;/span> &lt;span class="p">;&lt;/span> &lt;span class="nb">split-pane&lt;/span> &lt;span class="n">-p&lt;/span> &lt;span class="s2">&amp;#34;cmd&amp;#34;&lt;/span> &lt;span class="n">-H&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>By saving this command as a Windows shortcut or batch file, you can instantly restore a complex development environment layout with a single click.&lt;/p>
&lt;hr>
&lt;h1 id="6-the-evolution-of-prompts-1-powershell-and-oh-my-posh">6. The Evolution of Prompts 1: PowerShell and Oh My Posh
&lt;/h1>&lt;p>&amp;ldquo;&lt;strong>Oh My Posh&lt;/strong>&amp;rdquo; dramatically evolves PowerShell (especially the cross-platform latest version PowerShell 7 / PowerShell Core), the standard shell in Windows environments. Oh My Posh is a custom prompt engine that supports all shells, beautifully and visually presenting all the states necessary for development, such as the current directory, Git branch and change status, Node.js and Python versions, Kubernetes contexts, and more.&lt;/p>
&lt;p>The diagram below shows the sequence of how Oh My Posh is loaded and the prompt is rendered when PowerShell starts.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
participant U as &amp;#34;User&amp;#34;
participant WT as &amp;#34;Windows Terminal&amp;#34;
participant PS as &amp;#34;PowerShell Core (pwsh.exe)&amp;#34;
participant P as &amp;#34;$PROFILE (Microsoft.PowerShell_profile.ps1)&amp;#34;
participant OMP as &amp;#34;Oh My Posh Executable&amp;#34;
U-&amp;gt;&amp;gt;WT: &amp;#34;Launch PowerShell Profile&amp;#34;
WT-&amp;gt;&amp;gt;PS: &amp;#34;Start Process&amp;#34;
PS-&amp;gt;&amp;gt;P: &amp;#34;Load Profile Script&amp;#34;
P-&amp;gt;&amp;gt;OMP: &amp;#34;oh-my-posh init pwsh&amp;#34;
OMP--&amp;gt;&amp;gt;P: &amp;#34;Return Prompt Rendering Script/Functions&amp;#34;
P--&amp;gt;&amp;gt;PS: &amp;#34;Evaluate Functions (Invoke-Expression)&amp;#34;
PS-&amp;gt;&amp;gt;OMP: &amp;#34;Call oh-my-posh print primary (on every Enter key)&amp;#34;
OMP--&amp;gt;&amp;gt;PS: &amp;#34;Return ANSI Styled String&amp;#34;
PS--&amp;gt;&amp;gt;WT: &amp;#34;Output Prompt String&amp;#34;
WT--&amp;gt;&amp;gt;U: &amp;#34;Display Ready Prompt&amp;#34;
&lt;/pre>
&lt;h2 id="61-installing-and-configuring-oh-my-posh">6.1 Installing and Configuring Oh My Posh
&lt;/h2>&lt;p>In a Windows environment, it can be easily installed using the official package manager, &lt;code>winget&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">winget&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">JanDeDobbeleer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">OhMyPosh&lt;/span> &lt;span class="n">-s&lt;/span> &lt;span class="n">winget&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>After installation, edit your PowerShell profile script to initialize Oh My Posh so it is loaded at startup. The profile path is stored in the automatic variable &lt;code>$PROFILE&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">notepad&lt;/span> &lt;span class="nv">$PROFILE&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>When the file opens, append the following code:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Set aliases&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">ll&lt;/span> &lt;span class="nb">ls
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-Alias&lt;/span> &lt;span class="n">g&lt;/span> &lt;span class="n">git&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Enable predictive IntelliSense (PSReadLine module)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionSource&lt;/span> &lt;span class="nb">History
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Set-PSReadLineOption&lt;/span> &lt;span class="n">-PredictionViewStyle&lt;/span> &lt;span class="n">ListView&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Initialize Oh My Posh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Specify your preferred theme (e.g., jandedobbeleer).&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Built-in theme paths are in the environment variable $env:POSH_THEMES_PATH.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">init&lt;/span> &lt;span class="n">pwsh&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-config&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$env:POSH_THEMES_PATH&lt;/span>&lt;span class="s2">\tokyonight_storm.omp.json&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Invoke-Expression&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Terminal-Icons module to display icons for folders and files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># (Requires Install-Module -Name Terminal-Icons -Repository PSGallery -Force for the first time)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Import-Module&lt;/span> &lt;span class="n">-Name&lt;/span> &lt;span class="nb">Terminal-Icons&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Hundreds of themes (configs) are available, and it is also possible to completely create your own in JSON, YAML, or TOML formats. Using the concept of &amp;ldquo;segments,&amp;rdquo; you can design your prompt by freely combining the information displayed on the left and right sides.&lt;/p>
&lt;hr>
&lt;h1 id="7-the-evolution-of-prompts-2-fusion-of-wsl2-architecture-and-starship">7. The Evolution of Prompts 2: Fusion of WSL2 Architecture and Starship
&lt;/h1>&lt;p>WSL2 (Windows Subsystem for Linux 2), which allows you to run a real Linux kernel on Windows, is indispensable for modern web development and cloud-native development. To customize the prompt of the shell (Bash or Zsh) inside WSL, &amp;ldquo;&lt;strong>Starship&lt;/strong>&amp;rdquo; is the optimal solution.&lt;/p>
&lt;p>Starship is an extremely fast and highly customizable cross-shell prompt written in Rust. Its strength is that you can reproduce exactly the same prompt in any shell, such as Bash, Zsh, or Fish, just by writing one configuration file (TOML).&lt;/p>
&lt;h2 id="71-installing-starship">7.1 Installing Starship
&lt;/h2>&lt;p>Open a WSL terminal (Ubuntu, etc.) and run the official installation script.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -sS https://starship.rs/install.sh &lt;span class="p">|&lt;/span> sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Next, if you are using Bash, append the following to the end of &lt;code>~/.bashrc&lt;/code> to enable the hook:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.bashrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init bash&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>If you are using Zsh, append it to the end of &lt;code>~/.zshrc&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ~/.zshrc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">eval&lt;/span> &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>starship init zsh&lt;span class="k">)&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="72-ultimate-customization-via-starshiptoml">7.2 Ultimate Customization via starship.toml
&lt;/h2>&lt;p>Starship settings are written in &lt;code>~/.config/starship.toml&lt;/code>. Because it&amp;rsquo;s in TOML format, it is easier for humans to read and write than JSON, and it features the ability to write comments.&lt;/p>
&lt;p>Below is a configuration example to achieve a modern and informative prompt.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># ~/.config/starship.toml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Define the overall prompt format (order)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╭─](bold blue)$os$directory$git_branch$git_status$nodejs$python$golang$rust
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s2">[╰─$character](bold blue)&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># OS icon display settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">disabled&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">format&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[$symbol]($style) &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">os&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">symbols&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Ubuntu&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Windows&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Macos&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">Alpine&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Directory display settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">directory&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold cyan&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">read_only&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncation_length&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">truncate_to_repo&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Git branch settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_branch&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold purple&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Git status settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">git_status&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">style&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;bold red&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">modified&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">staged&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">untracked&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34; &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">deleted&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;✖ &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Prompt character (input line symbol)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">character&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">success_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold green)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">error_symbol&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;[❯](bold red)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>In this configuration, the prompt is structured in two lines. The first line displays the OS icon, the current directory path, the Git branch and state, and version information for each language environment (Node.js, Python, etc.). The second line is a simple input line, which prevents taking up screen space even when typing long commands.&lt;/p>
&lt;hr>
&lt;h1 id="8-terminal-rendering-latency-and-performance-mathematical-model">8. Terminal Rendering Latency and Performance Mathematical Model
&lt;/h1>&lt;p>One of the most important metrics for evaluating the usability of a terminal is &amp;ldquo;&lt;strong>Input Latency&lt;/strong>&amp;rdquo;. This refers to the time delay from pressing a key on the keyboard to the corresponding pixel color changing on the screen, providing visual feedback.&lt;/p>
&lt;p>This total latency $ T_{total} $ can be strictly modeled mathematically as the sum of the following components:&lt;/p>
$$
T_{total} = T_{hw\_input} + T_{os} + T_{pty} + T_{app} + T_{render} + T_{display}
$$&lt;p>The meaning and typical required time for each variable are as follows:&lt;/p>
&lt;ul>
&lt;li>$ T_{hw\_input} $: Hardware delay from when a keyboard&amp;rsquo;s mechanical switch turns on, is polled via the USB controller, and sends an interrupt signal (approx. 1-5 ms).&lt;/li>
&lt;li>$ T_{os} $: Message queue processing delay by the OS&amp;rsquo;s HID (Human Interface Device) driver layer (approx. 1-2 ms).&lt;/li>
&lt;li>$ T_{pty} $: Buffering and character encoding (e.g., UTF-8 to UTF-16) conversion delay by ConPTY (pseudo-terminal) (approx. 2-10 ms).&lt;/li>
&lt;li>$ T_{app} $: Command interpretation by the shell (PowerShell/Bash) and processing time determining screen output. Processing time for fetching Git status by Oh My Posh or Starship is also included here (approx. 10-50 ms).&lt;/li>
&lt;li>$ T_{render} $: Rendering delay for Windows Terminal (DirectWrite/DirectX) to rasterize text glyphs as textures, transfer them to GPU memory, and flip the swap chain (approx. 2-8 ms).&lt;/li>
&lt;li>$ T_{display} $: Display delay from when the signal is output from the GPU frame buffer to the monitor until the liquid crystal molecules respond and physically change their emission state (such as GtG response time. approx. 5-20 ms).&lt;/li>
&lt;/ul>
&lt;p>The Windows Terminal development team has put immense effort into minimizing $ T_{pty} $ and $ T_{render} $ in particular. In early versions, spike-like delays (frame drops) occurred due to cache misses during text rasterization, but the latest versions have introduced an &amp;ldquo;Atlas-based glyph cache&amp;rdquo; algorithm.&lt;/p>
&lt;p>By atlasing glyphs, string rendering is reduced to a simple matrix operation on the GPU: &amp;ldquo;cropping from a massive font texture generated in memory beforehand, and alpha blending onto the screen&amp;rdquo;.&lt;/p>
&lt;p>When the target string to be rendered is $ N $ characters long, the sequential rendering cost by the CPU in the traditional GDI approach required $ \mathcal{O}(N) $ time, but with GPU-based atlas rendering, parallel shaders enable rendering in near-constant time $ \mathcal{O}(1) $.&lt;/p>
&lt;p>As a result, even under conditions where a massive amount of logs flow into standard output (e.g., &lt;code>npm install&lt;/code> or compilation messages of a large C++ project), Windows Terminal can continue to scroll text smoothly at 60fps (or in a high refresh rate environment of 144Hz or more) without experiencing processing drops.&lt;/p>
&lt;hr>
&lt;h1 id="9-advanced-troubleshooting-and-debugging-techniques">9. Advanced Troubleshooting and Debugging Techniques
&lt;/h1>&lt;p>When customizing Windows Terminal to the extreme, you may encounter unexpected issues such as syntax errors in the configuration file or font rendering glitches. Here, we introduce advanced troubleshooting techniques for engineers.&lt;/p>
&lt;h2 id="91-json-schema-validation-for-settingsjson">9.1 JSON Schema Validation for settings.json
&lt;/h2>&lt;p>The structure of &lt;code>settings.json&lt;/code> is strictly defined, and it is recommended to perform real-time syntax checking in an editor (such as VS Code) using JSON Schema. When you open &lt;code>settings.json&lt;/code> in VS Code, the Windows Terminal schema is applied by default, and invalid property names or value type errors (for example, specifying a string where a number is expected) are immediately warned with squiggly lines.&lt;/p>
&lt;h2 id="92-prompt-performance-profiling">9.2 Prompt Performance Profiling
&lt;/h2>&lt;p>If the prompt display is extremely slow (if there is a lag between pressing the enter key and the next input line appearing), it is highly likely that there is an issue with the execution time of Oh My Posh or Starship. Oh My Posh is equipped with an advanced debugging feature that measures the drawing time of each block.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">oh-my&lt;/span>&lt;span class="n">-posh&lt;/span> &lt;span class="n">debug&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Executing this command outputs terminal environment variables, loaded configuration file paths, and detailed processing milliseconds (ms) for each segment constituting the prompt. This allows you to pinpoint exactly which information retrieval (for example, getting Git status in a massive monorepo, checking cloud provider authentication status, or network latency) is the bottleneck, enabling tuning such as disabling unnecessary modules.&lt;/p>
&lt;h2 id="93-disabling-gpu-acceleration-fallback-to-software-rendering">9.3 Disabling GPU Acceleration (Fallback to Software Rendering)
&lt;/h2>&lt;p>On older hardware, or due to bugs in specific GPU drivers, hardware rendering via DirectX may cause rare cases of screen flickering or missing characters. In this case, there is a configuration option to forcefully fall back to software rendering.&lt;/p>
&lt;p>Add the following setting to the root level of &lt;code>settings.json&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;softwareRendering&amp;#34;&lt;/span>&lt;span class="err">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>This switches the drawing from the GPU to CPU-based (WARP). While performance decreases, you can ensure the accuracy of rendering. This serves as a powerful means when isolating graphics-related issues.&lt;/p>
&lt;hr>
&lt;h1 id="conclusion">Conclusion
&lt;/h1>&lt;p>The true value of Windows Terminal goes far beyond simply being an &amp;ldquo;alternative to the old Command Prompt.&amp;rdquo; The latest rendering technology utilizing DirectX, a flexible and powerful JSON-based configuration mechanism, and seamless integration with diverse shells like WSL and PowerShell. By deeply understanding these and customizing them to fit into your hands, the friction in the development process will be reduced to the absolute minimum.&lt;/p>
&lt;p>The various configuration techniques explained in this article — tuning color schemes, expanding visual information with Nerd Fonts, smart context-aware prompts with Oh My Posh and Starship, and building a multitasking environment utilizing pane splitting. These will not only improve your daily coding experience but also heighten your very motivation when facing the terminal.&lt;/p>
&lt;p>There is no end to optimizing development environments. Every time new command-line tools emerge and OS architectures evolve, our terminals will likely change shape as well. We sincerely hope that this article will serve as a reliable guide for readers in their endless journey to explore the &amp;ldquo;ultimate development environment.&amp;rdquo;&lt;/p></description></item></channel></rss>