65b22b9abb
This adds support for the `desktop` param to the `globalSummon` action. It accepts 3 values: * `toCurrent` (default): The window moves to the current desktop when it's summoned * `any`: We don't care what desktop the window is on. We'll go to the desktop the window is on when we summon it. * `onCurrent`: We'll only try to summon the MRU window on this desktop when summoning a window. * When combined with `name`, if there's a window matching `name`, we'll move it to this desktop. * If there's not a window on this desktop, and `name` is omitted, then we'll make a new window. `quakeMode` was also updated to use `toCurrent` behavior by default. ## References * Original thread: #653 * Spec: #9274 * megathread: #8888 ## PR Checklist * [x] Checks some boxes in #8888 * [x] closes https://github.com/microsoft/terminal/projects/5#card-59030845 * [x] I work here * [x] Tests added * [n/a] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments S/O to https://github.com/microsoft/PowerToys, who graciously let us use `VirtualDesktopUtils` for figuring out what desktop is the current desktop. Yea, that's all we needed that entire file for. No, there isn't an API for this (_surprised-pikachu.png_) ## Validation Steps Performed Played with this for a while, and it's amazing.
71 lines
2.5 KiB
Plaintext
71 lines
2.5 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
namespace Microsoft.Terminal.Remoting
|
|
{
|
|
|
|
runtimeclass CommandlineArgs
|
|
{
|
|
CommandlineArgs();
|
|
CommandlineArgs(String[] args, String cwd);
|
|
|
|
String[] Commandline { get; set; };
|
|
String CurrentDirectory();
|
|
};
|
|
|
|
runtimeclass RenameRequestArgs
|
|
{
|
|
RenameRequestArgs(String newName);
|
|
String NewName { get; };
|
|
Boolean Succeeded;
|
|
};
|
|
|
|
runtimeclass WindowActivatedArgs
|
|
{
|
|
WindowActivatedArgs(UInt64 peasantID, Guid desktopID, Windows.Foundation.DateTime activatedTime);
|
|
WindowActivatedArgs(UInt64 peasantID, UInt64 hwnd, Guid desktopID, Windows.Foundation.DateTime activatedTime);
|
|
UInt64 PeasantID { get; };
|
|
UInt64 Hwnd { get; };
|
|
Guid DesktopID { get; };
|
|
Windows.Foundation.DateTime ActivatedTime { get; };
|
|
};
|
|
|
|
[default_interface] runtimeclass SummonWindowBehavior {
|
|
SummonWindowBehavior();
|
|
Boolean MoveToCurrentDesktop;
|
|
// Other options:
|
|
// * CurrentMonitor
|
|
}
|
|
|
|
interface IPeasant
|
|
{
|
|
CommandlineArgs InitialArgs { get; };
|
|
|
|
void AssignID(UInt64 id);
|
|
UInt64 GetID();
|
|
UInt64 GetPID();
|
|
Boolean ExecuteCommandline(CommandlineArgs args);
|
|
void ActivateWindow(WindowActivatedArgs args);
|
|
WindowActivatedArgs GetLastActivatedArgs();
|
|
|
|
void DisplayWindowId(); // Tells us to display its own ID (which causes a DisplayWindowIdRequested to be raised)
|
|
|
|
String WindowName { get; };
|
|
void RequestIdentifyWindows(); // Tells us to raise a IdentifyWindowsRequested
|
|
void RequestRename(RenameRequestArgs args); // Tells us to raise a RenameRequested
|
|
void Summon(SummonWindowBehavior behavior);
|
|
|
|
event Windows.Foundation.TypedEventHandler<Object, WindowActivatedArgs> WindowActivated;
|
|
event Windows.Foundation.TypedEventHandler<Object, CommandlineArgs> ExecuteCommandlineRequested;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> IdentifyWindowsRequested;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> DisplayWindowIdRequested;
|
|
event Windows.Foundation.TypedEventHandler<Object, RenameRequestArgs> RenameRequested;
|
|
event Windows.Foundation.TypedEventHandler<Object, SummonWindowBehavior> SummonRequested;
|
|
};
|
|
|
|
[default_interface] runtimeclass Peasant : IPeasant
|
|
{
|
|
Peasant();
|
|
};
|
|
}
|