<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Siddharth Abbineni</title>
    <description>The latest articles on DEV Community by Siddharth Abbineni (@wapenshaw).</description>
    <link>https://dev.to/wapenshaw</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F376467%2F85803202-adbb-4dd6-a99d-e8a54e732b00.png</url>
      <title>DEV Community: Siddharth Abbineni</title>
      <link>https://dev.to/wapenshaw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wapenshaw"/>
    <language>en</language>
    <item>
      <title>Two TVs, a few surprises</title>
      <dc:creator>Siddharth Abbineni</dc:creator>
      <pubDate>Fri, 30 Oct 2026 21:57:52 +0000</pubDate>
      <link>https://dev.to/wapenshaw/two-tvs-a-few-surprises-7i5</link>
      <guid>https://dev.to/wapenshaw/two-tvs-a-few-surprises-7i5</guid>
      <description>&lt;p&gt;I have two TVs at home: a TCL 55Q6C running Google TV and an LG 55UN8000PTA running webOS. Both came with years of preinstalled stuff I never open. I wanted less clutter and a home screen that's quick to use, without breaking the things I actually watch.&lt;/p&gt;

&lt;h2&gt;
  
  
  The TCL
&lt;/h2&gt;

&lt;p&gt;I did the planning with Codex before I could even connect to the TV. I looked at launchers, had Codex write a small Python tool to capture the TV's state, and set myself some rules. Nothing gets uninstalled, changes go in small batches, every batch gets tested, and there's a rollback script before anything changes.&lt;/p&gt;

&lt;p&gt;Connecting was the easy part. Wireless debugging on Android 14 pairs with a code, then &lt;code&gt;adb&lt;/code&gt; talks to a TLS port. Claude took a baseline first: packages, memory, storage and settings. The TV turned out to have 2.45 GB of RAM, and it reports itself as a &lt;code&gt;Smart TV Pro&lt;/code&gt; rather than a 55Q6C, which made looking up firmware notes harder than it should be.&lt;/p&gt;

&lt;p&gt;The cleanup itself was 21 packages in three batches of 5, 10 and 6, all disabled for the main user rather than removed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adb shell pm disable-user &lt;span class="nt"&gt;--user&lt;/span&gt; 0 com.tcl.hotelmenu
&lt;span class="c"&gt;# and to undo it&lt;/span&gt;
adb shell pm &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt; 0 com.tcl.hotelmenu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The list was mostly TCL extras: the hotel menu, a game bar, a demo mode, the repair guide, AirPlay and Miracast, plus TalkBack and the calendar sync. After each batch I checked the remote, HDMI input, Netflix, YouTube, sound and the on-screen keyboard before going on.&lt;/p&gt;

&lt;p&gt;The results were smaller than I hoped. The animation scales were already at 0.5, so there was nothing to gain there. &lt;code&gt;pm trim-caches&lt;/code&gt; took &lt;code&gt;/data&lt;/code&gt; from 2.4 GB to 2.1 GB. I never got a fair memory comparison, because the reading after the reboot was taken before the TV had settled. So I can't honestly say it got faster.&lt;/p&gt;

&lt;p&gt;Then I tried Projectivy as a launcher. &lt;code&gt;cmd package set-home-activity&lt;/code&gt; reported success, but TCL's firmware kept sending the Home button to its own launcher anyway. What worked was Projectivy's Accessibility override, which catches the Home button itself. After a while I found the clean screen too clean. I missed finding new things to watch and carrying on with shows across apps, which is the one thing the Google TV home screen is good at. So I removed Projectivy and went back. The disabled packages stayed disabled, and the recommendations came back because they're part of Google's launcher.&lt;/p&gt;

&lt;p&gt;The TCL also kept losing my Google sign-in after a restart. The logs showed Google's setup app removing the account about two and a half minutes after boot, and the same thing appeared in logs from before I'd changed anything, so the cleanup didn't cause it. The TV's country code also read &lt;code&gt;AO&lt;/code&gt;, which is Angola. That looked like a clue, but I never proved it was the cause.&lt;/p&gt;

&lt;p&gt;The last thing I did was install Key Mapper so I can remap a button on the remote. I took the F-Droid build, checked its SHA-256 against the F-Droid repository, and installed it with &lt;code&gt;adb install&lt;/code&gt;. I haven't set up any mappings yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The LG
&lt;/h2&gt;

&lt;p&gt;The LG needed root before I could do much. Codex and I checked its exact firmware (webOS 5.6.2, software 04.64.00), turned off Developer Mode and automatic updates, and rooted it with SlopBro. That installed Homebrew Channel, the community app store for rooted webOS TVs.&lt;/p&gt;

&lt;p&gt;Then I locked it down. I added an Ed25519 key for SSH, checked that key login worked, and disabled Telnet, which Homebrew leaves on by default with no password. After a reboot, SSH with the key still gave me root, port 23 refused connections, and the default password no longer worked. The Content Store and the streaming apps were fine.&lt;/p&gt;

&lt;p&gt;Removing apps goes through the TV's own installer service over SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;luna-send &lt;span class="nt"&gt;-n&lt;/span&gt; 1 &lt;span class="nt"&gt;-w&lt;/span&gt; 10000 luna://com.webos.appInstallService/remove &lt;span class="s1"&gt;'{"id":"lgchannels.home","subscribe":false}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One gotcha: &lt;code&gt;luna-send&lt;/code&gt; returned nothing until I ran SSH with &lt;code&gt;-tt&lt;/code&gt; to force a terminal. I archived and checksummed each app's folder before removing it. Seven apps went: LG Channels, three promotional stubs, and three streaming apps nobody uses.&lt;/p&gt;

&lt;p&gt;Six built-in tiles couldn't be removed, because they're system apps. &lt;code&gt;removeLaunchPoint&lt;/code&gt; refused, and &lt;code&gt;updateLaunchPoint&lt;/code&gt; with &lt;code&gt;visible: false&lt;/code&gt; returned success but changed nothing. What worked was a boot script. Homebrew Channel runs scripts from &lt;code&gt;/var/lib/webosbrew/init.d/&lt;/code&gt; early in boot, before the launcher reads the app list. Mine writes a copy of each app's &lt;code&gt;appinfo.json&lt;/code&gt; with &lt;code&gt;"visible": false&lt;/code&gt; and bind-mounts it over the original. Nothing on the system partition changes. Deleting the script and rebooting brings the tiles back.&lt;/p&gt;

&lt;p&gt;Next, with Claude, I set up Life's Good Without Spying, a Homebrew app that blocks LG's ad, tracking and content-recognition hosts in &lt;code&gt;/etc/hosts&lt;/code&gt; and stops the ad daemons. It took some untangling. One setting is supposed to keep LG's SDP servers reachable, because those handle registration, the Content Store and the clock. In the app's code the check was inverted, so turning it off blocked them straight away. I fixed it on the TV with a one-line change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-            is_on "$key" &amp;amp;&amp;amp; continue
&lt;/span&gt;&lt;span class="gi"&gt;+            continue  # SDP is never part of the initial block list
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "home dashboard" block list also broke the Content Store, which said there was no internet while the TV was clearly online. Turning that category off took the list from 430 domains to 311 and the store came back. Later the app's own on-screen switches turned it back on and the store broke again, so now I know to leave that switch alone. YouTube also signed me out once after a reboot. Every YouTube cookie had been created at that boot, so the cookie jar had been emptied, but I never found out what did it.&lt;/p&gt;

&lt;p&gt;My favourite fix was for YouTube AdFree, the Homebrew build of YouTube. It starts at boot, and on this TV it often started before the network was up, then sat on an error screen until someone pressed Retry. My first fix replaced the app's &lt;code&gt;index.html&lt;/code&gt; with a small page that checks &lt;code&gt;https://www.youtube.com/generate_204&lt;/code&gt; every two seconds and loads the app once it gets an answer. It also has an "Open anyway" button in case the check is wrong.&lt;/p&gt;

