microsoft/Terminal

Feature request: create new profile from .lnk file

Open

#1 793 ouverte le 3 juil. 2019

Voir sur GitHub
 (3 commentaires) (2 réactions) (0 assignés)C++ (3 212 forks)batch import
Area-SettingsHelp WantedIssue-FeatureProduct-Terminal

Métriques du dépôt

Stars
 (35 764 stars)
Métriques de merge PR
 (Merge moyen 27j 19h) (24 PRs mergées en 30 j)

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?

Guide contributeur