All posts by Ed Tittel

Full-time freelance writer, researcher and occasional expert witness, I specialize in Windows operating systems, information security, markup languages, and Web development tools and environments. I blog for numerous Websites, still write (or revise) the occasional book, and write lots of articles, white papers, tech briefs, and so forth.

Checking Boot/Recovery Media CA-2023 Status

Here’s an interesting consequence of the switchover in the Secure Boot chain of trust from CA-2011 to CA-2023. Once that occurs, you can’t boot from install, repair and recovery media that doesn’t support CA-2023. The PC firmware will reject it as “non-compliant.” What that means is with the revocation of CA-2011 upcoming in June, it’s time to start checking boot/recovery media CA-2023 status. When you can, it’s also time to replace older non-compliant media with newer, compliant versions.

I had Copilot write me a PowerShell Script that did 3 key things:
1. It checked to make sure drive G: (default letter for my UFDs) was present and accounted for
2. It showed me the top-level directory so I could see what I was dealing with (handy to distinguish installers, repair tools, etc.)
3. If it found EFI files, it reported Yes/No on their CA-2023 compliance.

After Checking Boot/Recovery Media CA-2023 Status, Then…?

The TL;DR answer to this question is: replace it if needed, keep it otherwise. I also used this opportunity to label my UFDs so I would know what I had in the future. I found all kinds of interesting stuff, including:

  • An MSI flash drive for my “new” MAG Tomahawk B550 mobo, a UEFI updater for v 2.90 on the ASRock B550 Extreme4+
  • Multiple Macrium Reflect and Hasleo Backup Suite rescue UFDs
  • A copy of the Windows DaRT (Diagostics and Recovery Toolset)
  • Multiple Windows Installer UFDs, mostly via MCT, some from UUPDump

Here’s the interesting thing: NONE of these items is CA-2023 compliant. Copilot says, in fact, that MS has not yet released an installer or repair ISO that includes the CA-2023 boot files in the EFI partition (see lead-in graphic bottom portion). I’d planned to update my dozen or so bootable UFDs today if I could. Looks like I’ll be waiting a while…

Key Takeaway

If you revoke CA-2011 support on any or all of your Windows PCs, you put yourself in the position of having to go into UEFI and turn off Secure Boot sometimes. When might that be? Whenever you want or need to use media to boot that PC for repair, recovery or installation. Good to know! That’s not the kind of thing I’d like sprung on me as a total surprise. Bet you feel the same way, too…

Facebooklinkedin
Facebooklinkedin

Flo6 Gets Unghosted, Loses 183 Drivers

When I switched my production PC, Flo6, from the ASRock to the MSI motherboard on March 21, I left a large crew of ghosts behind. In this case, a ghost is a no-longer-used driver that remains in the driver store even though it’s out of service and irrelevant to the new installation. Thankfully, Copilot helped me remember and find Uwe Sieber’s outstanding Device Cleanup Tool. It specializes in identifying and removing such ghosts. After using the tool, Flo6 gets unghosted, loses 183 drivers (!), and gets considerably slimmed down.

How Flo6 Gets Unghosted, Loses 183 Drivers

At first I tried a tool named GhostBuster. It showed me I had 399 drivers installed on Flo6, of which up to 193 could be removed. But I couldn’t actually make it remove anything. So I asked Copilot for a different option, among which I recognized Uwe Sieber’s aforementioned tool. It worked, too!

Sieber’s Device Cleanup Tool shows ONLY drivers that may be removed. So I removed all of them. Of the 194 in that collection, 11 came back after a reboot (you can see them in the lead-in screencap). That’s how I got to the 183 number for the count of drivers removed from Flo6 overall. I used PowerShell to calculate before and after sizes for the DriverStore. It started out at 10.63 GB, and dropped to 7.87 GB after cleanup. I like that!

One of the consequences of moving from one mobo to another without a clean install is that this kind of cleanup is needed. One of the advantages of that swap is that I didn’t have to clean install the OS. What can I say? I was in a hurry! Here in Windows-World, these are the trade-offs and the consequences we must learn to accept.

Facebooklinkedin
Facebooklinkedin

Power Outages Mung LAN Addressing

With clear skies yesterday, our house nevertheless took two power hits yesterday. The first lasted 15 minutes, the second 11 (had to reset certain appliance clocks both times). When I tried to remote into the ThinkStation P3 Ultra this morning, RDP wouldn’t connect. So I tried pinging the host name (Tsp3Ultra2) and got “destination host unreachable.” Pretty conclusive proof that power outages mung LAN addressing, since that very string worked fine yesterday.

