Feature request: create new profile from .lnk file
#1,793 opened on Jul 3, 2019
Repository metrics
- Stars
- (35,764 stars)
- PR merge metrics
- (Avg merge 27d 19h) (24 merged PRs in 30d)
Description
Summary of the new feature/enhancement
Development environments, such as Visual Studio, SDKs, etc. install shortcuts that open command prompts with a pre-configured environment (e.g. "x64 Native Tools Command Prompt for VS 2019"). It's tedious and error prone to copy settings from these shortcuts. Terminal should do it automatically, either on a shortcut-by-shortcut basis, or even better letting you dynamically import a whole directory of shortcuts
Proposed technical implementation details
Until Terminal has a UI for creating and editing profiles, this feature will simply involve changes to the schema of profiles.json
I propose a new key for profile dictionaries, let's call it "importDefaultsFromLnk", which can specify a path to a shell link (.lnk) file. A profile can contain a single importDefaultsFromLnk field and nothing else, and all settings will come from the shell link and its NT_CONSOLE_PROPS and NT_FE_CONSOLE_PROPS data blocks (except those that don't make sense for Terminal, of course, like NT_CONSOLE_PROPS::dwWindowOrigin); the name field would default to the file's display name (IShellItem::GetDisplayName), so that it would automatically hide the extension and/or load a localized description that might be present. If other profile fields are explicitly specified, they'll override settings from the shell link. A null value for a field could be used to mean "override with the Terminal default"
Importing a set of shortcuts from a directory (e.g. all shortcuts in Programs folder "Visual Studio 2019\Visual Studio Tools\VC", or even better all shortcuts under "Visual Studio 2019\Visual Studio Tools", recursively) could be done naively, with a profile field that we might call "importProfilesFromDirectory", but unlike importing a single shortcut this feature has non-trivial implications, including but not limited to:
- should profiles imported from a directory be grouped in a sub-menu of the "new tab" menu?
- what about recursively imported profiles? should there be sub-sub-menus?
- how do we specify a dynamically imported profile in
globals\defaultProfile?