&lt;p&gt;That worked, so I moved the same idea into the app itself, a &lt;code&gt;wait-for-network.ts&lt;/code&gt; that runs before the app handles its launch. I tested it offline by pointing &lt;code&gt;www.youtube.com&lt;/code&gt; at nothing in the hosts file. The waiting screen showed, and YouTube opened by itself once I removed the entry, about a minute later, because Chromium had cached the fake lookup. I sent it upstream as &lt;a href="https://github.com/webosbrew/youtube-webos/pull/487" rel="noopener noreferrer"&gt;PR #487&lt;/a&gt;, and it's waiting for review.&lt;/p&gt;

&lt;p&gt;One more surprise: YouTube AdFree only starts at boot because it registers itself as a TV input. Uninstalling or reinstalling it removes that input, and then the TV boots into live channels I never watch. So there's a second boot script that registers the input again on every boot. It also puts my waiting page back after an update, but only if the app is the known stock version without the built-in wait. The Content Store lists YouTube AdFree as an update for the official YouTube app, because they share an app ID. Accepting it would quietly replace one with the other, so app updates on that TV stay manual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping it all in one place
&lt;/h2&gt;

&lt;p&gt;At the end I moved both projects into one private repository and kept their history. Passwords, keys and raw backups stay out of Git. Every change has a write-up with the exact commands, how I checked it, and how to undo it. I also wrote down the experiments that failed and the checks I didn't finish, so next time I can start from where I actually stopped.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;First posted on my blog, &lt;a href="https://blog.siddharthabbineni.in/two-tvs-a-few-surprises/" rel="noopener noreferrer"&gt;Free practice&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>adb</category>
      <category>androidtv</category>
      <category>home</category>
      <category>webos</category>
    </item>
    <item>
      <title>Rebuilding this site as an F1-style dashboard</title>
      <dc:creator>Siddharth Abbineni</dc:creator>
      <pubDate>Fri, 30 Oct 2026 21:54:43 +0000</pubDate>
      <link>https://dev.to/wapenshaw/rebuilding-this-site-as-an-f1-style-dashboard-3o41</link>
      <guid>https://dev.to/wapenshaw/rebuilding-this-site-as-an-f1-style-dashboard-3o41</guid>
      <description>&lt;p&gt;My old portfolio was a long page you scrolled down, like most people's.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkeqqzkp9bkaawjp6oov1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkeqqzkp9bkaawjp6oov1.webp" alt="The site this replaces, at 1536×730: a 1080p laptop with Windows at 125%" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At that size the page is almost four screens tall. It had also broken quietly: the Xbox card said 0 games, next to a picture that no longer loaded.&lt;/p&gt;

&lt;p&gt;I rebuilt it twice in a few days. The first rebuild was a gamer profile, and it didn't survive my own laptop. The second is the F1-style dashboard at &lt;a href="https://www.siddharthabbineni.in" rel="noopener noreferrer"&gt;siddharthabbineni.in&lt;/a&gt;. After that I moved the blog out to a site of its own, the one you're reading now.&lt;/p&gt;

&lt;p&gt;I built all of it with Claude Code running Opus. I decided what I wanted and Opus did most of the typing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The player profile, and why it went
&lt;/h2&gt;

&lt;p&gt;The first version was a character sheet: a character build, a campaign timeline for my jobs, and a trophy cabinet with certifications and live Xbox and Steam achievements. On my 1440p monitor it looked great.&lt;/p&gt;

&lt;p&gt;Then I opened it on a 1080p laptop with Windows set to 125%. That leaves the browser about 1536×730 pixels, and the page turned into a wall of text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkqdq5y3yk8x53fyt6hl.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxkqdq5y3yk8x53fyt6hl.webp" alt="The player profile at 1536×730: three columns, all of them full of small text" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three columns were all talking at once, and every panel was packed with small labels, chips and bullets. Nothing on the screen was more important than anything else. Making the text smaller to fit only made it worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying ideas before writing code
&lt;/h2&gt;

&lt;p&gt;This time I didn't touch the code first. I asked Opus for rough screens of very different ideas: game menus, a magazine spread, a metro map, an F1 pit wall. I liked the metro map and the pit wall, so I mashed them together and drew my career as a line on the Nürburgring GP circuit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsd5hsyc76e16rg47n539.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsd5hsyc76e16rg47n539.webp" alt="An early concept: the whole circuit, with each section as a coloured sector" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I got a second opinion on that concept, and it made two points I agreed with. The section menu shouldn't be part of the career track, and the track shouldn't be a closed lap with a finish line, because my career hasn't finished yet. So the route became an open stretch of the circuit with the road carrying on past my current job.&lt;/p&gt;

&lt;h2&gt;
  
  
  The F1 dashboard
&lt;/h2&gt;

