This PR is a resurrection of #8414. @Hegunumo has apparently deleted their account, but the contribution was still valuable. I'm just here to get it across the finish line. This PR adds new global setting `centerOnLaunch`. When set to `true`, the Terminal window will be centered on the display it opens on. So the interactions are like: * `initialPos: x,y`, `centered: true`, `launchMode: default` center on the monitor that x,y is on * `initialPos: x,y`, `centered: true`, `launchMode: maximized` maximized on the monitor that x,y is on (centered adds nothing) * `initialPos: <omitted>`, `centered: true`, `launchMode: default` center on the default monitor * `initialPos: <omitted>`, `centered: true`, `launchMode: focus` center, focus mode on the default monitor * `initialPos: <omitted>`, `centered: true`, `launchMode: maximized` maximized on the default monitor (centered adds nothing) ## Validation Steps Performed I've played with it on multiple different monitors, and it seems to work on all of them. Closes #8414 (original PR) Closes #7722 Co-authored-by: Kiminori Kaburagi <yukawa_hidenori@icloud.com>
77 lines
3.1 KiB
Plaintext
77 lines
3.1 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
import "TerminalPage.idl";
|
|
import "ShortcutActionDispatch.idl";
|
|
import "IDirectKeyListener.idl";
|
|
|
|
namespace TerminalApp
|
|
{
|
|
struct InitialPosition
|
|
{
|
|
Int64 X;
|
|
Int64 Y;
|
|
};
|
|
|
|
[default_interface] runtimeclass AppLogic : IDirectKeyListener, IDialogPresenter
|
|
{
|
|
AppLogic();
|
|
|
|
// For your own sanity, it's better to do setup outside the ctor.
|
|
// If you do any setup in the ctor that ends up throwing an exception,
|
|
// then it might look like TermApp just failed to activate, which will
|
|
// cause you to chase down the rabbit hole of "why is TermApp not
|
|
// registered?" when it definitely is.
|
|
void Create();
|
|
|
|
Boolean IsUwp();
|
|
void RunAsUwp();
|
|
Boolean IsElevated();
|
|
|
|
Int32 SetStartupCommandline(String[] commands);
|
|
Int32 ExecuteCommandline(String[] commands, String cwd);
|
|
String ParseCommandlineMessage { get; };
|
|
Boolean ShouldExitEarly { get; };
|
|
|
|
void LoadSettings();
|
|
Windows.UI.Xaml.UIElement GetRoot();
|
|
|
|
String Title { get; };
|
|
|
|
Boolean FocusMode { get; };
|
|
Boolean Fullscreen { get; };
|
|
Boolean AlwaysOnTop { get; };
|
|
|
|
Windows.Foundation.Size GetLaunchDimensions(UInt32 dpi);
|
|
Boolean CenterOnLaunch { get; };
|
|
|
|
InitialPosition GetInitialPosition(Int64 defaultInitialX, Int64 defaultInitialY);
|
|
Windows.UI.Xaml.ElementTheme GetRequestedTheme();
|
|
Microsoft.Terminal.Settings.Model.LaunchMode GetLaunchMode();
|
|
Boolean GetShowTabsInTitlebar();
|
|
Boolean GetInitialAlwaysOnTop();
|
|
Single CalcSnappedDimension(Boolean widthOrHeight, Single dimension);
|
|
void TitlebarClicked();
|
|
void WindowCloseButtonClicked();
|
|
|
|
UInt64 GetLastActiveControlTaskbarState();
|
|
UInt64 GetLastActiveControlTaskbarProgress();
|
|
|
|
Int32 FindTargetWindow(String[] args);
|
|
|
|
// See IDialogPresenter and TerminalPage's DialogPresenter for more
|
|
// information.
|
|
Windows.Foundation.IAsyncOperation<Windows.UI.Xaml.Controls.ContentDialogResult> ShowDialog(Windows.UI.Xaml.Controls.ContentDialog dialog);
|
|
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.UIElement> SetTitleBarContent;
|
|
event Windows.Foundation.TypedEventHandler<Object, String> TitleChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, LastTabClosedEventArgs> LastTabClosed;
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.ElementTheme> RequestedThemeChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> FocusModeChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> FullscreenChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> AlwaysOnTopChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> RaiseVisualBell;
|
|
event Windows.Foundation.TypedEventHandler<Object, Object> SetTaskbarProgress;
|
|
}
|
|
}
|