private static System.Collections.Generic.IEnumerable <Cmd> GetOpenUrlCommands(string url) { string additionalFlags = ""; if (System.Environment.OSVersion.Platform == System.PlatformID.Unix) { try { if (Syscalls.getuid() == 0 || Syscalls.geteuid() == 0) { additionalFlags += " --no-sandbox "; } } catch { } } // End if (System.Environment.OSVersion.Platform == System.PlatformID.Unix) if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows)) { // https://brockallen.com/2016/09/24/process-start-for-urls-on-net-core/ // hack because of this: https://github.com/dotnet/corefx/issues/10361 yield return(new Cmd() { FileName = "cmd", Arguments = $"/c start {url.Replace("&", "^&")}", CreateNoWindow = true }); yield return(new Cmd() { FileName = "msedge.exe", Arguments = url }); } yield return(new Cmd() { FileName = "google-chrome", Arguments = additionalFlags + url }); yield return(new Cmd() { FileName = "chromium-browser", Arguments = additionalFlags + url }); yield return(new Cmd() { FileName = "chrome", Arguments = additionalFlags + url }); yield return(new Cmd() { FileName = "chromium", Arguments = additionalFlags + url }); yield return(new Cmd() { FileName = "firefox", Arguments = url }); if (System.Environment.OSVersion.Platform == System.PlatformID.Unix) { yield return(new Cmd() { FileName = "xdg-open", Arguments = url }); yield return(new Cmd() { FileName = "openvt", Arguments = url }); } // End if (System.Environment.OSVersion.Platform == System.PlatformID.Unix) yield return(new Cmd() { FileName = "open", Arguments = url }); yield return(new Cmd() { FileName = "start", Arguments = url }); } // End Function GetCommands