Files
Nitrox/Nitrox.Launcher/Models/Extensions/ProcessExExtensions.cs
2025-07-06 00:23:46 +02:00

34 lines
1.1 KiB
C#

using System.Diagnostics;
using System.Runtime.InteropServices;
using NitroxModel.Platforms.OS.Shared;
using NitroxModel.Platforms.OS.Windows;
namespace Nitrox.Launcher.Models.Extensions;
public static class ProcessExExtensions
{
public static void SetForegroundWindowAndRestore(this ProcessEx process)
{
if (Avalonia.Controls.Design.IsDesignMode)
{
return;
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
WindowsApi.BringProcessToFront(process.MainWindowHandle);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
// xdotool sends an XEvent to X11 window manager on Linux systems.
string command = $"xdotool windowactivate $(xdotool search --pid {process.Id} --onlyvisible --desktop '$(xdotool get_desktop)' --name 'nitrox launcher')";
using Process proc = Process.Start(new ProcessStartInfo
{
FileName = "sh",
ArgumentList = { "-c", command },
});
// TODO: Support "bring to front" on Wayland window manager.
}
}
}