Change:
Would it be possible to allow for extensions to provide icons in s? At the moment we can use via the syntax, but if we want to provide a custom icon that is more complex (perhaps we can do that be providing a font and a partial product icon theme?). With a , we can pass in an optional icon path: Could we add this to QuickPickItem too? Based on the quick open input, there is already space afforded in the UI for the icon, so it would be useful if extensions to provide one.
Related to which asks for the ability to specify filetype icons.
Proposal: It looks a bit off using squares: !
Example with circles for reference: !
For anyone curious, circles are possible by using data URIs: Example and copied here for reference:

Discussion:
} const allowedTooltips = isProposedApiEnabled(extension, 'quickPickItemTooltip'); <del> const allowedIcons = isProposedApiEnabled(extension, 'quickPickItemIcon'); </del> return itemsPromise.then(items => {

if (item.tooltip && !allowedTooltips) { console.warn(`Extension '${extension.identifier.value}' uses a tooltip which is proposed API that is only available when running out of dev or with the following command line switch: --enable-proposed-api ${extension.identifier.value}`); } <del> if (item.iconPath && !allowedIcons) { console.warn(`Extension '${extension.identifier.value}' uses an icon which is proposed API that is only available when running out of dev or with the following command line switch: --enable-proposed-api ${extension.identifier.value}`); } const icon = (item.iconPath && allowedIcons) ? getIconPathOrClass(item.iconPath) : undefined; </del> <ins> const icon = (item.iconPath) ? getIconPathOrClass(item.iconPath) : undefined; </ins> pickItems.push({ label: item.label, iconPath: icon?.iconPath,

}); const allowedTooltips = isProposedApiEnabled(this.extension, 'quickPickItemTooltip'); <del> const allowedIcons = isProposedApiEnabled(this.extension, 'quickPickItemIcon'); </del> const pickItems: TransferQuickPickItemOrSeparator[] = []; for (let handle = 0; handle < items.length; handle++) {

if (item.tooltip && !allowedTooltips) { console.warn(`Extension '${this.extension.identifier.value}' uses a tooltip which is proposed API that is only available when running out of dev or with the following command line switch: --enable-proposed-api ${this.extension.identifier.value}`); } <del> if (item.iconPath && !allowedIcons) { console.warn(`Extension '${this.extension.identifier.value}' uses an icon which is proposed API that is only available when running out of dev or with the following command line switch: --enable-proposed-api ${this.extension.identifier.value}`); } const icon = (item.iconPath && allowedIcons) ? getIconPathOrClass(item.iconPath) : undefined; </del> <ins> const icon = (item.iconPath) ? getIconPathOrClass(item.iconPath) : undefined; </ins> pickItems.push({ handle, label: item.label,

portsAttributes: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.portsAttributes.d.ts', profileContentHandlers: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.profileContentHandlers.d.ts', quickDiffProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickDiffProvider.d.ts', <del> quickPickItemIcon: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickItemIcon.d.ts', </del> quickPickItemTooltip: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickItemTooltip.d.ts', quickPickSortByLabel: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.quickPickSortByLabel.d.ts', readonlyMessage: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.readonlyMessage.d.ts',

kind?: QuickPickItemKind; /** <ins> * The icon path or {@link ThemeIcon} for the QuickPickItem. */ iconPath?: Uri | { light: Uri; dark: Uri } | ThemeIcon; /** </ins> * A human-readable string which is rendered less prominent in the same line. Supports rendering of * {@link ThemeIcon theme icons} via the `$(<name>)`-syntax. *

<del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { /** * Represents an item that can be selected from * a list of items. */ export interface QuickPickItem { /** * The icon path or {@link ThemeIcon} for the QuickPickItem. */ iconPath?: Uri | { light: Uri; dark: Uri } | ThemeIcon; } } </del>