If Power Outages Mung LAN Addressing, Then?

For the time being I’ve got Advanced IP Scanner open, and am using the “Tools” option for each network node to call Remote Desktop Connection. That tells me which PC I’m trying to get at, and uses its IP address to make things work. Good enough for now, I guess.

I’ve observed that the name table will gradually correct itself over a 24-hour period. Since our last outage happened just before 5 PM yesterday, that means I can return to using machine names for remote access later this evening. In the meantime, I have a decent workaround.

A quick check tells me that only some PCs were affected by the outage. Not surprisingly, the laptops (kept alive by batteries durng the outage) retain their machine name-to-address relationships. The desktops and mini-PCs (except Flo6, which is on a UPS) have all been renumbered.

Here in Windows-World, it’s always something. Yesterday, it was a quick pair of power glitches. Who knows what’ll hit me today?

Note Added Next Day

As I had suspected (or hoped), the machine names are now all working again. As is typical here at Chez Tittel, a 24-hour period is long enough for DHCP to work itself into usable shape. Now I know that a power glitch (or two) can upset that delicate balance. I’ll probably be reminded again sometime soon, now that thunderstorm season here in Central Texas is getting started. This time, I think the glitch came from construction work at the edge of our neighborhood where power goes from overhead to underground lines.

 

Facebooklinkedin
Facebooklinkedin

Pondering UEFI Updates

I’m still getting settled in with my new production desktop environment. ICYDK, it’s built around an MSI MAG Tomahawk B550 mobo, with Ryzen 5800X, NVIDIA 3070Ti GPU, and 64GB DDR4 RAM. This morning, I started digging into the MSI Center app that orchestrates other system utilities, and handles updates for drivers and firmware. In my investigation, I discovered a “new” update for the mobo firmware. In turn, that has me pondering UEFI updates.

Where Does Pondering UEFI Updates Take Me?

I had to figure out that MSI’s once-standalone “Live Update” utility now sits beneath its top-level Support tab (top middle of option bar in the lead-in graphic). Then I had to figure out that UEFI updates appear only when one clicks the “Advanced” button, rather than the more pedestrian “Scan” button (which scans only for driver updates).

As  you can see in that graphic, the company shares its guidance in eye-catching red text at the head of the MB BIOS list. That guidance reads: “MSI does not recommend to update BIOS when system has no issue” in somewhat fractured English. However rough the wording might be, the guidance is still pretty good. Let me explain…

If It Ain’t Broke, Don’t Fix It!

The reason why I recently rebuilt my Flo6 desktop stemmed from UEFI problems with the previous ASRock B550 Extreme4 mobo. It kept sticking halfway between Secure Boot old/updated data sets. That resulted in extreme boot requirements, when I might sometimes have to reset CMOS just to get the PC to boot.

Most of the time I had to shut it down, and cut power, then wait a while to bring it back to life. That went on for weeks before I made the switch to the MSI board. Since then, boot and update operations have been blissfully boring. Things just work, and I can use all of the various boot options and related keyboard options to do exactly what I want.

Reading over Copilot’s summary of what UEFI v2.A0 brings me, as compared to the running v2.90, I don’t see anything I need. Nor do I see anything that would improve Flo6’s currently rock-solid and dependable, fully caught-up Secure Boot Status.

Hence my decision: I’m not going to update. Nothing is causing problems. Everything is working dependably and reliably. Secure Boot is golden. This time, I’ll pass… Maybe next time?

Facebooklinkedin
Facebooklinkedin

WinGet Iconification Is Ongoing

Yesterday, I had the good fortune to spend an hour on the phone with WinGet team lead Demitrius Nelon. He gave me a “slice of life” view into the many and varied kinds of chicken-and-egg problems his team deals with daily. He also helped me improve my understanding of where and how icons come from inside a sixel-enabled terminal session, including those that WinGet shows. And indeed, WinGet iconification is ongoing and spreading, as I saw this morning when I ran a general upgrade command on the recently clean-installed (and properly enabled) ThinkPad X12 Gen 1 tablet.

Why Say: WinGet Iconification Is Ongoing

Take a look at the output for a winget upgrade –all …  command from the lead-in graphic. Note the first actual upgrade (for OneDrive) shows an icon in that output stream. This is the first visible evidence I’ve seen running WinGet that the tool is including icons outside of the list –details commands. Very interesting!

