diff --git a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
index 986710ab8cb..69057820ef8 100644
--- a/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
+++ b/Flow.Launcher.Plugin/Interfaces/IPublicAPI.cs
@@ -228,12 +228,26 @@ public interface IPublicAPI
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.
+ /// 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.
+ /// 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 e3b7de31d5a..81f7a238965 100644
--- a/Flow.Launcher/PublicAPIInstance.cs
+++ b/Flow.Launcher/PublicAPIInstance.cs
@@ -209,9 +209,8 @@ public void OpenDirectory(string DirectoryPath, string FileName = null)
explorer.Start();
}
- public void OpenUri(string url, bool? inPrivate = null, bool isAppUri = false)
+ 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,38 +219,43 @@ public void OpenUri(string url, bool? inPrivate = null, bool isAppUri = false)
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);
}
-
- return;
}
-
- if (isAppUri)
+ else
{
Process.Start(new ProcessStartInfo()
{
- FileName = url,
+ FileName = uri.AbsoluteUri,
UseShellExecute = true
})?.Dispose();
return;
}
-
- throw new InvalidOperationException("URI scheme not specified or supported ");
}
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)
{
- OpenUri(appUri, isAppUri: true);
+ OpenUri(new Uri(appUri));
+ }
+
+ public void OpenAppUri(Uri appUri)
+ {
+ OpenUri(appUri);
}
public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;
diff --git a/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs b/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs
index 2ed41213008..b136e3b8b46 100644
--- a/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs
@@ -49,9 +49,10 @@ public async Task> QueryAsync(Query query, CancellationToken token)
var title = keyword;
string subtitle = _context.API.GetTranslation("flowlauncher_plugin_websearch_search") + " " + searchSource.Title;
- //Action Keyword match apear on top
+ // Action Keyword match apear on top
var score = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign ? scoreStandard : scoreStandard + 1;
+ // This populates the associated action keyword search entry
if (string.IsNullOrEmpty(keyword))
{
var result = new Result
@@ -61,6 +62,7 @@ public async Task> QueryAsync(Query query, CancellationToken token)
IcoPath = searchSource.IconPath,
Score = score
};
+
results.Add(result);
}
else
@@ -93,7 +95,6 @@ public async Task> QueryAsync(Query query, CancellationToken token)
if (token.IsCancellationRequested)
return null;
-
}
return results;