Updated thread from #555
Now that we have a better understanding of what work will be needed to support 3rd party extensions ("plugins"), this thread is the megathread to track all the work that's needed to support them.
Before any real work can begin here, we're waiting on some support from the Windows operating system that will be coming SoonTM. Fundamentally, third-party code extensions for packaged applications (like us) isn't supported currently.
This is not work slated for 1.0. It may not even land in 2.0. This work will likely span multiple releases. Whenever this work does end up starting formally, we'll likely have a number of minor versions with prototypes of the extensibility model, with breaking changes up until the major version release of the Terminal. So if extensions are scheduled for 3.0, then 2.4 might introduce bts of the extensibility model that are later broken in 2.5, 2.6, etc.
What should extensions be able to do?
- Add their own profiles via Dynamic Profile Generators
- Customize the rendering of the Terminal, with things like:
- custom shaders, font renderers
- custom formatting of the buffer (like hyperlinks)
- Add their own Color Schemes, keymaps
- Modify the UI theme (for adjusting appearance of tabs, scrollbars, etc.)
- Modify the layout of the UI
- Add elements to the UI like status bars, toolbars, minimaps
- reposition existing elements of the UI? Tabs on bottom for example.
- Create
Panes with their own UI elements
- Read the contents of the text buffer, for parsing things like hyperlinks
- When extensions modify the UI, they'll need to adjust how large the initial window size is
- Add commands to the Command Palette, including nested commands
- Add commands to various context menus (such as the
TermControl context menu, TabViewItem menu).
Work needed to support extensions
Some of this work is more directly related to extensions, while others on the list are simply adding features to the terminal to provide points for extensibility in the future.
Mega-list of extension ideas
Dynamic Profiles / settings
Additional Connection types
Buffer Parsing/Manipulation
Suggestions
UI Elements
App elements
Control Elements
Other Elements
Custom Rendering
Advanced Settings
Miscellaneous
@ future me, 10/14/2021
I tried this in dev/migrie/fhl/adaptive-card-extension, but ran into a number of unfixable build issues that made me hate the world. I couldn't get another package built to be able to load that into the terminal at all. Maybe next month I'll try again. For now, it's on to honks.
Updated thread from #555
Now that we have a better understanding of what work will be needed to support 3rd party extensions ("plugins"), this thread is the megathread to track all the work that's needed to support them.
Before any real work can begin here, we're waiting on some support from the Windows operating system that will be coming SoonTM. Fundamentally, third-party code extensions for packaged applications (like us) isn't supported currently.
This is not work slated for 1.0. It may not even land in 2.0. This work will likely span multiple releases. Whenever this work does end up starting formally, we'll likely have a number of minor versions with prototypes of the extensibility model, with breaking changes up until the major version release of the Terminal. So if extensions are scheduled for 3.0, then 2.4 might introduce bts of the extensibility model that are later broken in 2.5, 2.6, etc.
What should extensions be able to do?
Panes with their own UI elementsTermControlcontext menu,TabViewItemmenu).Work needed to support extensions
Some of this work is more directly related to extensions, while others on the list are simply adding features to the terminal to provide points for extensibility in the future.
Profile,ColorScheme,GlobalAppSettingsproper WinRT types MakeProfile,ColorScheme,GlobalAppSettingsproper WinRT types #3998Tab,Paneproper WinRT types MakePanea proper WinRT type #3999, Bind TerminalPage's TabView to TerminalPage::_tabs #3922Panes with non-terminal content A pane doesn't necessarily need to host a terminal. #997 (spec: First draft of a spec for panes with non-terminal content #1080)TermControl(Request: Right-click menu inside TerminalControl (w/ Copy & Paste?) #3337)Mega-list of extension ideas
Dynamic Profiles / settings
Additional Connection types
tmuxControl Mode #3656 Add support fortmuxControl ModeBuffer Parsing/Manipulation
Suggestions
UI Elements
App elements
Feature Request: allow to pick the color of the tabs #2994 Feature Request: allow to pick the color of the tabsFeature Request: An advanced tab switcher #1502 Feature Request: An advanced tab switcherTab name on fullscreen view #4444 It would be nice to have a kind of popup with a tab name when you switch tabs with CTRL+TAB in fullscreen mode.codeEditor #5636 Add support for Azure Cloud ShellcodeEditorControl Elements
ShortcutActionwe've defined? Or its ownShortcutAction.Other Elements
Custom Rendering
Advanced Settings
Miscellaneous
@ future me, 10/14/2021
I tried this in
dev/migrie/fhl/adaptive-card-extension, but ran into a number of unfixable build issues that made me hate the world. I couldn't get another package built to be able to load that into the terminal at all. Maybe next month I'll try again. For now, it's on to honks.