a0edb12cd6
A brief summary of the behavior of the tray icon: - There will only ever be one tray icon representing all windows. - Left-Click on a Tray Icon brings up the MRU window. - Right-Click on a Tray Icon brings up a Context Menu: ``` Focus Terminal ---------------- Windows --> Window ID 1 - <unnamed window> Named Window Named Window Again ``` - Focus Terminal will bring up the MRU window. - Clicking on any of the Window "names" in the submenu will summon the window. ## Settings Changes Two new global settings are introduced: `alwaysShowTrayIcon` and `minimizeToTray`. Here's a chart explaining the behavior with the two settings. | | `alwaysShowTrayIcon:true` | `alwaysShowTrayIcon:false` | |----------------------|------------------------------------------------------------------|------------------------------------------------------------------| | `minimizeToTray:true` | tray icon is always shown. minimize button will hide the window. | tray icon is always shown. minimize button will hide the window. | | `minimizeToTray:false` | tray icon is always shown. | tray icon is not shown ever. | Closes #5727 ## References [Spec for Minimize to Tray](https://github.com/microsoft/terminal/blob/main/doc/specs/%23653%20-%20Quake%20Mode/%23653%20-%20Quake%20Mode.md#minimize-to-tray) Docs PR - MicrosoftDocs/terminal#352 #10448 - My list of TODOs
85 lines
2.9 KiB
Plaintext
85 lines
2.9 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; };
|
|
};
|
|
|
|
|
|
enum MonitorBehavior
|
|
{
|
|
InPlace,
|
|
ToCurrent,
|
|
ToMouse,
|
|
};
|
|
|
|
|
|
[default_interface] runtimeclass SummonWindowBehavior {
|
|
SummonWindowBehavior();
|
|
Boolean MoveToCurrentDesktop;
|
|
Boolean ToggleVisibility;
|
|
UInt32 DropdownDuration;
|
|
MonitorBehavior ToMonitor;
|
|
}
|
|
|
|
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);
|
|
void RequestShowTrayIcon();
|
|
void RequestHideTrayIcon();
|
|
|
|
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;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> ShowTrayIconRequested;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> HideTrayIconRequested;
|
|
};
|
|
|
|
[default_interface] runtimeclass Peasant : IPeasant
|
|
{
|
|
Peasant();
|
|
};
|
|
}
|