Doc Info on list –details

Here’s a big snippet from the release notes for WinGet production version v.1.28.190:

New Feature: ‘list –details’

The new feature enables a new option for the list command, --details. When supplied, the output is no longer a table view of the results but is instead a series of show like outputs drawing data from the installed item.

An example output for a single installed package is:

> wingetdev list Microsoft.VisualStudio.2022.Enterprise --details
Visual Studio Enterprise 2022 [Microsoft.VisualStudio.2022.Enterprise]
Version: 17.14.21 (November 2025)
Publisher: Microsoft Corporation
Local Identifier: ARP\Machine\X86\875fed29
Product Code: 875fed29
Installer Category: exe
Installed Scope: Machine
Installed Location: C:\Program Files\Microsoft Visual Studio\2022\Enterprise
Available Upgrades:
  winget [17.14.23]

If sixels are enabled and supported by the terminal, an icon for the installed package will be shown.

I’m glad to see and understand that the stuff I had to figure out more or less on my own through trial and error is now going explicitly into the public record. For the details on how to enable sixel output in your WinTerm sessions, see last Friday’s how-to blog post Light Up WinGet Icons.

Where to from Here?

I expect to see icons popping up all over WinGet in the coming months. I also expect to see more icons popping up in output streams, as the plumbing falls into place. Right now, only about 20% of WinGet’s packages show icons. But that number’s going to jump for sure. Stay tuned, and I’ll tell you all about it.

 

Facebooklinkedin
Facebooklinkedin

Two Checkboxes Means 12X Faster

I plugged a Samsung 990 Pro 1TB NVMe into the Thunderbolt 5 port on my Lenovo ThinkPad P16 Gen 3 mobile workstation. ICYDK, TB5 promises up to 80 Gbps bandwidth. The 990 Pro is one of the fastest consumer NVMe drives money can buy. I expected fireworks. I got a firefly. Fortunately, I determined that clicking two checkboxes means 12 faster results. This comes from foregoing quick disconnect and enabling write caching. Let me explain…

Exploring: Two Checkboxes Means 12X Faster

As shown in the lead-in graphic, CrystalDiskMakr tells the ugly truth. As you can see on the left hand side, read speeds looked good. But writes are stuck in what I’d charitably call “USB 2.0 territory.” Something was very, very wrong — and it wasn’t the hardware. Results come from CrystalDiskMark 9.0.2 x64 software.

Now, look to the right, you can see that write speeds jumped significantly, while read speeds stay more or less the same. Indeed, the Thunderbolt 5 (TB5) link and Acasis TB501Pro enclosure weren’t the whole bottleneck. Sequential writes jumped from 473 to 5,943 MB/sec for a 12.6X speed boost.. Even more amazing: 4K Q1T1 writes leapt from 1.04 to 110 MB/sec, for a 105X gain.

All this came from two little checkboxes, on the Policies tab from the Properties window for the Acasis TB501Pro enclosure. Deets follow…

Two Related Settings in DevMgr Do the Trick

Here’s the 30-second procedure:

  1. Open Device Manager → expand Disk drives → right-click your external NVMe → select Properties → click the Policies tab.
  2. Switch from “Quick removal” (the default) to “Better performance.” This unlocks the write caching option that’s otherwise grayed out.
  3. Check the box for “Enable write caching on the device.” This is the setting that actually turns on write caching.
  4. Click OK, then rerun your benchmarks and enjoy the results.

Both settings are required. Selecting “Better performance” alone without the write caching checkbox won’t deliver these numbers. You need both.

Here’s the Tradeoff

Windows defaults to Quick Removal for a good reason: it protects against data loss if you yank a drive without ejecting it first. With Better Performance and write caching enabled, you must use “Safely Remove Hardware” before unplugging, or you risk losing data still sitting in the write cache.

That’s the tradeoff. For a stationary workstation drive that stays plugged in during work sessions, it’s a no-brainer. For a drive you hot-swap constantly throughout the day, think twice. I’m going for maximum speed on backups and restores, so I’ll make myself remember this tradeoff if I need to unlplug the NVMe enclosure.

The Results Could Still Be Better

