Skip to content

Commit d0d41c6

Browse files
authored
Merge pull request #4402 from DavidGBrett/add-extra-args-to-browser-configuration
[FEATURE] Add Extra Args option to browser settings
2 parents 92f703b + faf8ab5 commit d0d41c6

File tree

5 files changed

+37
-10
lines changed

5 files changed

+37
-10
lines changed

Flow.Launcher.Infrastructure/UserSettings/CustomBrowserViewModel.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class CustomBrowserViewModel : BaseModel
1010
public string DisplayName => Name == "Default" ? Localize.defaultBrowser_default() : Name;
1111
public string Path { get; set; }
1212
public string PrivateArg { get; set; }
13+
public string ExtraArgs { get; set; }
1314
public bool EnablePrivate { get; set; }
1415
public bool OpenInTab { get; set; } = true;
1516
[JsonIgnore]
@@ -24,6 +25,7 @@ public CustomBrowserViewModel Copy()
2425
Path = Path,
2526
OpenInTab = OpenInTab,
2627
PrivateArg = PrivateArg,
28+
ExtraArgs = ExtraArgs,
2729
EnablePrivate = EnablePrivate,
2830
Editable = Editable
2931
};

Flow.Launcher.Plugin/SharedCommands/SearchWeb.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private static string GetDefaultBrowserPath()
3838
/// Opens search in a new browser. If no browser path is passed in then Chrome is used.
3939
/// Leave browser path blank to use Chrome.
4040
/// </summary>
41-
public static void OpenInBrowserWindow(this string url, string browserPath = "", bool inPrivate = false, string privateArg = "")
41+
public static void OpenInBrowserWindow(this string url, string browserPath = "", bool inPrivate = false, string privateArg = "", string extraArgs = "")
4242
{
4343
browserPath = string.IsNullOrEmpty(browserPath) ? GetDefaultBrowserPath() : browserPath;
4444

@@ -52,12 +52,15 @@ public static void OpenInBrowserWindow(this string url, string browserPath = "",
5252
var browser = string.IsNullOrEmpty(browserExecutableName) ? "chrome" : browserPath;
5353

5454
// Internet Explorer will open url in new browser window, and does not take the --new-window parameter
55-
var browserArguements = (browserExecutableName == "iexplore.exe" ? "" : "--new-window ") + (inPrivate ? $"{privateArg} " : "") + url;
55+
var browserArguments = (browserExecutableName == "iexplore.exe" ? "" : "--new-window ")
56+
+ (inPrivate ? $"{privateArg} " : "")
57+
+ (string.IsNullOrWhiteSpace(extraArgs) ? "" : $"{extraArgs} ")
58+
+ url;
5659

5760
var psi = new ProcessStartInfo
5861
{
5962
FileName = browser,
60-
Arguments = browserArguements,
63+
Arguments = browserArguments,
6164
UseShellExecute = true
6265
};
6366

@@ -86,7 +89,7 @@ public static void OpenInBrowserWindow(this string url, string browserPath = "",
8689
/// <summary>
8790
/// Opens search as a tab in the default browser chosen in Windows settings.
8891
/// </summary>
89-
public static void OpenInBrowserTab(this string url, string browserPath = "", bool inPrivate = false, string privateArg = "")
92+
public static void OpenInBrowserTab(this string url, string browserPath = "", bool inPrivate = false, string privateArg = "", string extraArgs = "")
9093
{
9194
browserPath = string.IsNullOrEmpty(browserPath) ? GetDefaultBrowserPath() : browserPath;
9295

@@ -99,7 +102,9 @@ public static void OpenInBrowserTab(this string url, string browserPath = "", bo
99102
if (!string.IsNullOrEmpty(browserPath))
100103
{
101104
psi.FileName = browserPath;
102-
psi.Arguments = (inPrivate ? $"{privateArg} " : "") + url;
105+
psi.Arguments = (inPrivate ? $"{privateArg} " : "")
106+
+ (string.IsNullOrWhiteSpace(extraArgs) ? "" : $"{extraArgs} ")
107+
+ url;
103108
}
104109
else
105110
{

Flow.Launcher/Languages/en.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,7 @@
525525
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
526526
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
527527
<system:String x:Key="defaultBrowser_parameter">Private Mode</system:String>
528+
<system:String x:Key="defaultBrowser_extraArgs">Extra Args</system:String>
528529
<system:String x:Key="defaultBrowser_default">Default</system:String>
529530
<system:String x:Key="defaultBrowser_new_profile">New Profile</system:String>
530531

Flow.Launcher/PublicAPIInstance.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -454,17 +454,20 @@ private void OpenUri(Uri uri, bool? inPrivate = null, bool forceBrowser = false)
454454
{
455455
if (browserInfo.OpenInTab)
456456
{
457-
uri.AbsoluteUri.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
457+
uri.AbsoluteUri.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg, browserInfo.ExtraArgs);
458458
}
459459
else
460460
{
461-
uri.AbsoluteUri.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
461+
uri.AbsoluteUri.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg, browserInfo.ExtraArgs);
462462
}
463463
}
464464
catch (Exception e)
465465
{
466466
var tabOrWindow = browserInfo.OpenInTab ? "tab" : "window";
467-
LogException(ClassName, $"Failed to open URL in browser {tabOrWindow}: {path}, {inPrivate ?? browserInfo.EnablePrivate}, {browserInfo.PrivateArg}", e);
467+
var includesExtraArgs = string.IsNullOrWhiteSpace(browserInfo.ExtraArgs)
468+
? ""
469+
: ", [including omitted Extra Args]";
470+
LogException(ClassName, $"Failed to open URL in browser {tabOrWindow}: {path}, {inPrivate ?? browserInfo.EnablePrivate}, {browserInfo.PrivateArg}{includesExtraArgs}", e);
468471
ShowMsgError(
469472
Localize.errorTitle(),
470473
Localize.browserOpenError()

Flow.Launcher/SelectBrowserWindow.xaml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
<RowDefinition />
127127
<RowDefinition />
128128
<RowDefinition />
129+
<RowDefinition />
129130
</Grid.RowDefinitions>
130131
<TextBlock
131132
Grid.Row="0"
@@ -198,15 +199,15 @@
198199
<TextBlock
199200
Grid.Row="3"
200201
Grid.Column="0"
201-
Margin="14 10 0 20"
202+
Margin="14 10 0 0"
202203
HorizontalAlignment="Left"
203204
VerticalAlignment="Center"
204205
FontSize="14"
205206
Text="{DynamicResource defaultBrowser_parameter}" />
206207
<StackPanel
207208
Grid.Row="3"
208209
Grid.Column="1"
209-
Margin="0 10 0 15"
210+
Margin="0 10 0 0"
210211
HorizontalAlignment="Stretch"
211212
VerticalAlignment="Center"
212213
Orientation="Horizontal">
@@ -230,6 +231,21 @@
230231
</CheckBox.Style>
231232
</CheckBox>
232233
</StackPanel>
234+
<TextBlock
235+
Grid.Row="4"
236+
Grid.Column="0"
237+
Margin="14 10 0 20"
238+
HorizontalAlignment="Left"
239+
VerticalAlignment="Center"
240+
FontSize="14"
241+
Text="{DynamicResource defaultBrowser_extraArgs}" />
242+
<TextBox
243+
Grid.Row="4"
244+
Grid.Column="1"
245+
Margin="10 10 0 15"
246+
HorizontalAlignment="Stretch"
247+
VerticalAlignment="Center"
248+
Text="{Binding ExtraArgs}" />
233249
</Grid>
234250
</StackPanel>
235251
</StackPanel>

0 commit comments

Comments
 (0)