diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml index 52aaf3c27..645a0e14f 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml @@ -7,6 +7,7 @@ Press any key to close this window... 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 @@ -15,4 +16,4 @@ Run As Administrator Copy the command Only show number of most used commands: - \ No newline at end of file + diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/es-419.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/es-419.xaml index 5ee2c43b4..f3ef0df0a 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/es-419.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/es-419.xaml @@ -6,6 +6,7 @@ Press any key to close this window... No cerrar Símbolo del Sistema tras ejecutar el comando Siempre ejecutar como administrador + Ejecutar en la Terminal de Windows Ejecutar como otro usuario Shell Allows to execute system commands from Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/es.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/es.xaml index a3ee35ef8..ee3193b16 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/es.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/es.xaml @@ -6,6 +6,7 @@ Pulsar cualquier tecla para cerrar esta ventana... No cerrar el símbolo del sistema después de la ejecución del comando Ejecutar siempre como administrador + Ejecutar en la Terminal de Windows Ejecutar como usuario diferente Terminal Permite ejecutar comandos del sistema desde Flow Launcher diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs index fc8746e41..7f1f4bd4d 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs @@ -202,28 +202,31 @@ namespace Flow.Launcher.Plugin.Shell { case Shell.Cmd: { - info.FileName = "cmd.exe"; - info.Arguments = $"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command} {(_settings.CloseShellAfterPress ? $"&& echo {context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")} && pause > nul /c" : "")}"; - - //// Use info.Arguments instead of info.ArgumentList to enable users better control over the arguments they are writing. - //// Previous code using ArgumentList, commands needed to be separated correctly: - //// Incorrect: - // info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c"); - // info.ArgumentList.Add(command); //<== info.ArgumentList.Add("mkdir \"c:\\test new\""); - - //// Correct version should be: - //info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c"); - //info.ArgumentList.Add("mkdir"); - //info.ArgumentList.Add(@"c:\test new"); - - //https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=net-6.0#remarks + if (_settings.UseWindowsTerminal) + { + info.FileName = "wt.exe"; + info.ArgumentList.Add("cmd"); + } + else + { + info.FileName = "cmd.exe"; + } + info.ArgumentList.Add($"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command} {(_settings.CloseShellAfterPress ? $"&& echo {context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")} && pause > nul /c" : "")}"); break; } case Shell.Powershell: { - info.FileName = "powershell.exe"; + if (_settings.UseWindowsTerminal) + { + info.FileName = "wt.exe"; + info.ArgumentList.Add("powershell"); + } + else + { + info.FileName = "powershell.exe"; + } if (_settings.LeaveShellOpen) { info.ArgumentList.Add("-NoExit"); @@ -232,21 +235,28 @@ namespace Flow.Launcher.Plugin.Shell else { info.ArgumentList.Add("-Command"); - info.ArgumentList.Add($"{command}; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'; [System.Console]::ReadKey(); exit" : "")}"); + info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); } break; } case Shell.Pwsh: { - info.FileName = "pwsh.exe"; + if (_settings.UseWindowsTerminal) + { + info.FileName = "wt.exe"; + info.ArgumentList.Add("pwsh"); + } + else + { + info.FileName = "pwsh.exe"; + } if (_settings.LeaveShellOpen) { info.ArgumentList.Add("-NoExit"); } info.ArgumentList.Add("-Command"); - info.ArgumentList.Add($"{command}; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'; [System.Console]::ReadKey(); exit" : "")}"); - + info.ArgumentList.Add($"{command}\\; {(_settings.CloseShellAfterPress ? $"Write-Host '{context.API.GetTranslation("flowlauncher_plugin_cmd_press_any_key_to_close")}'\\; [System.Console]::ReadKey()\\; exit" : "")}"); break; } @@ -279,33 +289,6 @@ namespace Flow.Launcher.Plugin.Shell break; } - case Shell.TerminalPWSH: - { - info.FileName = "wt.exe"; - info.ArgumentList.Add("pwsh"); - if (_settings.LeaveShellOpen) - { - info.ArgumentList.Add("-NoExit"); - } - info.ArgumentList.Add("-Command"); - info.ArgumentList.Add(command); - break; - } - case Shell.TerminalCMD: - { - info.FileName = "wt.exe"; - info.ArgumentList.Add("cmd"); - if (_settings.LeaveShellOpen) - { - info.ArgumentList.Add("/k"); - } - else - { - info.ArgumentList.Add("/c"); - } - info.ArgumentList.Add(command); - break; - } default: throw new NotImplementedException(); } diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs index 75cc56618..9ce2293a2 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs @@ -14,6 +14,8 @@ namespace Flow.Launcher.Plugin.Shell public bool RunAsAdministrator { get; set; } = true; + public bool UseWindowsTerminal { get; set; } = false; + public bool ShowOnlyMostUsedCMDs { get; set; } public int ShowOnlyMostUsedCMDsNumber { get; set; } @@ -39,7 +41,5 @@ namespace Flow.Launcher.Plugin.Shell Powershell = 1, RunCommand = 2, Pwsh = 3, - TerminalPWSH = 4, - TerminalCMD = 5, } } diff --git a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml index 7e35a872f..8a3b7f115 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml @@ -16,6 +16,7 @@ + + CMD PowerShell Pwsh - Terminal (Pwsh) - Terminal (CMD) RunCommand - + + { + _settings.UseWindowsTerminal = true; + }; + + UseWindowsTerminal.Unchecked += (o, e) => + { + _settings.UseWindowsTerminal = false; + }; + ReplaceWinR.Checked += (o, e) => { _settings.ReplaceWinR = true; @@ -91,8 +103,6 @@ namespace Flow.Launcher.Plugin.Shell Shell.Cmd => 0, Shell.Powershell => 1, Shell.Pwsh => 2, - Shell.TerminalPWSH => 3, - Shell.TerminalCMD => 4, _ => ShellComboBox.Items.Count - 1 }; @@ -103,8 +113,6 @@ namespace Flow.Launcher.Plugin.Shell 0 => Shell.Cmd, 1 => Shell.Powershell, 2 => Shell.Pwsh, - 3 => Shell.TerminalPWSH, - 4 => Shell.TerminalCMD, _ => Shell.RunCommand }; LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand;