<?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/id/tags/windows-terminal/</link><description>Recent content in Windows Terminal on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>id</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/id/tags/windows-terminal/index.xml" rel="self" type="application/rss+xml"/><item><title>Mengustomisasi Windows Terminal Secara Ekstrem (Pengaturan Tema dan Prompt)</title><link>http://kenji.blog/id/p/windows-terminal-ultimate-customization-guide/</link><pubDate>Sun, 13 Sep 2026 00:00:00 +0900</pubDate><guid>http://kenji.blog/id/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 Mengustomisasi Windows Terminal Secara Ekstrem (Pengaturan Tema dan Prompt)" />&lt;h1 id="pendahuluan-mengapa-mengustomisasi-windows-terminal-secara-ekstrem">Pendahuluan: Mengapa Mengustomisasi Windows Terminal Secara Ekstrem?
&lt;/h1>&lt;p>Dalam pengembangan perangkat lunak modern, emulator terminal telah melampaui antarmuka input/output perintah biasa, menjadi &amp;ldquo;kokpit&amp;rdquo; paling penting yang secara langsung memengaruhi produktivitas pengembang. Standar sebelumnya di lingkungan Windows, yaitu &amp;ldquo;Command Prompt (cmd.exe)&amp;rdquo; dan konsol &amp;ldquo;Windows PowerShell&amp;rdquo; tradisional (conhost.exe), sangat tertinggal jika dibandingkan dengan lingkungan terminal yang canggih di Linux atau macOS, karena performa penggambaran dan kemampuannya untuk dikustomisasi yang rendah, serta dukungan Unicode yang tidak sempurna.&lt;/p>
&lt;p>Namun, dengan hadirnya &amp;ldquo;Windows Terminal&amp;rdquo; yang pengembangan sumber terbukanya dipimpin oleh Microsoft, situasinya berubah drastis. Rendering teks super cepat dengan akselerasi perangkat keras berbasis DirectX, dukungan native untuk antarmuka tab dan pembagian panel, pintasan keyboard yang dapat diatur dengan bebas, dan fitur manajemen profil tingkat lanjut. Windows Terminal adalah aplikasi yang sangat kuat yang memenuhi semua persyaratan &amp;ldquo;terminal modern&amp;rdquo; yang benar-benar diinginkan pengembang.&lt;/p>
&lt;p>Dalam artikel ini, kami menyediakan panduan kustomisasi pamungkas untuk mengangkat Windows Terminal ini menjadi lingkungan &amp;ldquo;terkuat&amp;rdquo;. Tidak hanya mengubah tampilan luar, kami akan menjelaskan secara menyeluruh dan dari perspektif teknis mengenai model matematis yang mendasari rendering teks, struktur mendalam &lt;code>settings.json&lt;/code>, pengenalan Oh My Posh di PowerShell, pembangunan Starship di lingkungan WSL, hingga analisis teoretis mengenai keterlambatan (delay) penggambaran.&lt;/p>
&lt;p>Semoga artikel ini dapat membantu para pembaca untuk membangun lingkungan terminal terbaik mereka sendiri dan meningkatkan pengalaman pengkodean sehari-hari secara drastis.&lt;/p>
&lt;hr>
&lt;h1 id="1-arsitektur-rendering-windows-terminal-dan-model-matematis">1. Arsitektur Rendering Windows Terminal dan Model Matematis
&lt;/h1>&lt;p>Di balik operasi Windows Terminal yang begitu cepat dan mulus, terdapat alur rendering canggih yang memanfaatkan tumpukan grafis modern Windows secara maksimal. Menggantikan GDI (Graphics Device Interface) konvensional, Windows Terminal mengadopsi akselerasi perangkat keras berbasis GPU yang memanfaatkan DirectWrite dan DirectX (Direct2D/Direct3D).&lt;/p>
&lt;p>Berikut adalah diagram konseptual dari alur rendering terminal, dari input tombol hingga karakter digambar di layar.&lt;/p>
&lt;pre class="mermaid">
flowchart TD
A[&amp;#34;Input Pengguna (Keyboard/Mouse)&amp;#34;] --&amp;gt; B[&amp;#34;ConPTY (API Konsol Pseudoterminal)&amp;#34;]
B --&amp;gt; C[&amp;#34;Logika Aplikasi Terminal (Utas Input)&amp;#34;]
C --&amp;gt; D[&amp;#34;Manajemen Buffer Teks &amp;amp; Parser&amp;#34;]
D --&amp;gt; E[&amp;#34;DirectWrite (Tata Letak Teks &amp;amp; Shaping)&amp;#34;]
E --&amp;gt; F[&amp;#34;Direct2D/Direct3D (Rendering Perangkat Keras)&amp;#34;]
F --&amp;gt; G[&amp;#34;GPU Frame Buffer&amp;#34;]
G --&amp;gt; H[&amp;#34;Keluaran Layar&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-anti-aliasing-subpiksel-font-dan-geometri">1.1 Anti-Aliasing Subpiksel Font dan Geometri
&lt;/h2>&lt;p>Dalam menggambar teks, teknologi anti-aliasing sangat penting untuk memastikan visibilitas tinggi yang tidak membuat mata lelah bahkan selama pekerjaan berjam-jam. DirectWrite mendukung anti-aliasing subpiksel tingkat lanjut yang menerapkan teknologi ClearType.&lt;/p>
&lt;p>Setiap piksel pada layar LCD (Liquid Crystal Display) umumnya terdiri dari tiga subpiksel vertikal atau horizontal: R (Merah), G (Hijau), dan B (Biru). Anti-aliasing subpiksel adalah teknologi yang mengontrol kecerahan menggunakan resolusi spasial tinggi unit 1/3 piksel ini, bukan satu unit piksel (anti-aliasing skala abu-abu).&lt;/p>
&lt;p>Misalkan fungsi biner yang menentukan kontur mesin terbang (glyph) dari font vektor ideal adalah $ f(x, y) $. Jika koordinat $ (x, y) $ dalam piksel berada di dalam glyph, maka $ f(x, y) = 1 $, dan jika berada di luar, maka $ f(x, y) = 0 $.&lt;/p>
&lt;p>Kecerahan $ I_R $ dari subpiksel tunggal (misalnya, subpiksel merah) dihitung sebagai konvolusi dari integral $ f(x, y) $ pada domain spasial $ S_R $ dari subpiksel tersebut dengan fungsi filter $ h(x, y) $ untuk mengoreksi karakteristik fisik tampilan dan karakteristik visual manusia (seperti karakteristik gamma).&lt;/p>
$$
I_R = \iint_{S_R} f(x, y) \ast h(x, y) \,dx\,dy
$$&lt;p>Demikian juga untuk hijau ($ I_G $) dan biru ($ I_B $), dihitung berdasarkan domain spasial masing-masing $ S_G, S_B $. Di Windows Terminal, operasi integral/konvolusi tingkat subpiksel yang kompleks ini diproses secara super paralel menggunakan cache glyph (Tekstur Atlas) yang dihasilkan sebelumnya dan pixel shader GPU, sehingga menghasilkan rendering teks yang indah tanpa penundaan dan tanpa membebani CPU.&lt;/p>
&lt;hr>
&lt;h1 id="2-pemahaman-lengkap-settingsjson-dan-pengaturan-mendalam">2. Pemahaman Lengkap settings.json dan Pengaturan Mendalam
&lt;/h1>&lt;p>Inti dari kustomisasi Windows Terminal terletak pada pengeditan file konfigurasi &lt;code>settings.json&lt;/code>. Banyak item yang juga dapat diubah melalui layar pengaturan GUI, tetapi untuk mengejar kustomisasi yang ekstrem dan mengelola versi pengaturan menggunakan Git, dll., pengetahuan untuk mengedit JSON secara langsung sangatlah penting.&lt;/p>
&lt;p>File konfigurasi terutama terdiri dari 3 bagian utama berikut:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>&lt;code>profiles&lt;/code>&lt;/strong>: Mendefinisikan perilaku dan tampilan (font, latar belakang, direktori awal) untuk setiap shell (PowerShell, cmd, WSL, Azure Cloud Shell, dll.).&lt;/li>
&lt;li>&lt;strong>&lt;code>schemes&lt;/code>&lt;/strong>: Mendefinisikan 16 palet warna (skema warna) yang digunakan di dalam terminal.&lt;/li>
&lt;li>&lt;strong>&lt;code>actions&lt;/code>&lt;/strong>: Mendefinisikan tindakan kustom (pengikatan tombol atau pembagian panel) yang dipanggil dari pintasan keyboard atau palet perintah.&lt;/li>
&lt;/ol>
&lt;h2 id="21-struktur-hierarki-profil-dan-model-pewarisan">2.1 Struktur Hierarki Profil dan Model Pewarisan
&lt;/h2>&lt;p>Dalam pengaturan profil, pengaturan yang umum untuk semua profil ditulis di objek &lt;code>defaults&lt;/code>, dan pengaturan individu ditulis di setiap objek dalam array &lt;code>list&lt;/code>. Melalui model pewarisan ini, redundansi file konfigurasi dapat dihilangkan dan pemeliharaannya dapat ditingkatkan.&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>Pada contoh di atas, pengaturan untuk mengaktifkan ligatur pada font &lt;code>&amp;quot;features&amp;quot;: { &amp;quot;calt&amp;quot;: 1, &amp;quot;liga&amp;quot;: 1 }&lt;/code> ditambahkan. Hal ini membuat beberapa simbol seperti &lt;code>!=&lt;/code> dan &lt;code>=&amp;gt;&lt;/code> digambar sebagai satu simbol indah yang cocok untuk pemrograman.&lt;/p>
&lt;h2 id="22-pengaturan-modular-dengan-fragmen-json">2.2 Pengaturan Modular dengan Fragmen JSON
&lt;/h2>&lt;p>Windows Terminal mendukung mekanisme ekstensi yang disebut &amp;ldquo;JSON Fragments&amp;rdquo;. Ini adalah mekanisme di mana aplikasi pihak ketiga (misalnya, distribusi WSL yang baru diinstal atau alat pengembangan seperti Visual Studio) dapat menambahkan profil dan skema warnanya sendiri ke terminal secara dinamis dan aman tanpa menimpa &lt;code>settings.json&lt;/code> utama pengguna secara langsung.&lt;/p>
&lt;p>Mekanisme ini juga dapat diterapkan ketika pengembang ingin membagi dan mengelola pengaturan kustom mereka sendiri (hanya dengan menempatkan file JSON di direktori yang ditentukan, maka file tersebut akan digabungkan).&lt;/p>
&lt;hr>
&lt;h1 id="3-pengalaman-visual-tertinggi-rahasia-tema-font-dan-latar-belakang">3. Pengalaman Visual Tertinggi: Rahasia Tema, Font, dan Latar Belakang
&lt;/h1>&lt;p>Skema warna terminal merupakan elemen penting yang terhubung langsung tidak hanya dengan estetika, tetapi juga dengan keterbacaan kode atau log dan pengurangan kelelahan mata saat bekerja berjam-jam.&lt;/p>
&lt;h2 id="31-membuat-sendiri-dan-menerapkan-skema-warna">3.1 Membuat Sendiri dan Menerapkan Skema Warna
&lt;/h2>&lt;p>Banyak skema warna untuk Windows Terminal dipublikasikan di internet (Situs web bernama &amp;ldquo;Windows Terminal Themes&amp;rdquo; sangat terkenal). Anda dapat menggunakan skema warna secara bebas dengan menambahkannya ke array &lt;code>schemes&lt;/code>.&lt;/p>
&lt;p>Berikut ini adalah contoh definisi JSON untuk tema &amp;ldquo;Tokyo Night&amp;rdquo; yang sangat populer di kalangan pengembang akhir-akhir ini. Ini adalah tema berbasis biru dan ungu yang ramah di mata dan kontrasnya tinggi.&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>Setiap warna ditentukan dalam kode warna heksadesimal (HEX) dan sesuai dengan masing-masing nomor warna (0-15) dari urutan escape ANSI.&lt;/p>
&lt;h2 id="32-pengenalan-nerd-fonts-dan-optimalisasi-pengaturan-font-caskaydiacove-nerd-font">3.2 Pengenalan Nerd Fonts dan Optimalisasi Pengaturan Font (CaskaydiaCove Nerd Font)
&lt;/h2>&lt;p>Saat menggunakan alat prompt tingkat lanjut seperti Oh My Posh dan Starship (akan dijelaskan nanti), Anda harus memiliki font yang mencakup glyph khusus (ikon) seperti ikon cabang Git, logo bahasa pemrograman, dan simbol OS. Font yang dipatch (ditambahkan) dengan ikon-ikon ini ke font pemrograman yang sudah ada disebut &amp;ldquo;&lt;strong>Nerd Fonts&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;p>Font pemrograman &amp;ldquo;Cascadia Code&amp;rdquo; yang dikembangkan oleh Microsoft sangat mudah dibaca dan luar biasa, tetapi secara default tidak menyertakan ikon Nerd Font. Oleh karena itu, sangat disarankan untuk memperkenalkan &amp;ldquo;&lt;strong>CaskaydiaCove Nerd Font&lt;/strong>&amp;rdquo;, yaitu Cascadia Code dengan patch Nerd Font yang diterapkan.&lt;/p>
&lt;h3 id="langkah-langkah-instalasi">Langkah-langkah Instalasi:
&lt;/h3>&lt;ol>
&lt;li>Unduh &lt;code>CascadiaCode.zip&lt;/code> dari &lt;a class="link" href="https://github.com/ryanoasis/nerd-fonts/releases" target="_blank" rel="noopener"
>Halaman Rilis GitHub Resmi Nerd Fonts&lt;/a>.&lt;/li>
&lt;li>Ekstrak, pilih file &lt;code>.ttf&lt;/code> di dalamnya, klik kanan, dan pilih &amp;ldquo;Instal untuk semua pengguna&amp;rdquo;.&lt;/li>
&lt;li>Ubah &lt;code>font.face&lt;/code> di &lt;code>settings.json&lt;/code> menjadi &lt;code>&amp;quot;CaskaydiaCove Nerd Font&amp;quot;&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="33-menghadirkan-imersi-dengan-efek-akrilik-dan-gambar-latar-belakang">3.3 Menghadirkan Imersi dengan Efek Akrilik dan Gambar Latar Belakang
&lt;/h2>&lt;p>Salah satu fitur yang mewujudkan Fluent Design System Windows 11 adalah efek material &amp;ldquo;Acrylic&amp;rdquo; (Akrilik). Anda dapat membuat latar belakang terminal menjadi semitransparan, memburamkan jendela atau wallpaper di belakangnya dengan indah.&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>Selain itu, dimungkinkan untuk menetapkan gambar apa pun sebagai latar belakang. Animasi GIF juga didukung, sehingga Anda dapat membuat latar belakang yang dinamis. Anda juga dapat mengontrol perataan dan opasitas gambar secara detail.&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>Ini memungkinkan kustomisasi yang meningkatkan motivasi, seperti menempatkan karakter atau logo favorit secara halus di sudut kanan bawah terminal.&lt;/p>
&lt;hr>
&lt;h1 id="4-memaksimalkan-produktivitas-pembagian-panel-keybinding-dan-palet-perintah">4. Memaksimalkan Produktivitas: Pembagian Panel, Keybinding, dan Palet Perintah
&lt;/h1>&lt;p>Windows Terminal secara native memiliki fungsi dasar (pembagian panel layar) yang dimiliki oleh terminal multiplexer seperti tmux atau screen.&lt;/p>
&lt;p>Dengan menyesuaikan bagian &lt;code>actions&lt;/code>, Anda akan dapat membagi, memindahkan, dan mengubah ukuran layar secara bebas hanya dengan menggunakan operasi keyboard, tanpa perlu menyentuh mouse sama sekali.&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>Dengan mengatur pengikatan tombol di atas, Anda dapat menyesuaikan ukuran panel dengan &lt;code>Alt + Shift + Panah&lt;/code>, dan menggeser fokus antar panel secara instan dengan &lt;code>Alt + Panah&lt;/code>. Hal ini memungkinkan kerja paralel tingkat lanjut dengan mulus, seperti memulai server lokal Node.js dan memantau log di satu panel, menjalankan perintah Git di panel lain, dan memeriksa status kontainer Docker di panel lainnya.&lt;/p>
&lt;h2 id="41-mode-quake-terminal-drop-down-global">4.1 Mode Quake (Terminal Drop-down Global)
&lt;/h2>&lt;p>Mode Quake (Mode Drop-down) juga didukung, yang memungkinkan Anda memanggil terminal dari bagian atas layar kapan saja, seperti layar konsol dalam game FPS &amp;ldquo;Quake&amp;rdquo;. Secara default, menekan tombol &lt;code>Win + \&lt;/code> akan menyebabkan terminal berukuran setengah jendela meluncur turun dari atas dengan animasi. Ini sangat berguna ketika Anda ingin mengetik perintah untuk sementara waktu.&lt;/p>
&lt;hr>
&lt;h1 id="5-mengotomatiskan-tata-letak-saat-startup-menggunakan-wtexe">5. Mengotomatiskan Tata Letak Saat Startup Menggunakan &lt;code>wt.exe&lt;/code>
&lt;/h1>&lt;p>Pekerjaan rutin di awal tugas setiap pagi, seperti membuka terminal di direktori proyek tertentu, membagi layar menjadi 3 bagian, dan menjalankan build frontend, menyalakan server backend, dan memantau database di masing-masing panel, harus diotomatisasi.&lt;/p>
&lt;p>&lt;code>wt.exe&lt;/code>, yang merupakan entitas dari Windows Terminal, mendukung argumen baris perintah yang kuat dan dapat mengontrol profil awal serta status pembagian panel.&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>Jika Anda menyimpan perintah ini sebagai pintasan Windows atau file batch, tata letak lingkungan pengembangan yang kompleks dapat dipulihkan dalam sekejap dengan satu klik.&lt;/p>
&lt;hr>
&lt;h1 id="6-teori-evolusi-prompt-1-powershell-dan-oh-my-posh">6. Teori Evolusi Prompt 1: PowerShell dan Oh My Posh
&lt;/h1>&lt;p>&amp;ldquo;&lt;strong>Oh My Posh&lt;/strong>&amp;rdquo; secara drastis mengembangkan PowerShell (khususnya versi terbaru, PowerShell 7 / PowerShell Core, yang lintas platform), yang merupakan shell standar di lingkungan Windows. Oh My Posh adalah mesin prompt kustom untuk semua shell yang secara visual dan indah menyajikan setiap status yang diperlukan untuk pengembangan, seperti direktori saat ini, cabang Git dan status perubahannya, versi Node.js atau Python, dan konteks Kubernetes.&lt;/p>
&lt;p>Diagram di bawah ini menunjukkan urutan bagaimana Oh My Posh dimuat saat PowerShell dihidupkan, dan bagaimana prompt dirender.&lt;/p>
&lt;pre class="mermaid">
sequenceDiagram
participant U as &amp;#34;Pengguna&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;Executable Oh My Posh&amp;#34;
U-&amp;gt;&amp;gt;WT: &amp;#34;Luncurkan Profil PowerShell&amp;#34;
WT-&amp;gt;&amp;gt;PS: &amp;#34;Mulai Proses&amp;#34;
PS-&amp;gt;&amp;gt;P: &amp;#34;Muat Skrip Profil&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;Kembalikan Skrip/Fungsi Rendering Prompt&amp;#34;
P--&amp;gt;&amp;gt;PS: &amp;#34;Evaluasi Fungsi (Invoke-Expression)&amp;#34;
PS-&amp;gt;&amp;gt;OMP: &amp;#34;Panggil oh-my-posh print primary (pada setiap tombol Enter)&amp;#34;
OMP--&amp;gt;&amp;gt;PS: &amp;#34;Kembalikan String Bergaya ANSI&amp;#34;
PS--&amp;gt;&amp;gt;WT: &amp;#34;Keluarkan String Prompt&amp;#34;
WT--&amp;gt;&amp;gt;U: &amp;#34;Tampilkan Prompt Siap&amp;#34;
&lt;/pre>
&lt;h2 id="61-instalasi-dan-konfigurasi-oh-my-posh">6.1 Instalasi dan Konfigurasi Oh My Posh
&lt;/h2>&lt;p>Di lingkungan Windows, Anda dapat menginstalnya dengan mudah menggunakan pengelola paket resmi &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>Setelah instalasi, edit skrip profil PowerShell dan inisialisasi Oh My Posh agar dimuat pada saat startup. Jalur (path) profil disimpan dalam variabel otomatis &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>Setelah file terbuka, tambahkan kode berikut.&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"># Pengaturan Alias&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"># Mengaktifkan prediksi IntelliSense (Modul PSReadLine)&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"># Inisialisasi Oh My Posh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Tentukan tema favorit Anda (contoh: jandedobbeleer).&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Jalur (path) tema bawaan ada di variabel lingkungan $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"># Modul Terminal-Icons untuk menampilkan ikon folder dan file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># (Memerlukan Install-Module -Name Terminal-Icons -Repository PSGallery -Force pada saat pertama kali)&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>Tersedia ratusan jenis tema (config), dan juga memungkinkan untuk membuatnya sendiri sepenuhnya dalam format JSON, YAML, dan TOML. Dengan menggunakan konsep &amp;ldquo;segmen&amp;rdquo;, informasi yang akan ditampilkan di sisi kiri (Kiri) dan kanan (Kanan) digabungkan secara bebas untuk merancang prompt.&lt;/p>
&lt;hr>
&lt;h1 id="7-teori-evolusi-prompt-2-fusi-arsitektur-wsl2-dan-starship">7. Teori Evolusi Prompt 2: Fusi Arsitektur WSL2 dan Starship
&lt;/h1>&lt;p>WSL2 (Windows Subsystem for Linux 2), yang dapat menjalankan kernel Linux asli di Windows, sangat diperlukan untuk pengembangan web modern atau pengembangan cloud-native. Untuk mengustomisasi prompt shell (Bash atau Zsh) di dalam WSL, &amp;ldquo;&lt;strong>Starship&lt;/strong>&amp;rdquo; adalah solusi terbaik.&lt;/p>
&lt;p>Starship adalah prompt lintas shell yang ditulis dalam bahasa Rust, yang sangat cepat dan sangat dapat dikustomisasi. Kelebihannya adalah dapat mereproduksi prompt yang sama persis di shell apa pun seperti Bash, Zsh, atau Fish hanya dengan menulis satu file konfigurasi (TOML).&lt;/p>
&lt;h2 id="71-instalasi-starship">7.1 Instalasi Starship
&lt;/h2>&lt;p>Buka terminal WSL (seperti Ubuntu) dan jalankan skrip instalasi resmi.&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>Selanjutnya, jika Anda menggunakan Bash, tambahkan yang berikut ini ke akhir &lt;code>~/.bashrc&lt;/code> untuk mengaktifkan 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>Jika Anda menggunakan Zsh, tambahkan ke akhir &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-kustomisasi-ekstrem-melalui-starshiptoml">7.2 Kustomisasi Ekstrem Melalui starship.toml
&lt;/h2>&lt;p>Pengaturan Starship ditulis di &lt;code>~/.config/starship.toml&lt;/code>. Karena berformat TOML, lebih mudah dibaca dan ditulis oleh manusia daripada JSON, dan juga Anda dapat menulis komentar.&lt;/p>
&lt;p>Berikut ini adalah contoh pengaturan untuk mewujudkan prompt modern yang kaya informasi.&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"># Menentukan format keseluruhan prompt (urutan)&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"># Pengaturan tampilan ikon OS&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"># Pengaturan tampilan direktori&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"># Pengaturan cabang Git&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"># Pengaturan status Git&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"># Karakter prompt (simbol baris input)&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>Dalam pengaturan ini, prompt dikonfigurasikan dalam 2 baris, dan ikon OS, jalur (path) direktori saat ini, cabang dan status Git, serta informasi versi setiap lingkungan bahasa (Node.js, Python, dll.) ditampilkan pada baris ke-1. Baris ke-2 adalah baris masukan yang sederhana, sehingga tidak memakan ruang di layar saat memasukkan perintah yang panjang.&lt;/p>
&lt;hr>
&lt;h1 id="8-model-matematis-keterlambatan-penggambaran-terminal-dan-performa">8. Model Matematis Keterlambatan Penggambaran Terminal dan Performa
&lt;/h1>&lt;p>Salah satu metrik paling penting untuk mengevaluasi pengalaman penggunaan terminal adalah &amp;ldquo;&lt;strong>Keterlambatan Input (Input Latency)&lt;/strong>&amp;rdquo;. Ini mengacu pada waktu tunda dari penekanan tombol keyboard hingga piksel yang sesuai di layar berubah warna dan memberikan umpan balik visual.&lt;/p>
&lt;p>Keterlambatan keseluruhan $ T_{total} $ dapat dimodelkan secara matematis dengan ketat sebagai jumlah dari komponen-komponen berikut.&lt;/p>
$$
T_{total} = T_{hw\_input} + T_{os} + T_{pty} + T_{app} + T_{render} + T_{display}
$$&lt;p>Makna dan waktu yang dibutuhkan masing-masing variabel adalah sebagai berikut:&lt;/p>
&lt;ul>
&lt;li>$ T_{hw\_input} $: Keterlambatan perangkat keras (sekitar 1-5 ms) dari sakelar mekanis keyboard yang menyala, melalui poling pengontrol USB, hingga sinyal interupsi dikirim.&lt;/li>
&lt;li>$ T_{os} $: Keterlambatan pemrosesan antrean pesan oleh lapisan driver HID (Human Interface Device) sistem operasi (sekitar 1-2 ms).&lt;/li>
&lt;li>$ T_{pty} $: Keterlambatan konversi penyandian karakter (seperti UTF-8 ke UTF-16) dan buffering oleh ConPTY (API Konsol Pseudoterminal) (sekitar 2-10 ms).&lt;/li>
&lt;li>$ T_{app} $: Waktu pemrosesan penafsiran perintah di shell (PowerShell/Bash) dan penentuan keluaran layar. Waktu pemrosesan seperti pengambilan status Git oleh Oh My Posh atau Starship juga termasuk di sini (sekitar 10-50 ms).&lt;/li>
&lt;li>$ T_{render} $: Keterlambatan rendering (sekitar 2-8 ms) di mana Windows Terminal (DirectWrite/DirectX) melakukan rasterisasi karakter glyph sebagai tekstur, mentransfernya ke memori GPU, dan membalikkan rantai swap.&lt;/li>
&lt;li>$ T_{display} $: Keterlambatan layar dari keluaran sinyal buffer frame GPU ke monitor, di mana molekul kristal cair bereaksi secara fisik mengubah kondisi pencahayaan (waktu respons GtG dll. sekitar 5-20 ms).&lt;/li>
&lt;/ul>
&lt;p>Tim pengembangan Windows Terminal telah mencurahkan upaya besar untuk meminimalkan secara khusus $ T_{pty} $ dan $ T_{render} $. Pada versi awal, lonjakan keterlambatan (frame drop) sering terjadi akibat cache miss saat melakukan rasterisasi teks, namun pada versi terbaru, algoritma &amp;ldquo;cache glyph berbasis atlas (Atlas-based glyph cache)&amp;rdquo; telah diperkenalkan.&lt;/p>
&lt;p>Dengan menggunakan atlas glyph, penggambaran string karakter tereduksi menjadi operasi matriks sederhana pada GPU berupa &amp;ldquo;pemotongan dari tekstur font besar yang dihasilkan sebelumnya di memori dan komposisi alpha blend ke layar&amp;rdquo;.&lt;/p>
&lt;p>Bila string yang akan dirender terdiri dari $ N $ karakter, biaya rendering berurutan oleh CPU melalui pendekatan GDI konvensional membutuhkan waktu $ \mathcal{O}(N) $, tetapi dengan menggunakan rendering atlas berbasis GPU, maka dimungkinkan untuk merender dalam waktu konstan yang mendekati $ \mathcal{O}(1) $ secara paralel dengan shader.&lt;/p>
&lt;p>Hal ini memungkinkan Windows Terminal terus menggulirkan teks dengan lancar tanpa frame drop pada 60fps (atau lingkungan refresh rate tinggi di atas 144Hz) bahkan di saat sejumlah besar log mengalir di output standar (contoh: pesan &lt;code>npm install&lt;/code> atau saat mengkompilasi proyek C++ yang sangat besar).&lt;/p>
&lt;hr>
&lt;h1 id="9-pemecahan-masalah-tingkat-lanjut-dan-metode-debugging">9. Pemecahan Masalah Tingkat Lanjut dan Metode Debugging
&lt;/h1>&lt;p>Bila Anda menyesuaikan Windows Terminal secara ekstrem, Anda mungkin mengalami masalah tak terduga seperti kesalahan sintaks pada file pengaturan atau masalah terkait rendering font. Di sini, kami akan memperkenalkan beberapa teknik pemecahan masalah tingkat lanjut untuk para insinyur.&lt;/p>
&lt;h2 id="91-validasi-json-schema-untuk-settingsjson">9.1 Validasi JSON Schema untuk settings.json
&lt;/h2>&lt;p>Struktur &lt;code>settings.json&lt;/code> didefinisikan secara ketat, dan disarankan untuk menggunakan JSON Schema di editor (seperti VS Code) untuk memeriksa kesalahan sintaks secara real-time. Jika Anda membuka &lt;code>settings.json&lt;/code> di VS Code, schema Windows Terminal diterapkan secara default, dan nama properti yang tidak valid atau kesalahan tipe nilai (sebagai contoh, menentukan string pada bagian yang mengharapkan nilai numerik) secara instan diperingatkan dengan garis bergelombang.&lt;/p>
&lt;h2 id="92-profiling-performa-prompt">9.2 Profiling Performa Prompt
&lt;/h2>&lt;p>Jika tampilan prompt berjalan sangat lambat (ketika ada kelambatan setelah menekan tombol Enter sebelum baris masukan berikutnya muncul), kemungkinan besar ada masalah pada waktu eksekusi Oh My Posh atau Starship. Oh My Posh memiliki kemampuan debugging tingkat lanjut untuk mengukur waktu eksekusi yang diperlukan oleh masing-masing blok.&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>Dengan menjalankan perintah ini, variabel pada lingkungan terminal, file konfigurasi yang sedang dimuat, dan milidetik (ms) pemrosesan spesifik yang diperlukan oleh masing-masing segmen pembentuk prompt akan ditampilkan secara mendetail. Hal ini memungkinkan Anda untuk mengidentifikasi dengan tepat pengambilan informasi mana yang menjadi penghambat (bottleneck) (misalnya, pengambilan status Git di repositori mono besar, pemeriksaan status otentikasi penyedia cloud, kelambatan jaringan, dll.), dan mematikan modul yang tidak perlu untuk penyetelan (tuning).&lt;/p>
&lt;h2 id="93-menonaktifkan-akselerasi-gpu-fallback-ke-rendering-perangkat-lunak">9.3 Menonaktifkan Akselerasi GPU (Fallback ke Rendering Perangkat Lunak)
&lt;/h2>&lt;p>Dalam kasus yang jarang terjadi, perangkat keras atau driver GPU lama bisa menyebabkan layar berkedip (flicker) atau karakter terpotong karena masalah rendering perangkat keras menggunakan DirectX. Dalam kasus ini, terdapat opsi pengaturan untuk memaksa fallback ke rendering perangkat lunak.&lt;/p>
&lt;p>Tambahkan pengaturan berikut di tingkat akar &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>Dengan ini, rendering dialihkan menggunakan CPU (WARP) alih-alih GPU. Meskipun performa menurun, namun keakuratan rendering dapat dipastikan. Ini adalah cara yang ampuh saat mengisolasi masalah yang terkait dengan grafik.&lt;/p>
&lt;hr>
&lt;h1 id="kesimpulan">Kesimpulan
&lt;/h1>&lt;p>Nilai nyata Windows Terminal terletak jauh melampaui sekadar &amp;ldquo;alternatif command prompt lama&amp;rdquo;. Teknologi rendering terbaru yang memanfaatkan DirectX, mekanisme konfigurasi berbasis JSON yang fleksibel dan kuat, serta integrasi mulus dengan berbagai shell seperti WSL dan PowerShell. Dengan memahaminya secara mendalam dan menyesuaikannya agar pas di tangan Anda sendiri, gesekan (friction) dalam proses pengembangan dapat direduksi hingga batas ekstrem.&lt;/p>
&lt;p>Berbagai teknik konfigurasi yang diuraikan dalam artikel ini — penyelarasan skema warna, perluasan informasi visual melalui Nerd Font, prompt cerdas sadar-konteks (context-aware) menggunakan Oh My Posh atau Starship, dan pembangunan lingkungan multitasking dengan memanfaatkan pembagian panel — tidak hanya meningkatkan pengalaman coding harian Anda, tetapi juga akan meningkatkan motivasi itu sendiri saat menghadapi terminal.&lt;/p>
&lt;p>Optimisasi lingkungan pengembangan tidak ada habisnya. Setiap kali alat baris perintah baru muncul dan arsitektur OS berkembang, terminal kita juga akan berubah bentuk. Kami sangat berharap artikel ini akan menjadi penunjuk jalan yang kuat bagi para pembaca dalam perjalanan tanpa akhir mereka untuk mengeksplorasi &amp;ldquo;lingkungan pengembangan terkuat (ultimate)&amp;rdquo;.&lt;/p></description></item></channel></rss>