I’m still of the opinion that — as I opined in my Feb 20 blog on this topic — that buying a TB5 NVMe enclosure isn’t worth the added expense. TB4 enclosures cost about US$100 less, and deliver nearly the same performance as TB5 (it’s a 10-15% difference at best). Doubling the price for a modest gain just doesn’t make sense. TB5 shines for video and networking. For storage links, not so much, because controllers basically limit links to PCIe x3/x4 levels.

That’ still true today. But I was pleased to get much more out of my rig once I made the enclosure behave more like a USB drive and less like a USB stick! Here in Windows-World you sometimes have to take your wins where you can find them…

Facebooklinkedin
Facebooklinkedin

How-To: Light Up Winget Icons

Thanks to numerous requests, I’m providing step-by-step instrux in this unusual second blog post for today. It’s based on something that made me unreasonably happy earlier this week. That is:  WinGet can now display colorful package icons right inside Windows Terminal, rendered via sixel graphics. It’s a small visual upgrade that makes winget list –details output dramatically more readable. You get actual application icons inline with package data instead of a wall of monochrome text. But getting there requires a few specific steps. Here’s the complete recipe so you, too, can light up WinGet icons.

Why Must You Light Up WinGet Icons?

The current production version of WinGet is v1.28.220 as I write this post. The latest Preview version is v1.29.70-preview. Production is still catching up, so preview is a must for the moment. I imagine, though, that this will change with the next production version update. As with all moving targets, this one keeps changing along with everything else!

Step 1 — Get a Preview Version of Winget

Sixel icon support requires WinGet version 1.29.50-preview or later. The current stable release doesn’t include it. Check your version with winget -v. If you’re behind, try this first:

winget upgrade Microsoft.AppInstaller –source winget

If that doesn’t pick up the preview build, head to the microsoft/winget-cli releases page on GitHub, download the latest .msixbundle. If a double-click won’t install it, you can install it manually with Add-AppxPackage. Fair warning: on some machines the Microsoft Store installer handles dependencies automatically. On others, you’ll need to sideload VCLibs and Microsoft.UI.Xaml packages yourself.

Step 2 — Enable Sixels in Winget’s Settings (Not Terminal’s!)

This is the gotcha, and it got me for a short while. I confess: I mixed it up myself. The sixel toggle goes in WinGet‘s own settings file, NOT in Windows Terminal’s settings.json. Run winget settings to open the file. Add or merge a visual block so it looks like this:

{
“$schema”: “https://aka.ms/winget-settings.schema.json”,
“visual”: {
“enableSixels”: true,
“progressBar”: “rainbow”
}
}

The enableSixels: true setting tells WinGet to emit sixel graphics in its output. The progressBar key is optional —”rainbow“, “accent”, and “retro” work well (“sixel” works, but is hard to see). Any of these gives you graphical progress bars during installs, as a nice bonus.

Step 3 — Restart Terminal and Run It

Kill Terminal completely — not just close a tab. Right-click the taskbar icon and close the window, or kill the wt process outright. Relaunch. Then run:

winget list –details

Icons should appear for Win32 packages (exe/msi installers). MSIX packages won’t show icons — that’s a known limitation of the current pipeline, not a configuration error on your part. You can filter to a single package to test things quickly (I chose 7Zip, as it’s at the top of my ASCII sort order):

winget list –details 7zip

What to Expect

Not every package gets an icon. In my testing across two ThinkPads, icon coverage ranged from 26% to 31% of total installed packages. The dividing line is 100% correlated with installer category: Win32 packages (exe/msi) get icons, MSIX packages don’t. That’s an architectural gap Microsoft hasn’t bridged yet.

But what works, works beautifully. The icons are crisp, properly sized, and render instantly. It turns a dull text dump into something you can actually scan visually — which matters when you’re staring at 150+ installed packages trying to figure out what needs updating. Once you’ve got it set up, you won’t want to go back to the plain-text version. Cheers!

Facebooklinkedin
Facebooklinkedin

Great MSA Massacre of 2026

When it comes to my Microsoft Accounts (MSAs), I must laugh at what historian Hayden White unsmilingly called “the burden of history.” That is, it seems I’ve acquired quite a number of MSAs over the years. Thus, I had to shoulder that burden recently when I decided to clean things up a bit. Last week witnessed my own “great MSA massacre of 2026.” Indeed, I rid myself of 4 old MSAs and cleaned up what remained. It wasn’t exactly bloody, as such things go, but it was indeed a burdensome task.

What Spurred the Great MSA  Massacre of 2026?

