Change:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --What I have noticed when using profiles is that switching between them takes a bit longer than it should. I don't mean the duration it takes when I click on the profile I want, I mean the part that I should click on manually each time I wanna change the profile. Basically what I'm thinking is if there could be a way to set a keyboard shortcut so it will go to next profile would make it better. Also thought that it would be better if we had the option to have button above in the side bar
Yes, please bring back the Profile button that was in the preview of this feature! Among other things, it made it much easier to see which profile was active. I find that the profile name doesn't stand out for me in the title bar, and if I have the Command Center turned on, it doesn't show up at all.
I will come up with a command for switching profiles action. I though there is one already, but it doesnot. For profile icon specific feedback, please comment here -
A command to switch would be a huge help. I realize some of this is 'growing pains' of getting profiles attached to all of my existing workspaces, but since most of my frequent workspaces have folder-specific overrides on the (so even if the profile does have that variable enabled, it would be overriden and hidden), and I typically keep the activity bar hidden, the only way for me to check that I'm using the right profile is to toggle into the activity bar visibility, click the settings icon, see the listing next to profiles. This also comes into play when I'm editing the profile settings. While I appreciate the 'Open Current Profile Settings (JSON)' option to distinguish between that and the default profile, I run into the same issue where I need to double check I'm editing the 'right' settings. I've somewhat worked around this by adding a comment at the top of my with the friendly name of the profile, having an easy way to switch between profiles (and see the actual name of the profile) from the command palate would be very helpful. I also think being able to see the name of the current profile in the status bar would be more helpful than the titlebar (keeps me having to remove the workspace override on the custom title regardless). (Though this may be better suited to an extension. That said, I cannot seem to find how to get the profile name in the api docs)
Thanks for the feedback. As requested, please provide your feedback in this issue This issue is meant to discuss how to represent the profile in the activity bar. Another tip for you here is that you can simply hover on gear icon to see the current profile <img width="500" alt="image" src="https://user-"
with your changes in can the command be bound to a keyboard shortcut ? I guess switching profiles using keyboard shortcut will also make it easier to switch between profiles efficiently
Yes, the command can be assigned to a keyboard shortcut. This will open a quick pick in which you can choose the profile.
Thanks for the reply . Love it
Verify the command command
We maybe should do a pass about how an "active" item in quick pick is indicated. For example the picker for windows does this: ! Here the profiles picker does this: ! cc
Setting the active item in the quickpick is unfortunately not accessible so that needs to be thought through some more.
I think that should possibly be a concept in quick pick and then some ARIA roles/things set accordingly.
Would it be possible to switch to a specific profile like so "workbench.profiles.actions.switchProfile.myProfile" I love that profiles can save UI states, but not being able to hotkey them directly, so I don't get a popup feels bad and sluggish.

Discussion:
import { Event } from 'vs/base/common/event'; import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { localize } from 'vs/nls'; <del> import { Action2, ISubmenuItem, MenuId, MenuRegistry, registerAction2 } from 'vs/platform/actions/common/actions'; </del> <ins> import { Action2, IMenuService, ISubmenuItem, MenuId, MenuRegistry, registerAction2 } from 'vs/platform/actions/common/actions'; </ins> import { ICommandService } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr, IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IUserDataProfile, IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile';

private registerActions(): void { this.registerProfileSubMenu(); <ins> this._register(this.registerSwitchProfileAction()); </ins> this.registerProfilesActions(); this._register(this.userDataProfilesService.onDidChangeProfiles(() => this.registerProfilesActions()));

}); } <ins> private registerSwitchProfileAction(): IDisposable { return registerAction2(class SwitchProfileAction extends Action2 { constructor() { super({ id: `workbench.profiles.actions.switchProfile`, title: { value: localize('switchProfile', "Switch Profile..."), original: 'Switch Profile...' }, category: PROFILES_CATEGORY, f1: true, precondition: PROFILES_ENABLEMENT_CONTEXT, }); } async run(accessor: ServicesAccessor) { const quickInputService = accessor.get(IQuickInputService); const menuService = accessor.get(IMenuService); const menu = menuService.createMenu(ProfilesMenu, accessor.get(IContextKeyService)); const actions = menu.getActions().find(([group]) => group === '0_profiles')?.[1] ?? []; try { const result = await quickInputService.pick(actions.map(action => ({ action, label: action.checked ? `$(check) ${action.label}` : action.label, })), { placeHolder: localize('selectProfile', "Select Profile") }); await result?.action.run(); } finally { menu.dispose(); } } }); } </ins> private readonly currentprofileActionsDisposable = this._register(new MutableDisposable<DisposableStore>()); private registerCurrentProfilesActions(): void { this.currentprofileActionsDisposable.value = new DisposableStore();