microsoft/Terminal

Feature request: create new profile from .lnk file

Open

#1,793 opened on 2019年7月3日

GitHub で見る
 (3 comments) (2 reactions) (0 assignees)C++ (3,212 forks)batch import
Area-SettingsHelp WantedIssue-FeatureProduct-Terminal

Repository metrics

Stars
 (35,764 stars)
PR merge metrics
 (平均マージ 27d 19h) (30d で 24 merged PRs)

説明

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?

コントリビューターガイド