&lt;p&gt;The site shows one section at a time, with F1 names and a plain line under each: Driver profile, Seasons (where I've worked), Podiums, Garage and Press. It uses the real F1 colours, and every button, tab and card has the same slanted cut as the nameplate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F51xjvwd4ba1owcg5eybd.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F51xjvwd4ba1owcg5eybd.webp" alt="Seasons: the route climbs from my first job at the bottom to now at the top" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the track, grey is life before work, black is work, and red is my current job and the road after it. When you pick an older job, it and the stretch up to the next job turn teal. One job shows at a time, with a short summary, up to three numbers, a few bullets and the tools I used with their logos. That's far less text than before.&lt;/p&gt;

&lt;p&gt;The buttons for moving between jobs took two goes. At first "Earlier" sat on the right and disappeared on the oldest job, so "Later" slid under the mouse. Clicking Earlier a few times in a row took me back to the newest job. Now each button has its own fixed spot and keeps it, even when the other one is hidden.&lt;/p&gt;

&lt;p&gt;The header copies a driver's TV graphic: a picture on a red panel, with my first name small and my surname big, the way F1 shows "Max / VERSTAPPEN". It started as my photo. It's now a drawing of me in a helmet with SA on the side, which is also the little icon in your browser tab on both sites.&lt;/p&gt;

&lt;p&gt;The Garage has my side projects, with my pull requests to other people's projects in a column that looks like a timing tower. One that hasn't been merged yet is marked "Under review", which is what the stewards say about an incident they haven't ruled on. The footer is a single "Team radio" line that flips between my two newest posts and two newest merged PRs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9tp6asv019tn4pcw59p9.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9tp6asv019tn4pcw59p9.webp" alt="Garage in dark mode: project cards and the pull request timing tower" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can get around without the mouse. The keys 1 to 5 open a section, and ↑ and ↓ change job. On a desktop the page never scrolls, so the mouse wheel steps through the jobs and then on to the next section. The animations use Motion, the library that used to be Framer Motion.&lt;/p&gt;

&lt;p&gt;I worried that the logos would make the site heavy, since Simple Icons has 3,466 of them. I checked the production build: only the 14 I use reach the browser, about 15 KB in all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fitting on one screen
&lt;/h2&gt;

&lt;p&gt;The whole design is 96 by 45.6 rem, and one line of CSS sets the size of a rem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100vw&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;96&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="n"&gt;dvh&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;45.625&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At 1536×730 that's 16px, and at 1920×1080 it's 20px, where it stops. On bigger screens the page sits in the middle of a dark backdrop with a faint outline of the circuit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh86gks7bruf2ohukbxxf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh86gks7bruf2ohukbxxf.webp" alt="The whole old page beside the whole new site, at the same scale. Each yellow line marks one screen at 1536×730." width="800" height="704"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I asked Opus for a Playwright script that opens every section at five laptop sizes, from 1280×600 to 1920×1080, and fails if anything scrolls or gets cut off. It checks all five jobs too, because each one has a different amount of text.&lt;/p&gt;

&lt;p&gt;The track outline comes from Pitlane02's Nürburgring drawing on Wikimedia Commons (CC BY-SA 3.0).&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving the blog home
&lt;/h2&gt;

&lt;p&gt;My two posts lived on dev.to, and the site pulled them in through its API. I moved them into my repo as markdown files, so a new post is a commit, a draft gets a staging preview, and the pages are built ahead of time.&lt;/p&gt;

&lt;p&gt;At first the posts lived inside the dashboard, under Press. Next.js 16 with Cache Components surprised me a few times along the way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dynamicParams&lt;/code&gt; isn't allowed any more. Unknown slugs call &lt;code&gt;notFound()&lt;/code&gt; instead.&lt;/li&gt;
&lt;li&gt;With Partial Prefetching on, you have to read &lt;code&gt;params&lt;/code&gt; inside a &lt;code&gt;&amp;lt;Suspense&amp;gt;&lt;/code&gt; boundary so the page can show its outline straight away.&lt;/li&gt;
&lt;li&gt;Typed routes won't accept &lt;code&gt;`/blog/${slug}`&lt;/code&gt; for a plain string. A small &lt;code&gt;postHref()&lt;/code&gt; helper fixed it in one place.&lt;/li&gt;
&lt;li&gt;The standalone build doesn't copy files you read with &lt;code&gt;fs&lt;/code&gt;, so the posts folder has to go in &lt;code&gt;outputFileTracingIncludes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Running &lt;code&gt;next build&lt;/code&gt; while &lt;code&gt;next dev&lt;/code&gt; was still running confused the dev server, and every page started reloading itself about five times a second. Restarting it fixed that.&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;'use cache'&lt;/code&gt; function caches whatever it returns, failures included. My Xbox and Steam data is cached for six hours, so one rate-limited request would have emptied the Podiums section until the next refresh. Failures now call &lt;code&gt;cacheLife('minutes')&lt;/code&gt; and get retried soon after.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sharing a link
&lt;/h2&gt;

&lt;p&gt;When I pasted a link into LinkedIn, the preview had a title and no picture. X was worse, showing the wrong title. Each page set its own Open Graph tags, and those replaced the site-wide ones, image included.&lt;/p&gt;

&lt;p&gt;Now every section of the dashboard gets its own card, made at build time with Next's &lt;code&gt;opengraph-image&lt;/code&gt; files and &lt;code&gt;next/og&lt;/code&gt;. It has the same tab, slashes and nameplate as the site. The fonts had to be TTF files, because the renderer behind &lt;code&gt;next/og&lt;/code&gt; can't read the WOFF2 files the site uses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmtzp1yt5g90rmxnz639.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgmtzp1yt5g90rmxnz639.webp" alt="The share card for the Garage" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Digging up 2005
&lt;/h2&gt;

&lt;p&gt;I had a blog long before dev.to. It started on Blogger, moved to WordPress on thesid.net, and died when my hosting ran out while I was moving countries. Luckily the Wayback Machine had saved it.&lt;/p&gt;

&lt;p&gt;Its API lists every address it saved for a domain. For my two old domains that was about 1,300 addresses, and most were junk: client sites I used to host, and the crawler going round in circles. After removing duplicates I had 145 posts. Opus wrote a scraper that fetched them slowly, then a second script went looking for the images. Most image hosts from 2006 are gone (RIP echo.cx and ImageShack), so some pictures are lost for good.&lt;/p&gt;

&lt;p&gt;I kept the posts exactly as I wrote them, typos and all. They're under Earlier sessions on this blog, one page per year. Reading 2006 me go on about BSNL and the new Iron Maiden album made the whole thing worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The blog gets its own site
&lt;/h2&gt;

&lt;p&gt;With 150 posts in it, the blog didn't fit the dashboard any more. The dashboard is built to fit on one screen, and a long post doesn't. I kept making the reader tighter, with smaller text, Older and Newer up in the tab row, and the title moving into the tabs once you scrolled past it, and it was still a long article in a box.&lt;/p&gt;

&lt;p&gt;So the blog moved to &lt;a href="https://blog.siddharthabbineni.in" rel="noopener noreferrer"&gt;blog.siddharthabbineni.in&lt;/a&gt;. Press on the dashboard is now a short feed of the three newest posts, and each one opens here. It reads a &lt;code&gt;posts.json&lt;/code&gt; file the blog publishes at build time and caches it with &lt;code&gt;'use cache'&lt;/code&gt;. If the blog doesn't answer, Press says so and gives you the link.&lt;/p&gt;

&lt;p&gt;I wanted it to feel like racing without copying the dashboard. Opus drew a few directions on a canvas. The first name was Night session, which I didn't like, so I picked Free practice. That's the session where drivers try things out, and that's most of what I write about. The look I picked is wet tarmac: dark asphalt with grain and puddles, worn white paint, and a chequered line under the title. New posts line up on a starting grid with the newest in P1. Inside a post, each heading is a lap, and the bar at the top lights them up as you read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7630tdoagttl4ha653qu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7630tdoagttl4ha653qu.webp" alt="Free practice in dark mode: the title, a search box, and the newest posts on a starting grid" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few things changed after I lived with it for a day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The header was far too tall. On a 1080p screen the title, blurb and tags took up most of the first screen, so I drew red lines on screenshots where I wanted them to stop. The home header is now about 256 pixels tall, and the tags moved to the end of each post.&lt;/li&gt;
&lt;li&gt;The light mode background was too dark. Now it's pale concrete, and the white paint became charcoal, because white lines don't show up on concrete.&lt;/li&gt;
&lt;li&gt;Search came back after I noticed it had gone missing in the redesign. It's a box in the header. Press &lt;code&gt;/&lt;/code&gt; on any page to jump to it, and it searches titles, tags and the full text from an index made at build time. On the search page the footer stays put, since the results changing height made it jump up and down.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The blog is a plain static site. Next.js exports it as files, so route handlers like the RSS feed and the search index need &lt;code&gt;dynamic = 'force-static'&lt;/code&gt;. Each post's share card gets drawn at build time into an &lt;code&gt;og.png&lt;/code&gt; next to the post.&lt;/p&gt;

&lt;h2&gt;
  
  
  One repo, two sites
&lt;/h2&gt;

&lt;p&gt;The repo is now split into &lt;code&gt;apps/portfolio&lt;/code&gt; and &lt;code&gt;apps/blog&lt;/code&gt;. Each has its own &lt;code&gt;package.json&lt;/code&gt; and lockfile, and I skipped npm workspaces, since the two apps share nothing. Each one has its own GitHub workflow that only runs when its folder changes, so fixing a typo in a post doesn't rebuild the dashboard.&lt;/p&gt;

&lt;p&gt;Both run on Azure Static Web Apps. My first apps were in West Europe for no good reason, so I deleted them and made new ones in East Asia, which is a lot closer to India. That lasted a day. The service I use for my Xbox achievements blocks Azure's East Asia addresses, so the Xbox card went blank every time the server refreshed it. Opus tested the other regions from Azure containers, and only East Asia was blocked, so I moved everything back to West Europe. There are four apps: the portfolio and the blog, each with a staging copy. Everything goes to staging first, and the staging sites tell search engines not to index them. Opus handled the Cloudflare DNS records through the API with a token that can only edit DNS for this one domain. NuPrint's site ended up somewhere else: it has its own domain, &lt;a href="https://nuprint.app" rel="noopener noreferrer"&gt;nuprint.app&lt;/a&gt;, served straight from Cloudflare.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phones, again
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Email button is gone. My resume has my email on it anyway. Resume and Blog moved to the end of the page, and a small pen icon next to the theme toggle opens the blog.&lt;/li&gt;
&lt;li&gt;The Team radio line is now a bar stuck to the bottom of the screen.&lt;/li&gt;
&lt;li&gt;Swiping used to work only on the tab row. Now a sideways swipe anywhere on the page moves to the next section, and the tabs scroll to keep the open one in view.&lt;/li&gt;
&lt;li&gt;On a 360-pixel phone the pen and theme buttons wrapped onto their own line, so the photo, name and slashes shrink a little on small phones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8uftre5pq2m1liql7b8i.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8uftre5pq2m1liql7b8i.webp" alt="The dashboard on a phone: the helmet header and Seasons, then the same page after tapping Pinion" width="800" height="821"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seasons on a phone took the most work. Tapping a job used to open it in place while the old one stayed open, so the page jumped around and the job you tapped ended up somewhere different every time. I wanted an accordion: the open job folds up, the tapped one opens, and the page scrolls so the tapped one sits just under the tabs.&lt;/p&gt;

&lt;p&gt;My first version did nothing at all. The fold animated &lt;code&gt;height: 'auto'&lt;/code&gt; with Motion, and to measure that, Motion saves the scroll position, measures, and puts the scroll back with &lt;code&gt;window.scrollTo&lt;/code&gt;. That cancelled my smooth scroll every time. I swapped Motion for a CSS grid row that goes from &lt;code&gt;0fr&lt;/code&gt; to &lt;code&gt;1fr&lt;/code&gt;, which folds just as well without measuring anything.&lt;/p&gt;

&lt;p&gt;Then the tapped job landed anywhere from 16 to 19 pixels off. There were two causes. The page wasn't tall enough yet to scroll that far while the new job was still opening, so it now gets a temporary minimum height. And the browser's scroll anchoring was nudging the page as content above it folded away, so that's turned off until the fold finishes. Now it lands in the same spot every time. The first fold took 350ms, which was too quick to see what happened, so it takes 550ms now.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell myself
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Look at your site on the laptop people actually use, at the scaling they actually use.&lt;/li&gt;
&lt;li&gt;Draw the screens before writing code. Throwing away a mockup takes seconds.&lt;/li&gt;
&lt;li&gt;Less text on screen beats smaller text.&lt;/li&gt;
&lt;li&gt;A dashboard and a blog want different layouts. Give long reading its own site.&lt;/li&gt;
&lt;li&gt;If an animation fights your scrolling, find out what the library does when it measures.&lt;/li&gt;
&lt;li&gt;Keep your writing somewhere you own.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;First posted on my blog, &lt;a href="https://blog.siddharthabbineni.in/rebuilding-this-site-as-an-f1-dashboard/" rel="noopener noreferrer"&gt;Free practice&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>design</category>
      <category>devlog</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>NuPrint: printing without the phone app</title>
      <dc:creator>Siddharth Abbineni</dc:creator>
      <pubDate>Fri, 30 Oct 2026 21:54:39 +0000</pubDate>
      <link>https://dev.to/wapenshaw/nuprint-printing-without-the-phone-app-2ij6</link>
      <guid>https://dev.to/wapenshaw/nuprint-printing-without-the-phone-app-2ij6</guid>
      <description>&lt;p&gt;I have a little ZEITEL SC03h thermal printer. It's handy for labels, to-do lists and small notes, but using it meant going through the phone app. Even when whatever I wanted to print was already on my laptop, I had to send it to my phone first.&lt;/p&gt;

&lt;p&gt;I wanted to get rid of that extra step. That was how NuPrint started.&lt;/p&gt;

&lt;p&gt;It wasn't something I built in one stretch. I work full time and have other things going on, so I'd pick it up when I had time, make some progress, then leave it for a while. There were a few attempts before this one that didn't get very far.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting it to print
&lt;/h2&gt;

&lt;p&gt;There wasn't any public documentation for the printer, so I started looking through the Android app with JADX. The app already knew how to talk to it; I needed to work out what it was sending.&lt;/p&gt;

&lt;p&gt;A lot of that was digging through commands, checksums and the way images were converted into something the printer could understand. There were also a few things that weren't obvious at all. The Bluetooth service it advertised wasn't the one it used for printing, which explained why looking for the printing service wasn't finding it. Even the capitalisation of the model name mattered. Two names that looked almost identical needed different settings.&lt;/p&gt;

&lt;p&gt;I did most of that initial digging myself. Eventually I gave what I had to Codex, and it got the remaining pieces working in about an hour. I had a small Python app that could actually print.&lt;/p&gt;

&lt;p&gt;That was the point where it started moving again. I'd spent all this time figuring out the printer, and now there was something working to build on. From there, I planned the Rust app with Claude Code, and I've spent roughly the last month building it around my day job.&lt;/p&gt;

&lt;p&gt;The Python version was basic. A little window, some text and image handling, and Bluetooth. The first test was a strip with a border and some text. It came out properly, and I kept that version around as a reference for the rewrite rather than trying to turn it into the finished app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rust version
&lt;/h2&gt;

&lt;p&gt;NuPrint is now a Rust app with a Tauri and React UI, plus a command-line tool. I kept the printing logic separate from the UI so both could use the same code, without tying the whole thing to one operating system.&lt;/p&gt;

&lt;p&gt;The working Python version helped here. I could compare what the Rust code produced against output I already knew printed correctly. There are tests for that now, along with plenty of other checks that don't need the printer connected.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftfg66e5upghdjhut8gvk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftfg66e5upghdjhut8gvk.webp" alt="NuPrint with a to-do list and print preview" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Getting a clean print was only part of it, though. I also had to think about what happens when Bluetooth disconnects or the app closes halfway through a job. I didn't want it automatically trying again when it had no way of knowing how much paper had already come out. Interrupted jobs are left for the user to check instead.&lt;/p&gt;

&lt;p&gt;That also affected the wording in the app. Sending everything successfully isn't quite the same as knowing the print came out correctly, so I avoided simply calling that "printed".&lt;/p&gt;

&lt;p&gt;There was some cleanup around saved jobs and logs too. A review caught text and PDF passwords being retained with jobs, which I fixed. Exported logs leave out identifying details by default.&lt;/p&gt;

&lt;h2&gt;
  
  
  A detour into Slint
&lt;/h2&gt;

&lt;p&gt;Somewhere along the way I started wondering whether I could make the UI in Rust as well, without the web view.&lt;/p&gt;

&lt;p&gt;I asked Opus about egui and Slint. The advice was to stay with Tauri for what I wanted, especially with the possibility of mobile later. But I still wanted to try Slint, and the shared core meant I didn't have to rewrite the printing side to do it.&lt;/p&gt;

&lt;p&gt;So I had Opus build a Slint version of the UI. It got surprisingly far: printer discovery, previews, the queue, settings. It was usable enough that I kept working on it.&lt;/p&gt;

&lt;p&gt;The fonts were the first thing that bothered me. Small text looked blurry and different from the other apps on my machine. Switching to Skia sorted that out, but then I got a different problem on Windows: the NVIDIA overlay decided this little printer app was a game. The window was also flickering on my HDR monitor.&lt;/p&gt;

&lt;p&gt;Using Skia's software rendering fixed that. I looked at Qt as another option, but didn't take that further.&lt;/p&gt;

&lt;p&gt;The oddest problem was moving the window between my monitors. They use different scaling settings, and the window kept getting bigger as I dragged it back and forth. Eventually it was wider than the screen. I traced that back to how Slint handled the scaling change and added a workaround to keep the size consistent.&lt;/p&gt;

&lt;p&gt;I spent more time on fonts and window behaviour than I'd expected to spend on a printer app.&lt;/p&gt;

&lt;p&gt;The Slint version ended up staying. Releases now include both versions, although Tauri is still the main app and the Slint one is less tested. They use the same printing core, so I don't have two separate implementations of the protocol to maintain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frbv9ztcb1mm0bk8ffiw7.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frbv9ztcb1mm0bk8ffiw7.webp" alt="An image prepared for printing in dark mode" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making it something other people could use
&lt;/h2&gt;

&lt;p&gt;Once it was working on my machines, I started sorting out the repository, installers and releases. I put it under the MIT licence and set up pull requests and CI across Windows, macOS and Linux. Releases build installers for both apps, and everything has to pass before the release is published.&lt;/p&gt;

&lt;p&gt;There were a few things to learn there too. I put a version override in an empty commit for release-please, only for GitHub to drop the commit during the rebase merge. The release came out with a different version than I'd intended. That override now goes on a commit that actually changes something.&lt;/p&gt;

&lt;p&gt;I also had Opus review the code and help plan some cleanup. For performance work, the rule was to measure first and keep a change only if it made a useful difference.&lt;/p&gt;

&lt;p&gt;Some changes were worth doing. Keeping the log file open instead of reopening it for every line helped, and limiting how many previews were being rendered at once brought memory use down quite a bit. Other ideas would have saved a few milliseconds on a print that spent far longer being sent over Bluetooth, so I left those alone.&lt;/p&gt;

&lt;p&gt;I managed to confuse myself with the benchmarks as well. One change initially looked like it did nothing. It turned out that two copies of the repo were sharing a build directory, and I was testing the same old binary twice. Separate build directories gave me the comparison I'd meant to run.&lt;/p&gt;

&lt;p&gt;Testing cancellation also turned up a Windows Bluetooth issue. Cancelling a scan could leave the next scan apparently finding nothing. That needed some recovery handling rather than just assuming another scan would work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting it working on Linux
&lt;/h2&gt;

&lt;p&gt;Linux was the last system I tried with the printer, and it didn't work first time. On Fedora 44, with BlueZ 5.87, the app found the printer but every connection ended in "Bluetooth connection failed."&lt;/p&gt;

&lt;p&gt;I went through the BlueZ logs with Opus. The SC03h is a dual-mode device. On one public address it advertises the LE print service (&lt;code&gt;af30&lt;/code&gt;, served as &lt;code&gt;AE30&lt;/code&gt;) and also offers Classic profiles: serial port, headset, A2DP, AVRCP, hands-free and phonebook. NuPrint talks to Bluetooth through &lt;a href="https://github.com/deviceplug/btleplug" rel="noopener noreferrer"&gt;btleplug&lt;/a&gt;, and on Linux btleplug connects with &lt;code&gt;org.bluez.Device1.Connect&lt;/code&gt;. That call leaves the bearer to BlueZ, and &lt;a href="https://github.com/bluez/bluez/blob/5.87/doc/org.bluez.Device.rst?plain=1#L25-L46" rel="noopener noreferrer"&gt;BlueZ's documentation&lt;/a&gt; spells out the order for a dual-mode device: the bonded bearer first, then the one it saw last, with BR/EDR winning a tie. For this printer it picked Classic. The printer refused A2DP with &lt;code&gt;Connection refused (111)&lt;/code&gt;, BlueZ answered "No more profiles to connect to", and the GATT print service never appeared.&lt;/p&gt;

&lt;p&gt;Removing the pairing didn't help. btleplug scans with its discovery filter set to &lt;a href="https://github.com/deviceplug/btleplug/blob/0.13.5/src/bluez/adapter.rs#L96" rel="noopener noreferrer"&gt;&lt;code&gt;Transport::Auto&lt;/code&gt;&lt;/a&gt;, so BlueZ runs a Classic inquiry alongside the LE scan and learns about the Classic side anyway. Finding the printer with an LE-only &lt;code&gt;bluetoothctl&lt;/code&gt; scan and then calling &lt;code&gt;Device1.Connect&lt;/code&gt; didn't help either. BlueZ still connected over Classic, and this time it paired with the printer using "Just Works", without a prompt. Windows and macOS never had this problem, because their Bluetooth APIs connect to an LE device over LE.&lt;/p&gt;

&lt;p&gt;The first print on Linux worked with &lt;code&gt;ControllerMode = le&lt;/code&gt; in &lt;code&gt;/etc/bluetooth/main.conf&lt;/code&gt;, which turns the adapter into an LE-only controller. It also turns off Classic Bluetooth for headphones and everything else, so it wasn't something I could ask anyone to do.&lt;/p&gt;

&lt;p&gt;Newer BlueZ has two ways to ask for LE on a dual-mode device. BlueZ 5.80 added a &lt;a href="https://github.com/bluez/bluez/blob/5.87/doc/org.bluez.Device.rst?plain=1#L449" rel="noopener noreferrer"&gt;&lt;code&gt;PreferredBearer&lt;/code&gt;&lt;/a&gt; device property that can be set to &lt;code&gt;le&lt;/code&gt;, and 5.84 added &lt;a href="https://github.com/bluez/bluez/blob/5.87/doc/org.bluez.Bearer.LE.rst" rel="noopener noreferrer"&gt;&lt;code&gt;org.bluez.Bearer.LE1&lt;/code&gt;&lt;/a&gt;, whose &lt;code&gt;Connect&lt;/code&gt; goes over LE for that one connection and stores nothing. btleplug doesn't expose either, so Opus wrote a small &lt;a href="https://github.com/wapenshaw/nuprint/blob/master/crates/nuprint-transport/src/ble/bluez.rs" rel="noopener noreferrer"&gt;BlueZ module&lt;/a&gt; for NuPrint that calls them over D-Bus (&lt;a href="https://github.com/wapenshaw/nuprint/pull/10" rel="noopener noreferrer"&gt;PR #10&lt;/a&gt;):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If BlueZ has only heard the printer over Classic, so the device has &lt;code&gt;Bearer.BREDR1&lt;/code&gt; but no &lt;code&gt;Bearer.LE1&lt;/code&gt;, it runs an LE-only discovery (&lt;code&gt;SetDiscoveryFilter&lt;/code&gt; with &lt;code&gt;Transport = le&lt;/code&gt;) for up to 5 seconds. Discovery filters belong to the D-Bus client that sets them, so btleplug's own scans aren't affected.&lt;/li&gt;
&lt;li&gt;It calls &lt;code&gt;Bearer.LE1.Connect&lt;/code&gt; when BlueZ offers it.&lt;/li&gt;
&lt;li&gt;Otherwise it sets &lt;code&gt;PreferredBearer&lt;/code&gt; to &lt;code&gt;le&lt;/code&gt;, calls &lt;code&gt;Device1.Connect&lt;/code&gt;, and puts the old value back whether the connection worked or not.&lt;/li&gt;
&lt;li&gt;Then it waits for &lt;code&gt;ServicesResolved&lt;/code&gt;, the same as btleplug's own connect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Disconnecting needed the same treatment. With the printer paired over Classic, &lt;code&gt;Device1.Disconnect&lt;/code&gt; on its own left the LE link up, and BlueZ logged "No matching connection for device". NuPrint now calls &lt;code&gt;Bearer.LE1.Disconnect&lt;/code&gt; first.&lt;/p&gt;

&lt;p&gt;The catch is that both are experimental. BlueZ registers &lt;code&gt;Bearer.LE1.Connect&lt;/code&gt; and &lt;code&gt;Disconnect&lt;/code&gt; with &lt;a href="https://github.com/bluez/bluez/blob/5.87/src/bearer.c#L199-L202" rel="noopener noreferrer"&gt;&lt;code&gt;GDBUS_EXPERIMENTAL_ASYNC_METHOD&lt;/code&gt;&lt;/a&gt;, and &lt;code&gt;PreferredBearer&lt;/code&gt; is marked experimental too, so they only show up with &lt;code&gt;Experimental = true&lt;/code&gt; in &lt;a href="https://github.com/bluez/bluez/blob/5.87/src/main.conf#L125-L127" rel="noopener noreferrer"&gt;&lt;code&gt;main.conf&lt;/code&gt;&lt;/a&gt;. Fedora and Ubuntu ship that line commented out, and neither GNOME nor KDE has a switch for it. I thought about having the &lt;code&gt;.deb&lt;/code&gt; and &lt;code&gt;.rpm&lt;/code&gt; set it, but it turns on experimental D-Bus interfaces for every app on the machine, and I didn't want an installer changing that behind anyone's back. The &lt;a href="https://nuprint.app/guide" rel="noopener noreferrer"&gt;guide&lt;/a&gt; has the two commands instead, and if BlueZ still goes for Classic, the app says what to change. Without the setting, NuPrint falls back to btleplug's plain connect, which only works on an LE-only adapter.&lt;/p&gt;

&lt;p&gt;NuPrint never pairs on Linux now. A connection through &lt;code&gt;Bearer.LE1&lt;/code&gt; leaves the printer unpaired, and BlueZ forgets it about 30 seconds after the job, which is its default &lt;code&gt;TemporaryTimeout&lt;/code&gt;. A printer paired in GNOME's Bluetooth settings still prints, but BlueZ reconnects to it over LE by itself about 10 seconds after NuPrint disconnects and keeps the link open, which can stop the phone app from reaching it. Choosing &lt;strong&gt;Forget&lt;/strong&gt; in the settings ends that.&lt;/p&gt;

&lt;p&gt;One problem is outside NuPrint. bluez-async 0.9.0, which btleplug uses on Linux, &lt;a href="https://github.com/bluez-rs/bluez-async/blob/bluez-async-0.9.0/bluez-async/src/messagestream.rs#L40" rel="noopener noreferrer"&gt;unwraps the reply&lt;/a&gt; when it removes a D-Bus match as an event stream is dropped. If the match is already gone, that background task panics with "No match with that id found". Tokio keeps the panic inside the task and the app carries on, but the message still lands on standard error. Someone else has &lt;a href="https://github.com/bluez-rs/bluez-async/issues/419" rel="noopener noreferrer"&gt;reported the same panic&lt;/a&gt;, and it's still open.&lt;/p&gt;

&lt;p&gt;The releases only had a &lt;code&gt;.deb&lt;/code&gt;, which Fedora can't install, so &lt;a href="https://github.com/wapenshaw/nuprint/pull/12" rel="noopener noreferrer"&gt;PR #12&lt;/a&gt; added an &lt;code&gt;.rpm&lt;/code&gt; and AppImages. The &lt;code&gt;.rpm&lt;/code&gt; and the main app's AppImage both printed on my Fedora 44 machine. On Ubuntu it comes down to the BlueZ version (&lt;a href="https://launchpad.net/ubuntu/+source/bluez" rel="noopener noreferrer"&gt;Launchpad&lt;/a&gt;). Ubuntu 26.04 ships 5.85, so it should work, but I haven't tried it. Ubuntu 24.04 ships 5.72, which is older than both features, so there the only option is &lt;code&gt;ControllerMode = le&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The longer write-up, with the hardware record, is in &lt;a href="https://github.com/wapenshaw/nuprint/blob/master/docs/linux.md" rel="noopener noreferrer"&gt;docs/linux.md&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signing, updates, and what's left
&lt;/h2&gt;

&lt;p&gt;The installers still have the usual unsigned-app warnings. I haven't done Apple notarization, and I've applied to the SignPath Foundation for Windows signing but am still waiting on that.&lt;/p&gt;

&lt;p&gt;The release builds do have GitHub attestations, so there's a way to verify where a download came from. The update files are signed too, although that's separate from getting rid of the operating system's installer warnings.&lt;/p&gt;

&lt;p&gt;I've added in-app updates, with checking turned off unless you enable it or check manually. I didn't want a printer app going online without being asked. Updates also wait while something is printing, rather than restarting in the middle of a job.&lt;/p&gt;

&lt;p&gt;A review caught a problem in the Slint updater's version checks, which is fixed. Adding updates also broke the Mac packaging on the first attempt because the app bundle wasn't being kept for the update step. That held up the release until I fixed the build.&lt;/p&gt;

&lt;p&gt;I haven't watched an update install end to end yet. This is the first release with the updater in it, so that test comes with the next one.&lt;/p&gt;

&lt;p&gt;As for printer support, I've used NuPrint with my SC03h on Windows, macOS and Linux. The phone app listed other models with matching settings, so I've exposed those as experimental. I only own the one printer, and I don't want to imply I've tested hardware I haven't.&lt;/p&gt;

&lt;p&gt;It's grown quite a bit from the Python test. AI helped me get past the point where the earlier attempts had stalled, and a lot of the work since then has been testing, reviewing and fixing things I wouldn't have thought about at the start.&lt;/p&gt;

&lt;p&gt;NuPrint is open source under the MIT licence, with builds for Windows, macOS and Linux. The downloads are on &lt;a href="https://nuprint.app" rel="noopener noreferrer"&gt;nuprint.app&lt;/a&gt; and the code is on &lt;a href="https://github.com/wapenshaw/nuprint" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. If you have one of these little printers and try it, I'd be interested to hear how it works for you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;First posted on my blog, &lt;a href="https://blog.siddharthabbineni.in/nuprint-printing-without-the-phone-app/" rel="noopener noreferrer"&gt;Free practice&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bluetooth</category>
      <category>rust</category>
      <category>slint</category>
      <category>tauri</category>
    </item>
    <item>
      <title>GUIDE - Setting up a Github user page from scratch with Jekyll</title>
      <dc:creator>Siddharth Abbineni</dc:creator>
      <pubDate>Fri, 10 Jul 2020 09:51:32 +0000</pubDate>
      <link>https://dev.to/wapenshaw/guide-setting-up-a-github-user-page-from-scratch-with-jekyll-7f5</link>
      <guid>https://dev.to/wapenshaw/guide-setting-up-a-github-user-page-from-scratch-with-jekyll-7f5</guid>
      <description>&lt;h2&gt;
  
  
  Features &amp;amp; Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Free Hosting on Github.io&lt;/li&gt;
&lt;li&gt;Hosted on username.github.io subdomain&lt;/li&gt;
&lt;li&gt;Jekyll gives you the speed and simplicity of hosting your home or your application page.&lt;/li&gt;
&lt;li&gt;Configurable with themes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;Github account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rubyinstaller.org/downloads/" rel="noopener noreferrer"&gt;Ruby 2.6.*, Ruby Devkit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt; or any other preferred editor&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://jmeubank.github.io/tdm-gcc/download/" rel="noopener noreferrer"&gt;GCC, G++&lt;/a&gt; and &lt;a href="https://gcc.gnu.org/install/" rel="noopener noreferrer"&gt;Make&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://chocolatey.org" rel="noopener noreferrer"&gt;Chocolately&lt;/a&gt; for simpler installation of required components&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Github Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating a github account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Goto to the Github &lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;sign up&lt;/a&gt; page and create an account with your preferred username. &lt;strong&gt;The username you choose here will be the subdomain on which your site will be hosted.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Now that you have created an account and setup your profile (not required) you are ready to create repositories on that account.&lt;/li&gt;
&lt;li&gt;Create a repository in your newly created account with the name &lt;strong&gt;username.github.io&lt;/strong&gt;. Do not initiate the repository with a readme yet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m8z0b7i0lwfazo9veyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F8m8z0b7i0lwfazo9veyu.png" alt="Create a Repository" width="500" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You are done on Github for now. We will get back after setting up our local environment.&lt;/p&gt;

&lt;p&gt;(&lt;em&gt;Note: You cannot publish your github pages if you set the repository to "Private". To use GitHub pages on a private repository, you need the &lt;a href="https://github.com/pricing" rel="noopener noreferrer"&gt;PRO&lt;/a&gt; plan. If you have bought a jekyll theme, you might be required to make the repository private, check with your vendor.&lt;/em&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Ruby Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installing Ruby
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download and install using the Ruby Installer available &lt;a href="https://rubyinstaller.org/downloads/" rel="noopener noreferrer"&gt;Here&lt;/a&gt;, As of writing this guide Ruby 2.6.x is the preferred version as 2.7.x has compatibility issues with some gems that are needed to be installed via bundle. &lt;strong&gt;&lt;em&gt;Make sure you download the installer named Ruby+Devkit 2.6.x&lt;/em&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - You can also do this via [Chocolatey](https://chocolatey.org/) using these commands
  - `choco install ruby --version=2.6.5.1`
  - `choco install ruby.devkit`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Or Follow the &lt;a href="https://jekyllrb.com/docs/installation/" rel="noopener noreferrer"&gt;Jekyll Docs&lt;/a&gt; to complete the installation of basic environment (&lt;code&gt;Ruby&lt;/code&gt;, &lt;code&gt;RubyGems&lt;/code&gt; and &lt;code&gt;Bundler&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Install &lt;a href="https://jmeubank.github.io/tdm-gcc/download/" rel="noopener noreferrer"&gt;GCC, G++&lt;/a&gt; and &lt;a href="https://gcc.gnu.org/install/" rel="noopener noreferrer"&gt;Make&lt;/a&gt;, just use the default settings.

&lt;ul&gt;
&lt;li&gt;Even better get &lt;a href="https://chocolatey.org" rel="noopener noreferrer"&gt;Chocolately&lt;/a&gt; to install them with&lt;/li&gt;
&lt;li&gt;&lt;code&gt;choco install make&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;choco install mingw&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;4) To verify everything has been installed and setup properly use the following commands\&lt;br&gt;
   &lt;code&gt;ruby -v&lt;/code&gt; | &lt;code&gt;gem -v&lt;/code&gt; | &lt;code&gt;gcc --version&lt;/code&gt; | &lt;code&gt;g++ --version&lt;/code&gt; | &lt;code&gt;make --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;5) If everything went according to plan, your terminal should look like this&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmvx7a2ybubj9yym4m8d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmvx7a2ybubj9yym4m8d0.png" alt="Ruby Check" width="711" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Git Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;Git installer&lt;/a&gt; and start the git installer.&lt;/li&gt;
&lt;li&gt;Use the default settings unless you specifically want something to be different.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Adjusting your PATH environment&lt;/em&gt;, keep the default, &lt;strong&gt;"Use Git from the command line and also from 3rd-party software"&lt;/strong&gt;. This option will allow you to use Git from either Git Bash or the Windows Command Prompt / Powershell.&lt;/li&gt;
&lt;li&gt;Once you have finished installation, open a CMD(Command Promt)/PS(Powershell) window. Type in &lt;code&gt;git --version&lt;/code&gt; to verify&lt;/li&gt;
&lt;li&gt;If you prefer the bash terminal, your start menu should have a &lt;strong&gt;Git Bash&lt;/strong&gt; entry in it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Now to configure the installed instance of git with your Github Account.&lt;/li&gt;
&lt;li&gt;In PS/CMD/Bash shell type in

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git config --global user.username "&amp;lt;your name&amp;gt;"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git config --global user.email "&amp;lt;your e-mail&amp;gt;"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(username = the account you created &amp;amp; email = email associated with that account)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;We are done for now.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Jekyll Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;For a comprehensive guide on how to start a jekyll site from scratch follow the directions on the &lt;a href="https://jekyllrb.com/docs/installation/" rel="noopener noreferrer"&gt;Jekyll Website - Installation&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For this guide we are gonna do a bit of cheating to get setup as quickly as possible.&lt;/li&gt;
&lt;li&gt;Open up a shell, and type in &lt;code&gt;gem install jekyll bundler&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check installation by typing in &lt;code&gt;jekyll -v&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configuration and Setup
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;We will start with a theme of your choice which you can download at:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://jamstackthemes.dev/ssg/jekyll/" rel="noopener noreferrer"&gt;jamstackthemes.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jekyllthemes.org/" rel="noopener noreferrer"&gt;jekyllthemes.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyllthemes.io/" rel="noopener noreferrer"&gt;jekyllthemes.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jekyll-themes.com/" rel="noopener noreferrer"&gt;jekyll-theme.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Select a Theme which you like to use. For example for this site I have chosen the &lt;a href="https://github.com/cotes2020/jekyll-theme-chirpy" rel="noopener noreferrer"&gt;Chirpy Theme&lt;/a&gt;. Make sure you have the layout and page structure the way you want it.&lt;/li&gt;
&lt;li&gt;Once you have selected your theme, either download the zip file or save the github repository URL.&lt;/li&gt;
&lt;li&gt;Open up a shell again and naviage to the path where you want to create a folder for your new website&lt;/li&gt;
&lt;li&gt;If using windows explorer, create a folder and extract all the files from your theme file into that folder, make sure the GEMFILE file in the path foldername&lt;/li&gt;
&lt;li&gt;If using a shell, Create a folder with &lt;code&gt;mkdir foldername&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Change Directory to the newly created folder &lt;code&gt;cd foldername&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If you havent extracted the files, you can check out the file from the github repo, this is preferred.&lt;/li&gt;
&lt;li&gt;Remember the theme's github repository url? Now is the time to use it.&lt;/li&gt;
&lt;li&gt;Clone the repository to your foldername using &lt;code&gt;git clone repository-URL-you-just-copied.git -b master&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now your foldername should look something similar to this&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhzagmd9yiryqalu0wdnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhzagmd9yiryqalu0wdnk.png" alt="Directory List" width="262" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up remote git repo
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go back to the shell you were using, make sure its currently in foldername/&lt;/li&gt;
&lt;li&gt;Initialilze git in that folder with\
&lt;code&gt;git init&lt;/code&gt;\
This will initialize your foldername/ as a git repository&lt;/li&gt;
&lt;li&gt;In your browser go to your git hub repository and copy the URL of YOUR REPOSITORY. When you created the repository in your account. It should look like this\ &lt;code&gt;https://github.com/username/username.github.io.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add this URL as a remote\
&lt;code&gt;git remote add origin https://github.com/username/username.github.io.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Your Git repository is set for now and the remote is configured so when you commit the files and push, they will be added to your repository.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Jekyll Final Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Back to the shell you were using, time to install everything needed for your jekyll website.&lt;/li&gt;
&lt;li&gt;Type in &lt;code&gt;bundle install&lt;/code&gt; when you are in foldername/&lt;/li&gt;
&lt;li&gt;This will automatically install all the Jekyll plugins and dependencies that are listed in the Gemfile.&lt;/li&gt;
&lt;li&gt;If you are using Ruby 2.6.x you shouldn't get any errors. If there are dependeny errors, check the version numbers and install the needed ones.&lt;/li&gt;
&lt;li&gt;Now open the _config.yml file and modify the settings according to your needs, the important ones are:

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;url: 'https://username.github.io'&lt;/code&gt; (if you are hosting it to the username.github.io repository)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;baseurl: ''&lt;/code&gt; (not required for this instance)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Type in &lt;code&gt;bundle exec jekyll serve&lt;/code&gt; This will launch a webserver and host your website locally at &lt;a href="http://127.0.0.1:4000/" rel="noopener noreferrer"&gt;http://127.0.0.1:4000/&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Commiting and pushing everything to Github
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;After you have made all the changes in the configuration and other pages, it is now time to push all the files to Github&lt;/li&gt;
&lt;li&gt;Check git status, this will show you which files are unstaged: &lt;code&gt;git status&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add all files to staging: &lt;code&gt;git add .&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commit the files to the branch: &lt;code&gt;git commit -m Initial Commit&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push the commit to the remote repository (github repo) &lt;code&gt;git push origin master&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now visit your github repository page at &lt;a href="https://github.com/username/username.github.io" rel="noopener noreferrer"&gt;https://github.com/username/username.github.io&lt;/a&gt; and verify the files are uploaded&lt;/li&gt;
&lt;li&gt;Wait a minute or two and visit &lt;a href="https://username.github.io" rel="noopener noreferrer"&gt;https://username.github.io&lt;/a&gt; and the pages will appear!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Maintenance
&lt;/h2&gt;

&lt;p&gt;When you make changes to your website from now these are the steps to follow,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;check everything is working fine with: &lt;code&gt;bundle exec jekyll serve&lt;/code&gt; and visiting &lt;code&gt;http://127.0.0.1:4000/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add all changed files to staging with: &lt;code&gt;git add .&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Commit changes to the branch: &lt;code&gt;git commit -m "my commit message"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push the commit to the remote (github) repository with: &lt;code&gt;git push origin master&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>jekyll</category>
      <category>github</category>
      <category>pages</category>
      <category>ruby</category>
    </item>
    <item>
      <title>GUIDE - Customizing your Windows Terminal with themes and different Shells</title>
      <dc:creator>Siddharth Abbineni</dc:creator>
      <pubDate>Fri, 10 Jul 2020 09:47:22 +0000</pubDate>
      <link>https://dev.to/wapenshaw/guide-customizing-your-windows-terminal-with-themes-and-different-shells-27d2</link>
      <guid>https://dev.to/wapenshaw/guide-customizing-your-windows-terminal-with-themes-and-different-shells-27d2</guid>
      <description>&lt;h2&gt;
  
  
  Settings
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Opening the Settings File
&lt;/h3&gt;

&lt;p&gt;By Default the Windows terminal comes with Powershell and Commandline enabled, however if you want your own shell to be added to the list, you have to add it to the list in the &lt;code&gt;settings.json&lt;/code&gt; of Windows Terminal.&lt;/p&gt;

&lt;p&gt;You can find the file in &lt;code&gt;C:\Users\&amp;lt;username&amp;gt;\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or you simply can click on Settings in the Terminal Menu which will open up the JSON file&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3y1zfj0n3u0z0re37gmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3y1zfj0n3u0z0re37gmb.png" alt="TerminalSettings" width="553" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding the settings
&lt;/h3&gt;

&lt;p&gt;The JSON file is well documented on its own and you can tinker some settings before you get the hang of it.&lt;/p&gt;

&lt;p&gt;If you have the terminal open while changing the settings, the terminal will update on the fly as you change the settings, of if you have an error in the settings it will show you the error the moment you save the file, So keep it open while you are experimenting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.guidgenerator.com/online-guid-generator.aspx" rel="noopener noreferrer"&gt;Generate a GUID for your shells here&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;"defaultProfile":&lt;/code&gt; points to the profile with the same &lt;code&gt;"guid":&lt;/code&gt;. Whenever you open the terminal this is the profile that starts up&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;copyOnSelect": true,&lt;/code&gt; makes it work like in linux, ie, you have have to press Ctrl+C to copy the text.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"profiles": {&lt;/code&gt; This is where you configure all your different shells&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"schemes": [&lt;/code&gt; This is where you add your color schemas for use with your profiles.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Adding a different shell
&lt;/h3&gt;

&lt;p&gt;To add a different shell or a different starting profile for PS/CMD, you need to add entries to the &lt;code&gt;"profiles": {&lt;/code&gt; section&lt;/p&gt;

&lt;p&gt;Lets add the git bash shell. Make sure git is working by checking &lt;code&gt;git --version&lt;/code&gt;in command and this to your settings.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tabTitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Git Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"closeOnExit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"colorScheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Blazer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C:/Program Files/Git/bin/bash.exe --cd=/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cursorColor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FFFFFF"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cursorShape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Consolas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"fontSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{14ad203f-52cc-4110-90d6-d96e0f41b64d}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"icon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ms-appdata:///roaming/git-for-windows.ico"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Git Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"padding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0, 0, 0, 0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"snapOnInput"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Of course you have to make sure you have the &lt;code&gt;"commandline":&lt;/code&gt; parameter pointing to your bash.exe.&lt;/p&gt;

&lt;p&gt;for the &lt;code&gt;"icon":&lt;/code&gt; the best way is to find the git-for-windows.ico in your git bash installation folder and copy it to &lt;code&gt;%LOCALAPPDATA%\packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\RoamingState&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding color schemes
&lt;/h3&gt;

&lt;p&gt;There are already very well designed color schemes available here &lt;a href="https://github.com/mbadolato/iTerm2-Color-Schemes/tree/master/windowsterminal" rel="noopener noreferrer"&gt;iTerm2-ColorSchemes&lt;/a&gt; just copy the ones you like and paste them in the schemes section under &lt;code&gt;"schemes": [&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"schemes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Argonaut"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"black"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#232323"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"red"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ff000f"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"green"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#8ce10b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"yellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffb900"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"blue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#008df8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"purple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#6d43a6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#00d8eb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"white"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffffff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#444444"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ff2740"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#abe15b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffd242"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#0092ff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightPurple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#9a5feb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#67fff0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"brightWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffffff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#0e1019"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#fffaf4"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that you have added all the color schemes you like into the settings, you can apply them to your shell profiles, you can apply different styles to different shells.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"colorScheme": "Argonaut",&lt;/code&gt; in the profile will use color scheme we just added.&lt;/p&gt;

&lt;p&gt;All done!&lt;/p&gt;

&lt;p&gt;Anwyay here is my complete setup, just color changes some minor tweaks&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://aka.ms/terminal-profiles-schema"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="nl"&gt;"defaultProfile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;can&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;application&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;global&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-global-settings&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;selections&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;automatically&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;copied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clipboard.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"copyOnSelect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;formatted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;data&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;also&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;copied&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;clipboard&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"copyFormatting"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;A&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;specifies&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;execute&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;paired&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;information&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;it&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;should&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;look&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;feel.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Each&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;one&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;them&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;will&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;appear&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'New&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Tab'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;dropdown&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;can&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;be&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;invoked&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;commandline&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;with&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;`wt.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;xxx`&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profiles&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-profile-settings&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"profiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"defaults"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Put&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;settings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;you&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;want&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;apply&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;all&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profiles.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"list"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Make&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;changes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;powershell.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profile.&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Windows PowerShell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"powershell.exe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"acrylicOpacity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"closeOnExit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"colorScheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rebecca"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cursorShape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Consolas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"padding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0, 0, 0, 0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"snapOnInput"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"useAcrylic"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Make&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;changes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;cmd.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profile.&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{0caa0dad-35be-5f56-a8ff-afceeeaa6101}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Command Prompt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cmd.exe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"acrylicOpacity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"closeOnExit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"colorScheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Argonaut"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cursorShape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bar"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Consolas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"padding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0, 0, 0, 0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"snapOnInput"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"useAcrylic"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{b453ae62-4e3d-5e58-b989-0a998ec441b8}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Azure Cloud Shell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"source"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Windows.Terminal.Azure"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"tabTitle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Git Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"closeOnExit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"colorScheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Blazer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C:/Program Files/Git/bin/bash.exe --cd=/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cursorColor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#FFFFFF"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"cursorShape"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"filledBox"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Cascadia Code"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"fontSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{14ad203f-52cc-4110-90d6-d96e0f41b64d}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"historySize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9001&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"icon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ms-appdata:///roaming/git-for-windows.ico"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Git Bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"padding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0, 0, 0, 0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"snapOnInput"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"acrylicOpacity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"useAcrylic"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;schemes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;array.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;schemes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-color-schemes&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"schemes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Argonaut"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"black"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#232323"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"red"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ff000f"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"green"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#8ce10b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"yellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffb900"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"blue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#008df8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"purple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#6d43a6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"cyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#00d8eb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"white"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffffff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#444444"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ff2740"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#abe15b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffd242"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#0092ff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightPurple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#9a5feb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#67fff0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffffff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#0e1019"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#fffaf4"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Blazer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"black"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#000000"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"red"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#b87a7a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"green"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#7ab87a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"yellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#b8b87a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"blue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#7a7ab8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"purple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#b87ab8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"cyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#7ab8b8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"white"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#d9d9d9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#262626"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#dbbdbd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#bddbbd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#dbdbbd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#bdbddb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightPurple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#dbbddb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#bddbdb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ffffff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#0d1926"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#d9e6f2"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Rebecca"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"black"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#12131e"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"red"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#dd7755"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"green"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#04dbb5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"yellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#f2e7b7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"blue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#7aa5ff"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"purple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#bf9cf9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"cyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#56d3c2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"white"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#e4e3e9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#666699"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightRed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#ff92cd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightGreen"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#01eac0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightYellow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#fffca8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightBlue"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#69c0fa"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightPurple"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#c17ff8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightCyan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#8bfde1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"brightWhite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#f4f2f9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"background"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#292a44"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"foreground"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"#e8e6ed"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;custom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;keybindings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;array.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;unbind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;combination&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;defaults.json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"unbound"&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;keybindings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-keybindings&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"keybindings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Copy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;paste&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;bound&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Ctrl+Shift+C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Ctrl+Shift+V&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;defaults.json.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;These&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;two&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;lines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;additionally&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;bind&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;them&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Ctrl+C&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Ctrl+V.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;selection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-selection&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"copy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"singleLine"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+c"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"paste"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+v"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Press&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Ctrl+Shift+F&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;open&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;search&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;box&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"find"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ctrl+shift+f"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Press&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Alt+Shift+D&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;open&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pane.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"split"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;makes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pane&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;open&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;direction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;that&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;provides&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;most&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;surface&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;area.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"splitMode"&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"duplicate"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;makes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pane&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;use&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;focused&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;pane's&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;profile.&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;learn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;panes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;visit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://aka.ms/terminal-panes&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"splitPane"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"split"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nl"&gt;"splitMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"duplicate"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"alt+shift+d"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>windowsterminal</category>
      <category>terminal</category>
      <category>colors</category>
      <category>customization</category>
    </item>
  </channel>
</rss>
