mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-24 04:00:02 +01:00
<!-- 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 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #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 <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed Installer built, and every command works as expected, Now use sparse app deployment, so we don't need an extra msix --------- Co-authored-by: kaitao-ms <kaitao1105@gmail.com>
156 lines
5.2 KiB
C#
156 lines
5.2 KiB
C#
// 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.Diagnostics;
|
|
using System.IO;
|
|
using ManagedCommon;
|
|
|
|
namespace Common.UI
|
|
{
|
|
public static class SettingsDeepLink
|
|
{
|
|
public enum SettingsWindow
|
|
{
|
|
Dashboard = 0,
|
|
Overview,
|
|
AlwaysOnTop,
|
|
Awake,
|
|
ColorPicker,
|
|
CmdNotFound,
|
|
LightSwitch,
|
|
FancyZones,
|
|
FileLocksmith,
|
|
Run,
|
|
ImageResizer,
|
|
KBM,
|
|
MouseUtils,
|
|
MouseWithoutBorders,
|
|
Peek,
|
|
PowerAccent,
|
|
PowerLauncher,
|
|
PowerPreview,
|
|
PowerRename,
|
|
FileExplorer,
|
|
ShortcutGuide,
|
|
Hosts,
|
|
MeasureTool,
|
|
PowerOCR,
|
|
Workspaces,
|
|
RegistryPreview,
|
|
CropAndLock,
|
|
EnvironmentVariables,
|
|
AdvancedPaste,
|
|
NewPlus,
|
|
CmdPal,
|
|
ZoomIt,
|
|
}
|
|
|
|
private static string SettingsWindowNameToString(SettingsWindow value)
|
|
{
|
|
switch (value)
|
|
{
|
|
case SettingsWindow.Dashboard:
|
|
return "Dashboard";
|
|
case SettingsWindow.Overview:
|
|
return "Overview";
|
|
case SettingsWindow.AlwaysOnTop:
|
|
return "AlwaysOnTop";
|
|
case SettingsWindow.Awake:
|
|
return "Awake";
|
|
case SettingsWindow.ColorPicker:
|
|
return "ColorPicker";
|
|
case SettingsWindow.CmdNotFound:
|
|
return "CmdNotFound";
|
|
case SettingsWindow.LightSwitch:
|
|
return "LightSwitch";
|
|
case SettingsWindow.FancyZones:
|
|
return "FancyZones";
|
|
case SettingsWindow.FileLocksmith:
|
|
return "FileLocksmith";
|
|
case SettingsWindow.Run:
|
|
return "Run";
|
|
case SettingsWindow.ImageResizer:
|
|
return "ImageResizer";
|
|
case SettingsWindow.KBM:
|
|
return "KBM";
|
|
case SettingsWindow.MouseUtils:
|
|
return "MouseUtils";
|
|
case SettingsWindow.MouseWithoutBorders:
|
|
return "MouseWithoutBorders";
|
|
case SettingsWindow.Peek:
|
|
return "Peek";
|
|
case SettingsWindow.PowerAccent:
|
|
return "PowerAccent";
|
|
case SettingsWindow.PowerLauncher:
|
|
return "PowerLauncher";
|
|
case SettingsWindow.PowerPreview:
|
|
return "PowerPreview";
|
|
case SettingsWindow.PowerRename:
|
|
return "PowerRename";
|
|
case SettingsWindow.FileExplorer:
|
|
return "FileExplorer";
|
|
case SettingsWindow.ShortcutGuide:
|
|
return "ShortcutGuide";
|
|
case SettingsWindow.Hosts:
|
|
return "Hosts";
|
|
case SettingsWindow.MeasureTool:
|
|
return "MeasureTool";
|
|
case SettingsWindow.PowerOCR:
|
|
return "PowerOcr";
|
|
case SettingsWindow.Workspaces:
|
|
return "Workspaces";
|
|
case SettingsWindow.RegistryPreview:
|
|
return "RegistryPreview";
|
|
case SettingsWindow.CropAndLock:
|
|
return "CropAndLock";
|
|
case SettingsWindow.EnvironmentVariables:
|
|
return "EnvironmentVariables";
|
|
case SettingsWindow.AdvancedPaste:
|
|
return "AdvancedPaste";
|
|
case SettingsWindow.NewPlus:
|
|
return "NewPlus";
|
|
case SettingsWindow.CmdPal:
|
|
return "CmdPal";
|
|
case SettingsWindow.ZoomIt:
|
|
return "ZoomIt";
|
|
default:
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
|
|
// What about debug build? Should also consider debug build, maybe tray window message?
|
|
public static void OpenSettings(SettingsWindow window)
|
|
{
|
|
try
|
|
{
|
|
var exePath = Path.Combine(
|
|
PowerToysPathResolver.GetPowerToysInstallPath(),
|
|
"PowerToys.exe");
|
|
|
|
if (exePath == null || !File.Exists(exePath))
|
|
{
|
|
Logger.LogError($"Failed to find powertoys exe path, {exePath}");
|
|
return;
|
|
}
|
|
|
|
var args = "--open-settings=" + SettingsWindowNameToString(window);
|
|
|
|
Process.Start(new ProcessStartInfo
|
|
{
|
|
FileName = exePath,
|
|
Arguments = args,
|
|
UseShellExecute = false,
|
|
});
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.LogError(ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|