forked from microsoft/PowerToys
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PT Run] Windows Terminal Plugin (microsoft#13367)
* run windows terminal plugin * fixes
- Loading branch information
1 parent
7daf35d
commit cf2ec69
Showing
23 changed files
with
1,118 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...WindowsTerminal.UnitTests/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>netcoreapp3.1</TargetFramework> | ||
<Platforms>x64</Platforms> | ||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors> | ||
<IsPackable>false</IsPackable> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" /> | ||
<PackageReference Include="MSTest.TestAdapter" Version="2.2.5" /> | ||
<PackageReference Include="MSTest.TestFramework" Version="2.2.5" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<Compile Include="..\..\..\..\codeAnalysis\GlobalSuppressions.cs"> | ||
<Link>GlobalSuppressions.cs</Link> | ||
</Compile> | ||
<AdditionalFiles Include="..\..\..\..\codeAnalysis\StyleCop.json"> | ||
<Link>StyleCop.json</Link> | ||
</AdditionalFiles> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0"> | ||
<PrivateAssets>all</PrivateAssets> | ||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
</PackageReference> | ||
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118"> | ||
<PrivateAssets>all</PrivateAssets> | ||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||
</PackageReference> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\Microsoft.PowerToys.Run.Plugin.WindowsTerminal\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.csproj" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<None Update="settings.json"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
</None> | ||
</ItemGroup> | ||
|
||
</Project> |
61 changes: 61 additions & 0 deletions
61
...r/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests/TerminalHelperTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
// Copyright (c) Microsoft Corporation | ||
// The Microsoft Corporation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System; | ||
using System.IO; | ||
using System.Text.Json; | ||
using Microsoft.PowerToys.Run.Plugin.WindowsTerminal.Helpers; | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
|
||
namespace Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests | ||
{ | ||
[TestClass] | ||
public class TerminalHelperTests | ||
{ | ||
[DataTestMethod] | ||
[DataRow("Windows PowerShell", true, "--window 0 nt --profile \"Windows PowerShell\"")] | ||
[DataRow("Windows PowerShell", false, "--profile \"Windows PowerShell\"")] | ||
public void ArgumentsTest(string profile, bool openNewTab, string expectedArguments) | ||
{ | ||
var arguments = TerminalHelper.GetArguments(profile, openNewTab); | ||
Assert.AreEqual(arguments, expectedArguments); | ||
} | ||
|
||
[TestMethod] | ||
public void ParseSettingsTest() | ||
{ | ||
var terminal = new TerminalPackage(string.Empty, new Version(), string.Empty, string.Empty, string.Empty); | ||
|
||
var settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.json"); | ||
var settings = File.ReadAllText(settingsPath); | ||
var profiles = TerminalHelper.ParseSettings(terminal, settings); | ||
|
||
Assert.AreEqual(profiles.Count, 4); | ||
} | ||
|
||
[DataTestMethod] | ||
[DataRow( | ||
@"{""guid"":""{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"",""name"":""Windows PowerShell"",""commandline"":""powershell.exe"",""hidden"":true}", | ||
"61c54bbd-c2c6-5271-96e7-009a87ff44bf", | ||
"Windows PowerShell", | ||
true)] | ||
[DataRow( | ||
@"{""name"":""Windows PowerShell"",""commandline"":""powershell.exe"",""hidden"":false}", | ||
null, | ||
"Windows PowerShell", | ||
false)] | ||
public void ParseProfilesTest(string json, string identifier, string name, bool hidden) | ||
{ | ||
var profileElement = JsonDocument.Parse(json).RootElement; | ||
var terminal = new TerminalPackage(string.Empty, new Version(), string.Empty, string.Empty, string.Empty); | ||
var profile = TerminalHelper.ParseProfile(terminal, profileElement); | ||
|
||
var expectedIdentifier = identifier != null ? new Guid(identifier) : null as Guid?; | ||
Assert.AreEqual(profile.Terminal, terminal); | ||
Assert.AreEqual(profile.Identifier, expectedIdentifier); | ||
Assert.AreEqual(profile.Name, name); | ||
Assert.AreEqual(profile.Hidden, hidden); | ||
} | ||
} | ||
} |
85 changes: 85 additions & 0 deletions
85
...s/launcher/Plugins/Microsoft.PowerToys.Run.Plugin.WindowsTerminal.UnitTests/settings.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
// This file was initially generated by Windows Terminal Preview 1.11.2421.0 | ||
// It should still be usable in newer versions, but newer versions might have additional | ||
// settings, help text, or changes that you will not see unless you clear this file | ||
// and let us generate a new one for you. | ||
|
||
// To view the default settings, hold "alt" while clicking on the "Settings" button. | ||
// For documentation on these settings, see: https://aka.ms/terminal-documentation | ||
{ | ||
"$schema": "https://aka.ms/terminal-profiles-schema", | ||
|
||
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", | ||
|
||
// You can add more global application settings here. | ||
// To learn more about global settings, visit https://aka.ms/terminal-global-settings | ||
|
||
// If enabled, selections are automatically copied to your clipboard. | ||
"copyOnSelect": false, | ||
|
||
// If enabled, formatted data is also copied to your clipboard | ||
"copyFormatting": false, | ||
|
||
// A profile specifies a command to execute paired with information about how it should look and feel. | ||
// Each one of them will appear in the 'New Tab' dropdown, | ||
// and can be invoked from the commandline with `wt.exe -p xxx` | ||
// To learn more about profiles, visit https://aka.ms/terminal-profile-settings | ||
"profiles": | ||
{ | ||
"defaults": | ||
{ | ||
// Put settings here that you want to apply to all profiles. | ||
}, | ||
"list": | ||
[ | ||
{ | ||
// Make changes here to the powershell.exe profile. | ||
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", | ||
"name": "Windows PowerShell", | ||
"commandline": "powershell.exe", | ||
"hidden": false | ||
}, | ||
{ | ||
// Make changes here to the cmd.exe profile. | ||
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", | ||
"name": "Command Prompt", | ||
"commandline": "cmd.exe", | ||
"hidden": false | ||
}, | ||
{ | ||
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}", | ||
"name": "Azure Cloud Shell", | ||
"source": "Windows.Terminal.Azure" | ||
}, | ||
{ | ||
"guid": "{2ece5bfe-50ed-5f3a-ab87-5cd4baafed2b}", | ||
"name": "Git Bash", | ||
"source": "Git" | ||
} | ||
] | ||
}, | ||
|
||
// Add custom color schemes to this array. | ||
// To learn more about color schemes, visit https://aka.ms/terminal-color-schemes | ||
"schemes": [], | ||
|
||
// Add custom actions and keybindings to this array. | ||
// To unbind a key combination from your defaults.json, set the command to "unbound". | ||
// To learn more about actions and keybindings, visit https://aka.ms/terminal-keybindings | ||
"actions": | ||
[ | ||
// Copy and paste are bound to Ctrl+Shift+C and Ctrl+Shift+V in your defaults.json. | ||
// These two lines additionally bind them to Ctrl+C and Ctrl+V. | ||
// To learn more about selection, visit https://aka.ms/terminal-selection | ||
{ "command": {"action": "copy", "singleLine": false }, "keys": "ctrl+c" }, | ||
{ "command": "paste", "keys": "ctrl+v" }, | ||
|
||
// Press Ctrl+Shift+F to open the search box | ||
{ "command": "find", "keys": "ctrl+shift+f" }, | ||
|
||
// Press Alt+Shift+D to open a new pane. | ||
// - "split": "auto" makes this pane open in the direction that provides the most surface area. | ||
// - "splitMode": "duplicate" makes the new pane use the focused pane's profile. | ||
// To learn more about panes, visit https://aka.ms/terminal-panes | ||
{ "command": { "action": "splitPane", "split": "auto", "splitMode": "duplicate" }, "keys": "alt+shift+d" } | ||
] | ||
} |
25 changes: 25 additions & 0 deletions
25
...ns/Microsoft.PowerToys.Run.Plugin.WindowsTerminal/Helpers/ApplicationActivationManager.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// Copyright (c) Microsoft Corporation | ||
// The Microsoft Corporation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System; | ||
using System.Runtime.CompilerServices; | ||
using System.Runtime.InteropServices; | ||
|
||
namespace Microsoft.PowerToys.Run.Plugin.WindowsTerminal.Helpers | ||
{ | ||
// Application Activation Manager Class | ||
[ComImport] | ||
[Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")] | ||
public class ApplicationActivationManager : IApplicationActivationManager | ||
{ | ||
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)/*, PreserveSig*/] | ||
public extern IntPtr ActivateApplication([In] string appUserModelId, [In] string arguments, [In] ActivateOptions options, [Out] out uint processId); | ||
|
||
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] | ||
public extern IntPtr ActivateForFile([In] string appUserModelId, [In] IntPtr /*IShellItemArray* */ itemArray, [In] string verb, [Out] out uint processId); | ||
|
||
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)] | ||
public extern IntPtr ActivateForProtocol([In] string appUserModelId, [In] IntPtr /* IShellItemArray* */itemArray, [Out] out uint processId); | ||
} | ||
} |
Oops, something went wrong.