diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
index 461ccd1970b..b0172cfd44d 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml
@@ -15,4 +15,6 @@
Please set your browser path:
Choose
Application(*.exe)|*.exe|All files|*.*
+
+ Prefer https over http
\ No newline at end of file
diff --git a/Plugins/Flow.Launcher.Plugin.Url/Main.cs b/Plugins/Flow.Launcher.Plugin.Url/Main.cs
index db7cecbdebb..ec02f8dd298 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Url/Main.cs
@@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
+using System.Windows.Controls;
namespace Flow.Launcher.Plugin.Url
{
- public class Main : IPlugin, IPluginI18n
+ public class Main : IPlugin, IPluginI18n, ISettingProvider
{
//based on https://gist.github.com/dperini/729294
private const string urlPattern = "^" +
@@ -58,13 +59,13 @@ public List Query(Query query)
Score = 8,
Action = _ =>
{
- if (!raw.ToLower().StartsWith("http"))
+ if (!raw.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !raw.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
{
- raw = "http://" + raw;
+ raw = GetHttpPreference() + "://" + raw;
}
try
{
- Context.API.OpenUrl(raw);
+ Context.API.OpenUrl(raw);
return true;
}
@@ -80,6 +81,11 @@ public List Query(Query query)
return new List(0);
}
+ private string GetHttpPreference()
+ {
+ return _settings.AlwaysOpenWithHttps ? "https" : "http";
+ }
+
public bool IsURL(string raw)
{
raw = raw.ToLower();
@@ -113,5 +119,10 @@ public string GetTranslatedPluginDescription()
{
return Localize.flowlauncher_plugin_url_plugin_description();
}
+
+ public Control CreateSettingPanel()
+ {
+ return new URLSettings(_settings);
+ }
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Url/Settings.cs b/Plugins/Flow.Launcher.Plugin.Url/Settings.cs
index a8d89e27f33..05e657d2e77 100644
--- a/Plugins/Flow.Launcher.Plugin.Url/Settings.cs
+++ b/Plugins/Flow.Launcher.Plugin.Url/Settings.cs
@@ -5,5 +5,6 @@ public class Settings
public string BrowserPath { get; set; }
public bool OpenInNewBrowserWindow { get; set; } = true;
+ public bool AlwaysOpenWithHttps { get; set; } = false;
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs
new file mode 100644
index 00000000000..6e229775274
--- /dev/null
+++ b/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs
@@ -0,0 +1,9 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Flow.Launcher.Plugin.Url;
+
+public class SettingsViewModel(Settings settings) : BaseModel
+{
+ public Settings Settings { get; } = settings;
+}
diff --git a/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml
new file mode 100644
index 00000000000..8394dba5ef0
--- /dev/null
+++ b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs
new file mode 100644
index 00000000000..e0e22fb7381
--- /dev/null
+++ b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs
@@ -0,0 +1,15 @@
+using System.Windows.Controls;
+
+namespace Flow.Launcher.Plugin.Url;
+
+public partial class URLSettings : UserControl
+{
+ private readonly SettingsViewModel _viewModel;
+
+ public URLSettings(Settings settings)
+ {
+ _viewModel = new SettingsViewModel(settings);
+ DataContext = _viewModel;
+ InitializeComponent();
+ }
+}