As the lead-in graphic should suggest, the impetus came from devices associated with my many and varied MSAs. Indeed, I discovered numeous evaluation units from Lenovo, Dynabook, HP, MSI, and others. Some went as far back as the early 2020s.

One source of issues is that I didn’t practice good “eval return hygiene” on many loaner units. I would log in to them using an MSA, but didn’t unenroll them from device lists before sending them back. This, it seems, could cause them to persist for up to 6 months after return and presumable oblivion. At least, as far as logins from my MSA were concerned.

I spent about two weeks of concerted effort, visiting the managed devices page for my still-active MSAs. Each day, I would remove all stale entries (I call them “zombies”) only to see them pop up again. But over time, and with grim repetition, I finally consigned those stubborn devices to rest in eternal peace (hopefully).

What’s Left to Do?

I’ve got one MSA that’s a bit of a zombie itself. Its home email server was shut down last year, as its owner went out of business. I want to keep that account alive because it carries 20 years of — please don’t laugh out loud — Microsoft Solitaire history that I don’t want to lose. It’s tied to my cell number, so I can still prove my identity as long as that sticks with me, so I should be good.

I’m now shuffling all of its devices over to my primary MSA, so I can keep the ones I actually use all in one place. Going forward, I have a plan as I return eval units to Lenovo (or whomever else might send me a review unit). I’ll make sure to unenroll them from my registered device and MS Store device lists to keep things current and correct. Copilot opines further it’s a good idea to factory reset those units, too, to wipe all MSA traces. I’ll do that, too.

As IRL, in Windows-World actions have consequences. I’m doing my best to remember that using my MSA to login and play with eval units means I have to manage them more actively as they come and go. Fingers crossed I’ll do that properly from now on…

Facebooklinkedin
Facebooklinkedin

Some Have Icons, Others Don’t

Now that the adrenaline rush from getting icons working in WinTerm has subsided, I’ve started looking more closely at which items actually display icons in response to winget list –details. My conclusion from this analysis? Some have icons, others don’t. Indeed, the number of qualifying items is less than I originally thought: exactly 37 of the 143 total packages that winget manages show me something pretty to look at. ‘Sup with that? Here’s my take…

Which Some Have Icons, Others Don’t?

The test machine is a Lenovo ThinkPad X12 Gen 1 Hybrid running Windows 11 — a clean-ish install with the usual factory bloatware and a handful of my own tools layered on top. Running winget list --details produces 143 packages. Of those, exactly 37 display colorful, sixel-rendered icons in the terminal output. The remaining 106 show nothing. No icon, nor placeholder. No ghostly outline. Just… text.

What’s striking is how that output is organized. All 37 icon-bearing packages appear first in the output stream, clustered together like a parade of floats. Then there’s a visual cliff — you scroll past the last colorful logo and drop straight into a desert of monospaced text. It’s like walking from a gallery opening into a DMV waiting room. Same terminal. Same command. Two completely different experiences.

Twenty-six percent. That’s the icon coverage rate. On a machine with 143 packages, barely a quarter of them get the visual treatment. The other 74%? It’s still 1985 out there.

The Installer Category Absolutely Rules

Here’s where things get interesting — and by “interesting” I mean “so clean it almost feels like a prank.” I started looking for the variable that separates the haves from the have-nots. Publisher? Nope — Microsoft shows up on both sides. Source repository? Irrelevant. Architecture? x64 and x86 packages appear in both camps. Update date? No correlation. Then I looked at the Installer Category field, and the mystery evaporated.

The Pattern

Every single package with an icon has Installer Category exe or msi. These are traditional Win32 desktop applications installed via ARP (Add/Remove Programs) entries. Every single package without an icon has Installer Category msix — modern packaged apps from the Microsoft Store or sideloaded MSIX bundles.

There’s a 100% correlation. Not 98%. Not “mostly.” One hundred percent. Win32 equals icons. MSIX equals no icons. The dividing line isn’t publisher, isn’t source, isn’t architecture, isn’t age. It’s installer category, and nothing else.

What Does This Mean?

Why does this make sense architecturally? Because the two package types get their metadata from fundamentally different places:

  • Win32 packages (exe/msi) live in the winget community repository, where their manifest files include IconUrl fields pointing to PNG images. Winget fetches those URLs, converts the images to sixel format, and Terminal renders them inline. Clean pipeline. Works beautifully.
  • MSIX packages get their metadata from the Microsoft Store catalog or from the AppxManifest.xml embedded inside the package itself. Neither of these sources exposes icon URLs in a format that winget’s sixel rendering pipeline can consume. The icons exist — the Store shows them, Dev Home shows them, the Start Menu shows them — but terminal-facing winget can’t reach them through the MSIX metadata path.

