terminal/src/cascadia/TerminalApp
PankajBhojwani 614507b95b
OSC 8 support for conhost and terminal (#7251)
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
Conhost can now support OSC8 sequences (as specified [here](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda)). Terminal also supports those sequences and additionally hyperlinks can be opened by Ctrl+LeftClicking on them. 

<!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> 
## References
#204 

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
* [X] Closes #204 
* [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA
* [ ] Tests added/passed
* [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx
* [ ] Schema updated.
* [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments
Added support to:

- parse OSC8 sequences and extract URIs from them (conhost and terminal)
- add hyperlink uri data to textbuffer/screeninformation, associated with a hyperlink id (conhost and terminal)
- attach hyperlink ids to text to allow for uri extraction from the textbuffer/screeninformation (conhost and terminal)
- process ctrl+leftclick to open a hyperlink in the clicked region if present

<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Open up a PowerShell tab and type
```PowerShell
${ESC}=[char]27
Write-Host "${ESC}]8;;https://github.com/microsoft/terminal${ESC}\This is a link!${ESC}]8;;${ESC}\"
```
Ctrl+LeftClick on the link correctly brings you to the terminal page on github

![hyperlink](https://user-images.githubusercontent.com/26824113/89953536-45a6f580-dbfd-11ea-8e0d-8a3cd25c634a.gif)
2020-09-03 13:52:39 -04:00
..
dll Fix intellisense errors by moving TerminalApp projects around (#6897) 2020-08-20 22:44:37 +00:00
Resources/en-US Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
ActionAndArgs.cpp Provide global setting to use ATS for nextTab and prevTab (#7321) 2020-08-21 15:39:40 +00:00
ActionAndArgs.h Add support for the Command Palette (#6635) 2020-06-26 20:38:02 +00:00
ActionArgs.cpp Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
ActionArgs.h Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
ActionArgs.idl Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
App.base.h Apply a GDI region to the top level Island window to allow dragging with a single Island (#929) 2019-06-25 13:06:11 -07:00
App.cpp Make Terminal look great in High Contrast (#6833) 2020-07-08 12:08:08 -07:00
App.h Break everything out of App except Xaml platform init (#3465) 2019-11-07 13:10:58 -08:00
App.idl Fix intellisense errors by moving TerminalApp projects around (#6897) 2020-08-20 22:44:37 +00:00
App.xaml Replace the HRGN-based titlebar cutout with an overlay window (#5485) 2020-04-24 15:22:40 -07:00
AppActionHandlers.cpp Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
AppCommandlineArgs.cpp Add support for running a wt commandline in the curent window WITH A KEYBINDING (#6537) 2020-07-17 21:05:29 +00:00
AppCommandlineArgs.h Add support for running a wt commandline in the curent window WITH A KEYBINDING (#6537) 2020-07-17 21:05:29 +00:00
AppKeyBindings.cpp Add support for iterable, nested commands (#6856) 2020-08-13 21:22:46 +00:00
AppKeyBindings.h Move ICore/ControlSettings to TerminalControl project (#7167) 2020-08-07 14:46:52 +00:00
AppKeyBindings.idl Fix intellisense errors by moving TerminalApp projects around (#6897) 2020-08-20 22:44:37 +00:00
AppKeyBindingsSerialization.cpp Move ICore/ControlSettings to TerminalControl project (#7167) 2020-08-07 14:46:52 +00:00
AppLogic.cpp Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
AppLogic.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
AppLogic.idl Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
AzureCloudShellGenerator.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
AzureCloudShellGenerator.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
CascadiaSettings.cpp Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
CascadiaSettings.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
CascadiaSettingsSerialization.cpp Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
ColorHelper.cpp Fix a few minor typos from #3789 (#5740) 2020-05-04 16:47:29 -05:00
ColorHelper.h Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
ColorPickupFlyout.cpp Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
ColorPickupFlyout.h Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
ColorPickupFlyout.idl Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
ColorPickupFlyout.xaml Update colour picker buttons with round edges. (#7305) 2020-08-18 00:21:11 +00:00
ColorScheme.cpp Make ColorScheme a WinRT object (#7238) 2020-08-14 17:54:35 -07:00
ColorScheme.h Make ColorScheme a WinRT object (#7238) 2020-08-14 17:54:35 -07:00
ColorScheme.idl Make ColorScheme a WinRT object (#7238) 2020-08-14 17:54:35 -07:00
Command.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
Command.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
Command.idl Add icons to commands in the Command Palette (#7368) 2020-08-21 18:08:02 +00:00
Commandline.cpp Add support for commandline args to wt.exe (#4023) 2020-01-27 15:34:12 +00:00
Commandline.h Add support for commandline args to wt.exe (#4023) 2020-01-27 15:34:12 +00:00
CommandPalette.cpp Add support for Commandline Mode to the CmdPal (#7293) 2020-08-24 21:39:07 +00:00
CommandPalette.h Add support for Commandline Mode to the CmdPal (#7293) 2020-08-24 21:39:07 +00:00
CommandPalette.idl Provide global setting to use ATS for nextTab and prevTab (#7321) 2020-08-21 15:39:40 +00:00
CommandPalette.xaml Add icons to commands in the Command Palette (#7368) 2020-08-21 18:08:02 +00:00
DebugTapConnection.cpp Fixed #3799: Introduce sendInput command (#7249) 2020-08-12 13:46:53 +00:00
DebugTapConnection.h Add explicit identifier to some constructors (#5652) 2020-04-29 16:50:47 -07:00
DefaultProfileUtils.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
DefaultProfileUtils.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
defaults-universal.json Bind the command palette by default (#7384) 2020-08-24 15:44:36 -07:00
defaults.json Make index in closeOtherTabs and closeTabsAfter optional (#7390) 2020-08-25 19:25:25 +00:00
EmptyStringVisibilityConverter.cpp Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
EmptyStringVisibilityConverter.h Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
EmptyStringVisibilityConverter.idl Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
GlobalAppSettings.cpp Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
GlobalAppSettings.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
GlobalAppSettings.idl Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
HasNestedCommandsVisibilityConverter.cpp Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
HasNestedCommandsVisibilityConverter.h Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
HasNestedCommandsVisibilityConverter.idl Add some polish to nested commands in the command palette (#7299) 2020-08-18 19:32:17 +00:00
IDirectKeyListener.idl Pass the scancode in our tunneled DirectKey event (#7298) 2020-08-14 23:44:39 +00:00
IDynamicProfileGenerator.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
init.cpp Introduce a WinRT utils library and "checked resources" (#3350) 2019-11-01 15:47:05 -07:00
JsonUtils.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
KeyChordSerialization.cpp Add menu (also known as "app") as a bindable key (#7328) 2020-08-18 17:21:50 +00:00
KeyChordSerialization.h Move ICore/ControlSettings to TerminalControl project (#7167) 2020-08-07 14:46:52 +00:00
LegacyProfileGeneratorNamespaces.h Create Telnet connection type and default loopback profile for… (#3858) 2019-12-09 11:07:08 -08:00
MinMaxCloseControl.cpp Get rid of the padding above the tab row when maximized (#5881) 2020-05-21 22:26:37 +00:00
MinMaxCloseControl.h Propagate window style changes to the titlebar and minmax (#3025) 2019-10-02 10:27:07 -07:00
MinMaxCloseControl.idl Fix intellisense errors by moving TerminalApp projects around (#6897) 2020-08-20 22:44:37 +00:00
MinMaxCloseControl.xaml Animate Hover state change of CaptionButtons (#6303) 2020-06-02 18:50:18 +00:00
packages.config Update MUX to 2.5.0-prerelease.200609001 (#6819) 2020-07-07 23:29:30 +00:00
Pane.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
Pane.h Add a togglePaneZoom action for zooming a pane (#6989) 2020-08-07 16:11:44 -07:00
Pane.LayoutSizeNode.cpp Snap to character grid when resizing window (#3181) 2020-01-08 13:19:23 -08:00
pch.cpp Initial release of the Windows Terminal source code 2019-05-02 15:29:04 -07:00
pch.h Fix intellisense errors by moving TerminalApp projects around (#6897) 2020-08-20 22:44:37 +00:00
PowershellCoreProfileGenerator.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
PowershellCoreProfileGenerator.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
Profile.cpp Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
Profile.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
Profile.idl Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
SettingsTypes.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
ShortcutActionDispatch.cpp Provide global setting to use ATS for nextTab and prevTab (#7321) 2020-08-21 15:39:40 +00:00
ShortcutActionDispatch.h Provide global setting to use ATS for nextTab and prevTab (#7321) 2020-08-21 15:39:40 +00:00
ShortcutActionDispatch.idl Provide global setting to use ATS for nextTab and prevTab (#7321) 2020-08-21 15:39:40 +00:00
Tab.cpp Don't zoom when there's only one pane (#7273) 2020-08-13 19:17:58 +00:00
Tab.h Don't zoom when there's only one pane (#7273) 2020-08-13 19:17:58 +00:00
Tab.idl Advanced Tab Switcher (#6732) 2020-08-11 14:03:12 +00:00
TabRowControl.cpp Upgrade to Microsoft.UI.Xaml 2.2 (#3027) 2019-10-14 22:41:43 -07:00
TabRowControl.h Upgrade to Microsoft.UI.Xaml 2.2 (#3027) 2019-10-14 22:41:43 -07:00
TabRowControl.idl Upgrade to Microsoft.UI.Xaml 2.2 (#3027) 2019-10-14 22:41:43 -07:00
TabRowControl.xaml Update colors of our custom NewTab button to match MUX's TabView (#6812) 2020-07-07 13:40:01 -07:00
TelnetGenerator.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
TerminalAppLib.vcxproj Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
TerminalAppLib.vcxproj.filters Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
TerminalPage.cpp OSC 8 support for conhost and terminal (#7251) 2020-09-03 13:52:39 -04:00
TerminalPage.h OSC 8 support for conhost and terminal (#7251) 2020-09-03 13:52:39 -04:00
TerminalPage.idl Add support for "Always on top" mode (#6903) 2020-07-14 21:02:18 +00:00
TerminalPage.xaml Add settings to warn about large or multiline pastes (#6631) 2020-07-01 19:43:28 +00:00
TerminalSettings.cpp Move TerminalSettings object to TermApp Project (#7163) 2020-08-03 22:54:22 +00:00
TerminalSettings.h Add support for per-profile tab colors (#7162) 2020-08-07 16:07:42 -07:00
TerminalSettings.idl Move ICore/ControlSettings to TerminalControl project (#7167) 2020-08-07 14:46:52 +00:00
TerminalSettingsSerializationHelpers.h Make GlobalAppSettings a WinRT object (#7349) 2020-08-28 03:49:16 +00:00
TerminalWarnings.h Add support for iterable, nested commands (#6856) 2020-08-13 21:22:46 +00:00
TitlebarControl.cpp Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
TitlebarControl.h Add support for setting a tab's color at runtime w/ context menu (#3789) 2020-05-04 20:57:12 +00:00
TitlebarControl.idl Upgrade to Microsoft.UI.Xaml 2.2 (#3027) 2019-10-14 22:41:43 -07:00
TitlebarControl.xaml Upgrade to Microsoft.UI.Xaml 2.2 (#3027) 2019-10-14 22:41:43 -07:00
userDefaults.json Add copyFormatting setting to all settings json files (#5404) 2020-04-20 23:49:12 +00:00
Utils.cpp Fixed #3799: Introduce sendInput command (#7249) 2020-08-12 13:46:53 +00:00
Utils.h Fixed #3799: Introduce sendInput command (#7249) 2020-08-12 13:46:53 +00:00
WslDistroGenerator.cpp Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00
WslDistroGenerator.h Make Profile a WinRT object (#7283) 2020-08-28 01:09:22 +00:00