Repository navigation
Open
Labels
Area-TerminalControlIssues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.)Issues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.)Area-WPFControlThings related to the WPF version of the TermControlThings related to the WPF version of the TermControlIssue-ScenarioProduct-TerminalThe new Windows Terminal.The new Windows Terminal.
Milestone
Description
This scenario tracks the remaining work to productize the UWP and WPF versions of the Terminal Control. These will allow 3rd-party developers to embed terminal instances in their applications. That way, external developers won't need to write their own terminals, they can just re-use the one we build in this repo.
Currently, the Windows Terminal uses the UWP version of the control. Similarly, Visual Studio embeds the WPF version.
Pre-Requisites
These tasks aren't immediately related, but will need to get done first to unblock this work
- Scenario: Windows Terminal 2.0 Process Model Improvements #5000 / Add support for tab tearoff and tab merge #1256: I'm planning on tearing up the TermControl as a part of the window/content process model refactor. Undoubtably, this will affect the API boundary that will be exposed
- ConPTY: pass through requests for the alt buffer #381: Before we ask anyone else to use us, we should probably be a better terminal emulator. The Alt buffer is an important part of that story.
- Should we perhaps also finish the VT implementation for the
TerminalCoreas well? Currently the Terminal Core only implements the VT sequences that ConPTY will emit. Hypothetically, someone might be using this in a scenario where conpty isn't on the other end.
Tasks
Tasks
- Introduce abstraction layer between TermControl and TerminalCore (aka Interactivity) Introduce abstraction layer between TermControl and TerminalCore (aka Interactivity) #6842
- Tear out the
SearchBoxControlfrom theTermControl, so it can be its own control - Remove the SharedShadow thing in SearchBoxControl, noted in Command palette and search box visual tweaks #12913
- Finalize API boundary - Where is the real line between
TermControl/ControlInteractivity/ControlCore? - Re-base the WPF control on the shared
TerminalContent. - Package as a nuget
- Deploy to some nuget feed somewhere?
- Cannot find info on hosting terminal in another app. #4572
- Request: Right-click menu inside TerminalControl (w/ Copy & Paste?) #3337
- Close the gap between Terminal and Conhost ITerminalApi #13408
- The WPF nuget package isn't signed by our CI #15404
- wpf: cursor is same color as last rendered foreground (?) #6967
- wpf: TerminalContainer consumes WM_MOUSEWHEEL and doesn't let the native HWND have it #6996
- Terminal: add support for Window Manipulation (CSI t, resize), or reject it explicitly (and force a client resize) #5094
- Pasting is super wacky. The control shouldn't ask the app to paste to it.
- Feature Request: IME mode after pressing Escape or Enter key in CJK input #1304
- IME mode changed at startup in Google Japanese Input #14407
- Multiple compatibility issues with Google Japanese Input (IME) in vim with WSL #13681
- The CursorStyle in TerminalTheme does not seem to work #16404
Note
Dustin, talk to VS folks for DD-2694216 when you merge Interactivity with HwndTerminal; they are reversing every multi-line input delimited by \n because ... reasons.
related
- Scenario: TerminalControl Interactivity Improvements Scenario: TerminalControl Interactivity Improvements #6106
- starting Terminal with wt no longer returns the main window handle of the resulting window starting Terminal with wt no longer returns the main window handle of the resulting window #7084
- This is the "reparent the terminal to another HWND thread"
Reacted by StefanKoell, Minecraftchest1, Jayke R. Huempfner, MartinGC94, Mardan, hnOsmium0001, Aaron Schultz, FB, Rodrigoandrigo, Lennart Brüggemann and 11 more
Reacted by FB, Marcin Wisnicki, Jianshu Wang, Carlos Nihelton and Sympatron GmbH
Metadata
Metadata
Assignees
Labels
Area-TerminalControlIssues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.)Issues pertaining to the terminal control (input, selection, keybindings, mouse interaction, etc.)Area-WPFControlThings related to the WPF version of the TermControlThings related to the WPF version of the TermControlIssue-ScenarioProduct-TerminalThe new Windows Terminal.The new Windows Terminal.
Activity
[-][Reserved for future use][/-][+]Productize the WPF, UWP Terminal Controls[/+]minecraftchest1 commentedon May 13, 2021
This is something that I would like to see, especially if it was done in such a way that it could be ported to other frameworks such as avaloniaui.
8 remaining items
OculiViridi commentedon Jan 10, 2024
Mike Griese (@zadjii-msft) Any progress about those Tasks?
zadjii-msft commentedon Jan 10, 2024
Unfortunately nope. I think we originally slated this for late 2023, but alas, other internal priorities came in and bumped this. I think we fully intend to do this sometime SoonTM.
OculiViridi commentedon Jan 10, 2024
Love it! 😆
Anyway, I'm thinking about moving (at least for Now ™️) to a web-based terminal emulator like
xterm.js(or others) and embed it within aWebViewcontrol.Maybe you can give me suggestions about this approach?
Thanks!
Goldgom commentedon Dec 31, 2024
End of 2024,any news about it?I am looking for a embedded terminal Control in WinUI3
I'v already tried the project https://github.com/Corillian/WindowsTerminal but it failed to work in my computer.
Or what can I do to finish this feature?
mitchcapper commentedon Dec 31, 2024
I was able to get it fully working as a WPF control per my sample repo.
Goldgom commentedon Jan 3, 2025
What about WinUi3,my project is a fully WinUi3 project which can not embedde a WPF control in it.
mitchcapper commentedon Mar 30, 2025
钱渊铭 (@Goldgom) My original example required their Terminal.WPF control so would not work on WinUI3, but I have an alpha solution as part of a sample library for peoples use.
Previously Mike Griese (@zadjii-msft) in this issue it was stated:
My original WPF example was a fully embeddable WPF control although wasn't really in a library form. It wasn't enough of what the Terminal team was looking for, so I went ahead and put together a bit more formal of a library:
https://github.com/mitchcapper/EasyWindowsTerminalControl
It supports WPF and has an alpha WinUI3 library. The WPF version is built on the fairly solid foundation my prior example was put together on the Windows Terminal teams WPF control and conpty build. The WinUI3 version is more hacked together, as I had to write a WPF equivalent control which has a hacky custom port of HwndHost.
The library should support both render only uses and full interactive terminal sessions in a (hopefully) easy to use setup.
In theory just add
EasyWindowsTerminalControlnuget package to your project and thenand you should be good to go. For more details see the project page https://github.com/mitchcapper/EasyWindowsTerminalControl
Rewrite HwndTerminal to build on ControlInteractivity and -Core
Rewrite HwndTerminal to build on ControlInteractivity and -Core
docs: terminal bağımlılığı riskini araştır ve karar kaydını ekle (#31)
Rewrite HwndTerminal to build on ControlInteractivity and -Core (#20812)