Launch and host XAML-based Plugins within Terminal #4719
Labels
Issue-Feature
Complex enough to require an in depth planning process and actual budgeted, scheduled work.
Resolution-Duplicate
There's another issue on the tracker that's pretty much the same thing.
Description of the new feature/enhancement
I know this may seem way out there, but hear me out.
Windows Terminal is about tools. A single window open that has our command line tools in one place. There are many things that go along with that that are better when provided as a GUI, such as Settings for tools. In addition, other things, such as package managers, greatly benefit from having a GUI to observe listings of packages and their details. These GUIs are related to our open command prompts and it would be great of they could be shown in the same Window.
Proposed technical implementation details (optional)
A Visual Studio template would be created to build a Windows Terminal Plugin. It would have metadata that would specify commands that could be typed in the terminal that would be processed by Windows Terminal upon hitting Enter on the keyboard (and only when invoked from the keyboard) that if found would pass the entire command line to the Plugin. Example:
!packages nuget list Microsoft.Extensions.*
This would invoke a plugin named "packages" which would in turn parse the command line and determine it needed to get a list of packages from nuget that match Microsoft.Extensions.* and display the results in the GUI. It would only interact with the Profile it was invoked from.
Other examples are accelerators for Dotnet core such that a Plugin could be open with a set of buttons for common actions/macros that the user may need. This would be great for system admins who might administer 50 machines and run the same powershell commands on each of them. Currently she would have to add aliases to profiles on potentially each machine. No bueno! This way she sets up some macros in a GUI, enables the plugin for that Profile and then can invoke her predetermined commands.
Another really useful plugin would be a Text Editor that could be used for profiles and scripts. The data would be piped to/from the Console for reading and saving. Another example is a file manager that could be used to move data between profiles over encrypted pipes.
Performing actions against a profile would always be done through the Plugin system. Communication would be STDIN/STDOUT to the console. A GUI could take the whole window or split the window vertically or horizontally and be resizable. Plugins would be exposed through a Store and could be imported via nuget packages.
The text was updated successfully, but these errors were encountered: