Skip to content

Commit 10de56c

Browse files
authored
Feature: Added an option to hide 'Open in Terminal' from the context menu (#17349)
1 parent f8b3725 commit 10de56c

File tree

10 files changed

+57
-11
lines changed

10 files changed

+57
-11
lines changed

src/Files.App/Data/Contracts/IGeneralSettingsService.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,11 @@ public interface IGeneralSettingsService : IBaseSettingsService, INotifyProperty
215215
/// </summary>
216216
bool ShowOpenInNewPane { get; set; }
217217

218+
/// <summary>
219+
/// Gets or sets a value indicating whether or not to show the option to open folders in Windows Terminal.
220+
/// </summary>
221+
bool ShowOpenTerminal { get; set; }
222+
218223
/// <summary>
219224
/// Gets or sets a value indicating whether or not to show the option to copy an items path.
220225
/// </summary>

src/Files.App/Data/Factories/ContentPageContextFlyoutFactory.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -612,14 +612,16 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(
612612
new ContextMenuFlyoutItemViewModel()
613613
{
614614
ItemType = ContextMenuFlyoutItemType.Separator,
615-
ShowItem = (!itemsSelected && Commands.OpenTerminal.IsExecutable) ||
616-
(areAllItemsFolders && Commands.OpenTerminal.IsExecutable) ||
615+
ShowItem = (!itemsSelected && Commands.OpenTerminal.IsExecutable && UserSettingsService.GeneralSettingsService.ShowOpenTerminal) ||
616+
(areAllItemsFolders && Commands.OpenTerminal.IsExecutable && UserSettingsService.GeneralSettingsService.ShowOpenTerminal) ||
617617
Commands.OpenStorageSense.IsExecutable ||
618618
Commands.FormatDrive.IsExecutable
619619
},
620620
new ContextMenuFlyoutItemViewModelBuilder(Commands.OpenTerminal)
621621
{
622-
IsVisible = (!itemsSelected && Commands.OpenTerminal.IsExecutable) || (areAllItemsFolders && Commands.OpenTerminal.IsExecutable)
622+
IsVisible = (!itemsSelected || areAllItemsFolders) &&
623+
Commands.OpenTerminal.IsExecutable &&
624+
UserSettingsService.GeneralSettingsService.ShowOpenTerminal
623625
}.Build(),
624626
new ContextMenuFlyoutItemViewModelBuilder(Commands.OpenStorageSense).Build(),
625627
new ContextMenuFlyoutItemViewModelBuilder(Commands.FormatDrive).Build(),

src/Files.App/Services/Settings/GeneralSettingsService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,12 @@ public bool ShowOpenInNewPane
281281
set => Set(value);
282282
}
283283

284+
public bool ShowOpenTerminal
285+
{
286+
get => Get(true);
287+
set => Set(value);
288+
}
289+
284290
public bool ShowCopyPath
285291
{
286292
get => Get(true);

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4273,4 +4273,7 @@
42734273
<data name="Filename" xml:space="preserve">
42744274
<value>Filename</value>
42754275
</data>
4276+
<data name="ShowOpenTerminal" xml:space="preserve">
4277+
<value>Show option to open folders in Windows Terminal</value>
4278+
</data>
42764279
</root>

src/Files.App/ViewModels/Settings/GeneralViewModel.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,19 @@ public bool ShowOpenInNewWindow
521521
}
522522
}
523523

