diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
index 3bef9c136..69057820e 100644
--- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
@@ -228,13 +228,26 @@ namespace Flow.Launcher.Plugin
public void OpenDirectory(string DirectoryPath, string FileName = null);
///
- /// Opens the URL. The browser and mode used is based on what's configured in Flow's default browser settings.
- /// Also supports application URIs e.g. obsidian://search-query-example
+ /// Opens the URL with the given Uri object.
+ /// The browser and mode used is based on what's configured in Flow's default browser settings.
+ ///
+ public void OpenUrl(Uri url, bool? inPrivate = null);
+
+ ///
+ /// Opens the URL with the given string.
+ /// The browser and mode used is based on what's configured in Flow's default browser settings.
+ /// Non-C# plugins should use this method.
///
public void OpenUrl(string url, bool? inPrivate = null);
///
- /// Opens the application URI, e.g. obsidian://search-query-example
+ /// Opens the application URI with the given Uri object, e.g. obsidian://search-query-example
+ ///
+ public void OpenAppUri(Uri appUri);
+
+ ///
+ /// Opens the application URI with the given string, e.g. obsidian://search-query-example
+ /// Non-C# plugins should use this method
///
public void OpenAppUri(string appUri);
}
diff --git a/Flow.Launcher/PublicAPIInstance.cs b/Flow.Launcher/PublicAPIInstance.cs
index 894709b06..81f7a2389 100644
--- a/Flow.Launcher/PublicAPIInstance.cs
+++ b/Flow.Launcher/PublicAPIInstance.cs
@@ -209,9 +209,8 @@ namespace Flow.Launcher
explorer.Start();
}
- private void OpenUri(string url, bool? inPrivate = null)
+ private void OpenUri(Uri uri, bool? inPrivate = null)
{
- var uri = new Uri(url);
if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
{
var browserInfo = _settingsVM.Settings.CustomBrowser;
@@ -220,33 +219,43 @@ namespace Flow.Launcher
if (browserInfo.OpenInTab)
{
- url.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
+ uri.AbsoluteUri.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
}
else
{
- url.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
+ uri.AbsoluteUri.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
}
+ }
+ else
+ {
+ Process.Start(new ProcessStartInfo()
+ {
+ FileName = uri.AbsoluteUri,
+ UseShellExecute = true
+ })?.Dispose();
return;
}
-
- OpenAppUri(url);
}
public void OpenUrl(string url, bool? inPrivate = null)
+ {
+ OpenUri(new Uri(url), inPrivate);
+ }
+
+ public void OpenUrl(Uri url, bool? inPrivate = null)
{
OpenUri(url, inPrivate);
}
public void OpenAppUri(string appUri)
{
- Process.Start(new ProcessStartInfo()
- {
- FileName = appUri,
- UseShellExecute = true
- })?.Dispose();
+ OpenUri(new Uri(appUri));
+ }
- return;
+ public void OpenAppUri(Uri appUri)
+ {
+ OpenUri(appUri);
}
public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;