diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml index 3fa7c64fa..8aae3a5fd 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/de.xaml @@ -2,6 +2,7 @@ Ersetzt Win+R + Schließe die Kommandozeilte nachdem eine Taste gedrückt wurde Schließe die Kommandozeilte nicht nachdem der Befehl ausgeführt wurde Immer als Administrator ausführen Als anderer Benutzer ausführen diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml index 9a692cac3..88fa264d0 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml @@ -3,6 +3,7 @@ xmlns:system="clr-namespace:System;assembly=mscorlib"> Replace Win+R + Close Command Prompt after pressing any key Do not close Command Prompt after command execution Always run as administrator Run as different user diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs index 66917d594..b963302db 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs @@ -187,7 +187,7 @@ namespace Flow.Launcher.Plugin.Shell return history.ToList(); } - private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdministrator = false) + private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdministrator = false) //TODO: implement logic for CloseCMDAfterPress { command = command.Trim(); command = Environment.ExpandEnvironmentVariables(command); @@ -203,7 +203,7 @@ namespace Flow.Launcher.Plugin.Shell case Shell.Cmd: { info.FileName = "cmd.exe"; - info.Arguments = $"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command}"; + info.Arguments = $"{(_settings.LeaveShellOpen ? "/k" : "/c")} {command} {(_settings.CloseShellAfterPress ? "& pause" : "")}"; //// 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: @@ -233,6 +233,10 @@ namespace Flow.Launcher.Plugin.Shell { info.ArgumentList.Add("-Command"); info.ArgumentList.Add(command); + if (_settings.CloseShellAfterPress) + { + info.ArgumentList.Add("; pause"); + } } break; } @@ -246,6 +250,10 @@ namespace Flow.Launcher.Plugin.Shell } info.ArgumentList.Add("-Command"); info.ArgumentList.Add(command); + if (_settings.CloseShellAfterPress) + { + info.ArgumentList.Add("; pause"); + } break; } diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs index 47b46055c..6f47d5d17 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Shell/Settings.cs @@ -7,6 +7,8 @@ namespace Flow.Launcher.Plugin.Shell public Shell Shell { get; set; } = Shell.Cmd; public bool ReplaceWinR { get; set; } = false; + + public bool CloseShellAfterPress { get; set; } = false; public bool LeaveShellOpen { get; set; } diff --git a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml index 240bda953..960272f0f 100644 --- a/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml +++ b/Plugins/Flow.Launcher.Plugin.Shell/ShellSetting.xaml @@ -22,6 +22,12 @@ Margin="10,10,5,5" HorizontalAlignment="Left" Content="{DynamicResource flowlauncher_plugin_cmd_relace_winr}" /> + + { + _settings.CloseShellAfterPress = true; + }; + + CloseShellAfterPress.Unchecked += (o, e) => + { + _settings.CloseShellAfterPress = false; + }; + LeaveShellOpen.Checked += (o, e) => { _settings.LeaveShellOpen = true;