524+
public bool ShowOpenTerminal
525+
{
526+
get => UserSettingsService.GeneralSettingsService.ShowOpenTerminal;
527+
set
528+
{
529+
if (value != UserSettingsService.GeneralSettingsService.ShowOpenTerminal)
530+
{
531+
UserSettingsService.GeneralSettingsService.ShowOpenTerminal = value;
532+
OnPropertyChanged();
533+
}
534+
}
535+
}
536+
524537
private string selectedShellPaneArrangementType;
525538
public string SelectedShellPaneArrangementType
526539
{

src/Files.App/ViewModels/UserControls/SidebarViewModel.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,11 +1043,14 @@ private List<ContextMenuFlyoutItemViewModel> GetLocationItemMenuItems(INavigatio
10431043
new ContextMenuFlyoutItemViewModel()
10441044
{
10451045
ItemType = ContextMenuFlyoutItemType.Separator,
1046-
ShowItem = Commands.OpenTerminalFromSidebar.IsExecutable ||
1046+
ShowItem = (UserSettingsService.GeneralSettingsService.ShowOpenTerminal && Commands.OpenTerminalFromSidebar.IsExecutable) ||
10471047
Commands.OpenStorageSenseFromSidebar.IsExecutable ||
10481048
Commands.FormatDriveFromSidebar.IsExecutable
10491049
},
1050-
new ContextMenuFlyoutItemViewModelBuilder(Commands.OpenTerminalFromSidebar).Build(),
1050+
new ContextMenuFlyoutItemViewModelBuilder(Commands.OpenTerminalFromSidebar)
1051+
{
1052+
IsVisible = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && Commands.OpenTerminalFromSidebar.IsExecutable
1053+
}.Build(),
10511054
new ContextMenuFlyoutItemViewModelBuilder(Commands.OpenStorageSenseFromSidebar).Build(),
10521055
new ContextMenuFlyoutItemViewModelBuilder(Commands.FormatDriveFromSidebar).Build(),
10531056
new ContextMenuFlyoutItemViewModel()

src/Files.App/ViewModels/UserControls/Widgets/DrivesWidgetViewModel.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,14 @@ public override List<ContextMenuFlyoutItemViewModel> GetItemMenuItems(WidgetCard
153153
new ContextMenuFlyoutItemViewModel()
154154
{
155155
ItemType = ContextMenuFlyoutItemType.Separator,
156-
ShowItem = CommandManager.OpenTerminalFromHome.IsExecutable ||
156+
ShowItem = (UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable) ||
157157
CommandManager.OpenStorageSenseFromHome.IsExecutable ||
158158
CommandManager.FormatDriveFromHome.IsExecutable
159159
},
160-
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome).Build(),
160+
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome)
161+
{
162+
IsVisible = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable
163+
}.Build(),
161164
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenStorageSenseFromHome).Build(),
162165
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.FormatDriveFromHome).Build(),
163166
new()

src/Files.App/ViewModels/UserControls/Widgets/FileTagsWidgetViewModel.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,12 @@ public override List<ContextMenuFlyoutItemViewModel> GetItemMenuItems(WidgetCard
154154
new ContextMenuFlyoutItemViewModel()
155155
{
156156
ItemType = ContextMenuFlyoutItemType.Separator,
157-
ShowItem = CommandManager.OpenTerminalFromHome.IsExecutable
157+
ShowItem = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable,
158158
},
159-
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome).Build(),
159+
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome)
160+
{
161+
IsVisible = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable
162+
}.Build(),
160163
new()
161164
{
162165
ItemType = ContextMenuFlyoutItemType.Separator,

src/Files.App/ViewModels/UserControls/Widgets/QuickAccessWidgetViewModel.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,12 @@ public override List<ContextMenuFlyoutItemViewModel> GetItemMenuItems(WidgetCard
136136
new ContextMenuFlyoutItemViewModel()
137137
{
138138
ItemType = ContextMenuFlyoutItemType.Separator,
139-
ShowItem = CommandManager.OpenTerminalFromHome.IsExecutable
139+
ShowItem = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable
140140
},
141-
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome).Build(),
141+
new ContextMenuFlyoutItemViewModelBuilder(CommandManager.OpenTerminalFromHome)
142+
{
143+
IsVisible = UserSettingsService.GeneralSettingsService.ShowOpenTerminal && CommandManager.OpenTerminalFromHome.IsExecutable
144+
}.Build(),
142145
new()
143146
{
144147
ItemType = ContextMenuFlyoutItemType.Separator,

src/Files.App/Views/Settings/GeneralPage.xaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,11 @@
300300
<ToggleSwitch AutomationProperties.Name="{helpers:ResourceString Name=ShowSendToMenu}" IsOn="{x:Bind ViewModel.ShowSendToMenu, Mode=TwoWay}" />
301301
</wctcontrols:SettingsCard>
302302

303+
<!-- Open in Windows Terminal -->
304+
<wctcontrols:SettingsCard Header="{helpers:ResourceString Name=ShowOpenTerminal}">
305+
<ToggleSwitch AutomationProperties.Name="{helpers:ResourceString Name=ShowOpenTerminal}" IsOn="{x:Bind ViewModel.ShowOpenTerminal, Mode=TwoWay}" />
306+
</wctcontrols:SettingsCard>
307+
303308
<!-- Edit tags -->
304309
<wctcontrols:SettingsCard Header="{helpers:ResourceString Name=ShowEditTagsMenu}">
305310
<ToggleSwitch AutomationProperties.Name="{helpers:ResourceString Name=ShowEditTagsMenu}" IsOn="{x:Bind ViewModel.ShowEditTagsMenu, Mode=TwoWay}" />

0 commit comments

Comments
 (0)