Searing Irony: MS Apps Are Holdouts

And here’s where the comedy writes itself. Of the 106 iconless MSIX packages on this PC, 96 are published by Microsoft. Let that sink in. The company that built winget. The same outfit that built Windows Terminal. The company that built the sixel rendering pipeline. The developers who invented the MSIX packaging format… can’t show its own icons in its own tool.

We’re not talking about obscure infrastructure components here. The missing-icon list reads like a “Best of Microsoft” compilation album:

  • Flagship apps: Microsoft Edge, Microsoft Teams, OneDrive, Outlook, Paint, Photos, Calculator, Camera, Notepad
  • Windows itself: Windows Terminal, Microsoft Store, Windows Security, Snipping Tool, Windows Media Player
  • Productivity & lifestyle: To Do, Sticky Notes, Phone Link, Quick Assist, Clipchamp, Power Automate
  • Entertainment & social: Xbox, Solitaire, Dev Home

Then there are the framework and runtime packages — the plumbing that nobody sees but everything depends on. .NET Native Frameworks (versions 1.3, 2.1, 2.2), VCLibs (2012, 2013, 2015), UI.Xaml (2.7, 2.8), WindowsAppRuntime (1.6, 1.7, 1.8) — many appearing twice, once for x64 and once for x86. These make up vital Windows infrastructure. You wouldn’t expect icons on a Visual C++ redistributable. But Teams? Edge? Photos? These are flagship consumer applications with instantly recognizable logos. And in the terminal, they’re anonymous.

What Else Is Missing?

The remaining ~10 non-Microsoft MSIX packages without icons are third-party apps that happen to ship as MSIX bundles, mostly OEM-related: Intel Graphics Software, Thunderbolt Control Center, Dolby Audio Premium, Lenovo Vantage, Notepad++ (there’s also an installable version, with icon showing), Realtek Audio Control, Synaptics TrackPoint and TouchPad drivers, and — somewhat poetically — Oh My Posh, a tool whose entire reason for existing is making terminals look prettier.

Why DOES MSIX Fall Behind?

To understand the gap, you have to understand the pipeline. Winget’s icon rendering isn’t magic — it’s a four-step relay race, and MSIX packages drop the baton at the starting line.

Here’s how it works for Win32 packages:

  1. Manifest lookup. Winget looks up the package in its community repository and finds the package manifest YAML file.
  2. Icon URL extraction. The manifest includes an IconUrl field pointing to a hosted PNG or SVG image.
  3. Sixel conversion. Winget fetches the image from the URL and converts it to sixel format — an inline graphics encoding standard that dates back to DEC terminals in the 1980s, now reborn in modern terminals.
  4. Terminal rendering. Windows Terminal, with enableSixels: true in its experimental settings, interprets the sixel data and renders the icon inline, right next to the package name.

For MSIX and Store packages, this pipeline breaks at steps 1 and 2. MSIX packages registered through the Store don’t necessarily have community manifests with IconUrl fields. Their metadata comes from the Store catalog API or from the AppxManifest.xml bundled inside the package. Neither of these sources feeds into winget’s sixel rendering path.

It’s not that MSIX packages don’t have icons — they absolutely do. The Microsoft Store displays them beautifully. Dev Home displays them. The Start Menu displays them. Your taskbar displays them. But the specific pipeline that converts an icon reference into sixel terminal output hasn’t been connected to the MSIX metadata source. The icons are there. The rendering engine is there. The wiring between them? Not yet.

What Comes Next? “Under Construction…”

The good news — and it’s genuinely good news — is that this is just an implementation gap, not a fundamental limitation. Every piece of the puzzle belongs to MS:

  • Winget — Microsoft’s package manager
  • Windows Terminal — Microsoft’s terminal application
  • Sixel rendering — implemented by the Terminal team
  • MSIX — Microsoft’s modern packaging format
  • The Store catalog API — Microsoft’s metadata service

There are no third-party dependencies to negotiate. No standards bodies to petition. No licensing hurdles to clear. Connecting the MSIX metadata path — where the icons already live — to the sixel rendering pipeline is a plumbing job. An important one, but a plumbing job nonetheless.

