Open MicheleCicciottiWork opened 5 years ago
Would this make more sense as a tool to try and turn a shortcut into a profile you could put in your profiles.json, as opposed to something built in? That would have the downside of not syncing the settings with the shortcut, but it would leave all of the terminal settings in one place. I'd be wary of running something like this on every launch, since it might dramatically reduce startup time - something we're discussing over in #1258.
I don't hate this idea, and it's definitely unique enough to stand on its own. That being said, I'd want to flush it out more before someone goes hog wild implementing it.
I think it would be very cool if our settings supported a one-way "import .lnk
". It shouldn't have to be a separate tool, since we've got all the code in the codebase right now, in C++, so we could just make it a shared component.
I do agree with the Terminal Backlog milestone, though.
Probably dependent on #1564.
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 singleimportDefaultsFromLnk
field and nothing else, and all settings will come from the shell link and itsNT_CONSOLE_PROPS
andNT_FE_CONSOLE_PROPS
data blocks (except those that don't make sense for Terminal, of course, likeNT_CONSOLE_PROPS::dwWindowOrigin
); thename
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. Anull
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:globals\defaultProfile
?