Terminal: Display current tab's icon as a badge on the taskbar icon

Created on 8 Jul 2019  路  16Comments  路  Source: microsoft/terminal

I can assign individual icons for each profile, and each tab I open for said profile has that profile's icon on the tab. HOWEVER, the taskbar "button" has the primary app icon on it, which isn't as helpful as having the currently active tab's icon instead. The correct icon provides a visual cue on which taskbar button is "my" button I'm looking for.

Proposed technical implementation details (optional)

Area-User Interface Help Wanted Issue-Feature Product-Terminal

Most helpful comment

I had a little downtime today so I created these mockups 馃槉

image

All 16 comments

Is it even possible to change the taskbar icon for an exe at runtime?

I believe the taskbar icon matches the window's icon, which you can change at runtime.

Is it even possible to change the taskbar icon for an exe at runtime?

Outlook does, and I've seen other (non-UWP) apps do it to implement faux-badging too.

That being said, I prefer the current static icon approach.

I feel a configuration switch coming on...

I'm inclined to just say "nah."

I'm inclined to just say "this can actually be pretty useful" and stick it on the backlog. Thanks!

I had a little downtime today so I created these mockups 馃槉

image

How do they look downscaled to the size of the taskbar buttons? Are the adornments even visible any more?

This might not be possible
See: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/badges

You cannot provide your own badge image; only system-provided badge images can be used.

I looked into this before and found some information that may be pertinent here:

When Windows Installer creates shortcuts in the Start menu, it sets the icon of the shortcuts which point to Installer cache of icons. This feature is required for advertising, where the referenced file does not exist but still the correct icon should be shown. It also allows showing the correct icon to the application if its main .exe is removed (and you can run MSI repair to fix it).

Your application is started with shortcut from Startup folder, and the icon of the shortcut is used on the Taskbar. (And you have the main window: no matter how you show it, when app starts or only when you click app icon in the notification area; moreover you have to have a window to be able to get clicks from notification area icon.)

When you disabled pinning your app to the Taskbar, it ignores the icon set in the shortcut that started your application, and therefore icon on Taskbar updates when you change the window icon.

Basically, you can't update the taskbar icon at runtime unless you've disabled pinning.

No big deal. I don't have much of anything pinned.

There does exist a win32 api for adding overlay icons to the taskbar button which could be used for this ITaskbarList3::SetOverlayIcon.

A quick demo on what it would actually look like:
HfIW5KqMt1
hr70CDNU4O

@dsafa -- the API doesn't allow arbitrary overlays: There's a fixed list. We could emulate what you show by replacing the _entire_ icon though, under certain conditions.

With the UWP badges I do see the restrictions. However, with the older desktop api it does appear to be able to support arbitrary icons. The screenshot is from a quick implementation using a hardcoded image.

Chiming in...

I think this option request is super useful. An alternative is to be able to set up icons for shortcuts that would display in the taskbar. Which currently doesn't work with wt.exe. But there is already a working example.

cmd.exe can use shortcut icons!

cmd.exe essentially has this feature. This should be able to be replicated by the Windows Terminal?

Create a shortcut1, target: C:\Windows\System32\cmd.exe
Add it's own icon. (Icon1)

Create a shortcut2 target: C:\Windows\System32\cmd.exe
Add it's own icon. (Icon2)

  1. Start shortcut1, Icon1 displays in the taskbar.
  2. Start shortcut2, Icon2 displays in the taskbar even though it is just a 2nd instance of cmd.exe.

Here is a screenshot:

CMD exe Icons

What you are looking at:
2 separate cmd.exe sessions on the left & 2 different bash.exe sessions on the right. Each with their own taskbar icon. Very easy to choose the right session from the taskbar.

Why is this useful?

My development involves at least the following environments:

  • Dev Machine with 2 different build environments. Each environment has a different set of environment variables. So each one gets their own session with icon.
  • Build machine that I SSH into. Another session with icon.
  • Deployed service machine(s) (livetest, staging, live) each session with icons.
  • MacOS machine for building iOS app builds (another icon)

Another complication: I tend to open 2-3 windows per environment when I am working on them.

So using Windows Terminal I could set up a SUPER session that had a tab for each environment and 2-3 panes per tab. Problem solved!

Except sometimes I need multiple environments visible on the screen at the same time and context switching between tabs can be a pain. So I set up a couple of shortcuts with a subset of environment tabs in each shortcut.

Or maybe an ideal is to set up each environment as a shortcut to a wt.exe session.

But figuring out which session belongs to which environment is a bear without a feature like this.

Added #4768 as a separate feature request.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

zadjii-msft picture zadjii-msft  路  3Comments

mrmlnc picture mrmlnc  路  3Comments

carlos-zamora picture carlos-zamora  路  3Comments

wkbrd picture wkbrd  路  3Comments

ghvanderweg picture ghvanderweg  路  3Comments