When (not if) Microsoft bridges this gap, the icon coverage on a typical Windows machine should jump dramatically. We’re talking from 26% to potentially 90% or higher, essentially overnight. On this ThinkPad, that would mean going from 37 icons to 130+. The visual cliff in the winget list output would disappear, replaced by a continuous stream of colorful, identifiable package icons.

The winget-cli GitHub repository is the place to watch. Feature requests and pull requests related to MSIX icon rendering or Store catalog icon integration would be the signal that the coverage expansion is inbound. Given that Microsoft went to the trouble of implementing sixel rendering in the first place — a non-trivial engineering effort — it seems unlikely they’d leave 74% of packages iconless.

One in Four Is a Good Start…

So here we are. The sixel icon feature in Windows Terminal works. It works beautifully, in fact — those 37 Win32 packages look fantastic, their colorful logos rendered crisply inline, transforming a wall of text into something you can actually scan visually. The three-step setup is straightforward. The technology is sound.

It’s just that only 37 apps showed up to the party in full regalia, while 96 of Microsoft’s own applications stand in the corner without name tags. Edge — the browser Microsoft preinstalls on every Windows PC on Earth — doesn’t get an icon. Teams — the collaboration hub Microsoft spent billions promoting — doesn’t get an icon. Windows Terminal itself, the application rendering the icons, doesn’t get an icon. You have to admire the irony, even if you wish you didn’t.

The feature is real. The gap is clear. The fix is feasible. And in the meantime, those 37 Win32 apps with their lovingly rendered sixel icons are living proof that the future of terminal-based package management looks a lot more colorful. Now, somebody needs to connect the rest of the plumbing.

In Windows-World, 26% is a start. A visually delightful, architecturally illuminating, slightly ironic start. But MS can do better. Hopefully, sooner rather than later. Let’s see!

Facebooklinkedin
Facebooklinkedin

WinGet Export/Import Aces App Handling

After a fortunate accident decided me to clean install Windows 11 on the ThinkPad X12 Detachable Tablet, I had to continue the setup process. For me, that means installing a raft of apps and applications. “This time,” I thought, “Let’s try Winget’s export & import functions.” I did just that yesterday. I’m pleased to report that WinGet Export/Import aces app handling. Indeed I was able to handle 35-plus apps in under 20 minutes. Let me explain…

How WinGet Export/Import Aces App Handling

As with much else in the Windows Terminal/PowerShell environment, WinGet manages export/import operations using a .json (JavaScript Object Notation) file. It’s like XML, except more compact: human-readable, but less verbose.

Step 1 is to instruct the source PC (Flo6, in this case) to export its roster of installed packages. First I started off with a command to grab that roster, and stuff it into a .json file:

winget export -o Flo6-apps.json

Then, I opened that file in notepad to edit out stuff I didn’t want or need. In this case that includes lots of stuff that comes pre-installed on Windows anyway (e.g. Edge, PowerShell, and a bunch of other stuff). It also included apps I knew I wouldn’t want on the X12 (e.g. all the MSI motherboard stuff and utilities, Adobe Acrobat, NVIDIA software, older CrystalDiskX versions, and so forth).

Long Story Short: 58 to 36

By the time I trimmed everything, the number of entries in the .json file dropped from 58 to 36 (the export function skips apps for which WinGet packages don’t exist, so that trimmed the overall number down from 221 to 58 to start with). After that, it was just a matter of using the import function on the receiving X12 PC, like so:

winget import -i Flo6-apps.json
The whole process took about 20 minutes to run. Indeed it is much, much faster than the one-at-a-time approach. It’s even faster than using PatchMyPC Home Updater, whose 500-plus application catalog covers much of the same ground that I like to tread on my setups.

Lessons Learned

Along the way I learned a few things, hopefully worth sharing. First and foremost, I learned to read the export JSON file carefully. I confess: I did miss a couple of things (e.g. MSI version of CPU-Z). I ended up having to do a little cleanup after the import completed. You could do better, by reading — and pruning — the export list more closely than I did.

I also had to do some followup on Windows Terminal/PowerShell setup. That meant adding a nerd font, changing from PS 5.1 to 7.x, and making sure OhMyPosh was working properly. Easily done, but takes a little while.

Now, I’m ready for my next adventure. Here in Windows-World there’s always a new one right around the corner.

Facebooklinkedin
Facebooklinkedin