-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Scenario: Add support for 3rd-party extensions #4000
Comments
You should add #3468 that needs to be brought into an extension instead of living in the main code base. |
Why on earth would you need support from the WIndows team? That doesn't apply to VS code, e.g. in any environment. Can't we just do it the same way? |
@gbritton1 Terminal is (for better or for worse) deployed as a "MSIX" package using the new Windows packaging/installer infrastructure; VSCode is not. That infrastructure is missing some features that would allow for:
Had we chosen to install using MSI, traditionally, into We've since learned that there's a way forward where we don't need in-process extensions, but we do want to make sure that it will perform adequately for things that impact the rendering engine or the text buffer. (1): "Lose" insofar as it is easy. We could always write a bunch of code to support it, but on the balance we decided to invest most of our effort in making the Terminal and Console Host itself better. :) |
Would it be simpler to change the packaging?
|
I'm glad you put this out there. I honestly had the same opinion on why it required updates on the windows side. Thanks for clarifying that. |
Notes comment: See https://github.com/microsoft/terminal/tree/dev/migrie/fhl/dyndep. Todo
Notes circa May 2023 Hackathon
Now, the questions are:
|
@zadjii-msft before you merge this we should chat. See my comment here - microsoft/WindowsAppSDK#66 (comment) |
@jonwis haha don't worry - that was firmly FHL code, not real shipping code. I use FHL to push the boundaries of what the platform will let me do. But I'm absolutely going to make sure there's proper boundaries set up here before doing anything like this in real Terminal code 😆 |
(Also, don't get me wrong - I love it when we figure out the power latent in the platform. We've done sooo much here over the years that compiles together well but we don't have enough time or hands to document all the possible combinations. :) ) |
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?
Pane
s with their own UI elementsTermControl
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.
Profile
,ColorScheme
,GlobalAppSettings
proper WinRT types MakeProfile
,ColorScheme
,GlobalAppSettings
proper WinRT types #3998Tab
,Pane
proper WinRT types MakePane
a proper WinRT type #3999, Bind TerminalPage's TabView to TerminalPage::_tabs #3922Pane
s 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
tmux
Control Mode #3656 Add support fortmux
Control 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.code
Editor #5636 Add support for Azure Cloud Shellcode
EditorControl Elements
ShortcutAction
we'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.The text was updated successfully, but these errors were encountered: