diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
index 8b312bc93d5..7ade49da646 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
@@ -5,6 +5,7 @@
Replace Win+R
Do not close Command Prompt after command execution
Always run as administrator
+ Use Windows Terminal
Run as different user
Shell
Allows to execute system commands from Flow Launcher. Commands should start with >
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
index bed46425dc1..c0412e09561 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
@@ -224,6 +224,20 @@ private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdmin
break;
}
+ case Shell.Pwsh:
+ {
+ info.FileName = "pwsh.exe";
+ if (_settings.LeaveShellOpen)
+ {
+ info.ArgumentList.Add("-NoExit");
+ }
+
+ info.ArgumentList.Add("-Command");
+ info.ArgumentList.Add(command);
+
+ break;
+ }
+
case Shell.RunCommand:
{
var parts = command.Split(new[] { ' ' }, 2);
@@ -252,6 +266,26 @@ private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdmin
throw new NotImplementedException();
}
+ if (_settings.UseWindowsTerminal)
+ {
+ ProcessStartInfo wtInfo = new();
+ wtInfo.FileName = "wt.exe";
+ wtInfo.ArgumentList.Add("-p");
+ wtInfo.ArgumentList.Add(_settings.WindowsTerminalProfile);
+
+ wtInfo.ArgumentList.Add(info.FileName);
+
+ foreach (var argument in info.ArgumentList)
+ {
+ wtInfo.ArgumentList.Add(argument);
+ }
+
+ wtInfo.WorkingDirectory = info.WorkingDirectory;
+ wtInfo.Verb = info.Verb;
+
+ info = wtInfo;
+ }
+
info.UseShellExecute = true;
_settings.AddCmdHistory(command);
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs
index a3cac1cb873..f2b7dba19ad 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs
@@ -5,18 +5,24 @@ namespace Flow.Launcher.Plugin.Shell
public class Settings
{
public Shell Shell { get; set; } = Shell.Cmd;
-
+
public bool ReplaceWinR { get; set; } = false;
-
+
public bool LeaveShellOpen { get; set; }
public bool RunAsAdministrator { get; set; } = true;
+ public bool UseWindowsTerminal { get; set; } = false;
+
+ public string WindowsTerminalProfile { get; set; }
+
public bool ShowOnlyMostUsedCMDs { get; set; }
public int ShowOnlyMostUsedCMDsNumber { get; set; }
- public Dictionary CommandHistory { get; set; } = new Dictionary();
+ public Dictionary CommandHistory
+ { get; set;
+ } = new Dictionary();
public void AddCmdHistory(string cmdName)
{
@@ -35,7 +41,7 @@ public enum Shell
{
Cmd = 0,
Powershell = 1,
- RunCommand = 2,
-
+ Pwsh = 2,
+ RunCommand = 3
}
}
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml
index 39fb21c59cb..00cf1dd49b4 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml
@@ -15,6 +15,7 @@
+
+
+
+
+
+
CMD
PowerShell
+ Pwsh
RunCommand
-
+
() { 5, 10, 20 };
+ ShowOnlyMostUsedCMDsNumber.ItemsSource =
+ new List() { 5, 10, 20 };
if (_settings.ShowOnlyMostUsedCMDsNumber == 0)
{
ShowOnlyMostUsedCMDsNumber.SelectedIndex = 0;
- _settings.ShowOnlyMostUsedCMDsNumber = (int)ShowOnlyMostUsedCMDsNumber.SelectedItem;
+ _settings.ShowOnlyMostUsedCMDsNumber =
+ (int) ShowOnlyMostUsedCMDsNumber.SelectedItem;
}
LeaveShellOpen.Checked += (o, e) =>
@@ -58,6 +67,25 @@ private void CMDSetting_OnLoaded(object sender, RoutedEventArgs re)
_settings.RunAsAdministrator = false;
};
+ UseWindowsTerminal.Checked += (o, e) =>
+ {
+ _settings.UseWindowsTerminal = true;
+
+ WindowsTerminalProfile.IsEnabled = true;
+ };
+
+ UseWindowsTerminal.Unchecked += (o, e) =>
+ {
+ _settings.UseWindowsTerminal = false;
+
+ WindowsTerminalProfile.IsEnabled = false;
+ };
+
+ WindowsTerminalProfile.TextChanged += (o, e) =>
+ {
+ _settings.WindowsTerminalProfile = WindowsTerminalProfile.Text;
+ };
+
ReplaceWinR.Checked += (o, e) =>
{
_settings.ReplaceWinR = true;
@@ -89,12 +117,13 @@ private void CMDSetting_OnLoaded(object sender, RoutedEventArgs re)
ShowOnlyMostUsedCMDsNumber.IsEnabled = false;
};
- ShowOnlyMostUsedCMDsNumber.SelectedItem = _settings.ShowOnlyMostUsedCMDsNumber;
+ ShowOnlyMostUsedCMDsNumber.SelectedItem =
+ _settings.ShowOnlyMostUsedCMDsNumber;
ShowOnlyMostUsedCMDsNumber.SelectionChanged += (o, e) =>
{
- _settings.ShowOnlyMostUsedCMDsNumber = (int)ShowOnlyMostUsedCMDsNumber.SelectedItem;
+ _settings.ShowOnlyMostUsedCMDsNumber =
+ (int) ShowOnlyMostUsedCMDsNumber.SelectedItem;
};
-
}
}
}