diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/en.xaml index 2eee31745db..e7a1361147f 100644 --- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Languages/en.xaml @@ -5,7 +5,8 @@ Process Killer Kill running processes from Flow Launcher - kill all "{0}" processes + kill all instances of "{0}" + kill {0} processes kill all instances \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Main.cs b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Main.cs index f675e3f4578..c3d9d1ab2e0 100644 --- a/Plugins/Flow.Launcher.Plugin.ProcessKiller/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.ProcessKiller/Main.cs @@ -52,21 +52,24 @@ public List LoadContextMenus(Result result) // get all non-system processes whose file path matches that of the given result (processPath) var similarProcesses = processHelper.GetSimilarProcesses(processPath); - menuOptions.Add(new Result + if (similarProcesses.Count() > 0) { - Title = _context.API.GetTranslation("flowlauncher_plugin_processkiller_kill_instances"), - SubTitle = processPath, - Action = _ => + menuOptions.Add(new Result { - foreach (var p in similarProcesses) + Title = _context.API.GetTranslation("flowlauncher_plugin_processkiller_kill_instances"), + SubTitle = processPath, + Action = _ => { - processHelper.TryKill(p); - } + foreach (var p in similarProcesses) + { + processHelper.TryKill(p); + } - return true; - }, - IcoPath = processPath - }); + return true; + }, + IcoPath = processPath + }); + } return menuOptions; } @@ -86,6 +89,7 @@ private List CreateResultsFromProcesses(List processlist, SubTitle = path, TitleHighlightData = StringMatcher.FuzzySearch(termToSearch, p.ProcessName).MatchData, Score = pr.Score, + ContextData = p.ProcessName, Action = (c) => { processHelper.TryKill(p); @@ -98,14 +102,14 @@ private List CreateResultsFromProcesses(List processlist, // When there are multiple results AND all of them are instances of the same executable // add a quick option to kill them all at the top of the results. - var firstResult = sortedResults.FirstOrDefault()?.SubTitle; - if (processlist.Count > 1 && !string.IsNullOrEmpty(termToSearch) && sortedResults.All(r => r.SubTitle == firstResult)) + var firstResult = sortedResults.FirstOrDefault(x => !string.IsNullOrEmpty(x.SubTitle)); + if (processlist.Count > 1 && !string.IsNullOrEmpty(termToSearch) && sortedResults.All(r => r.SubTitle == firstResult?.SubTitle)) { sortedResults.Insert(1, new Result() { - IcoPath = "Images/app.png", - Title = string.Format(_context.API.GetTranslation("flowlauncher_plugin_processkiller_kill_all"), termToSearch), - SubTitle = "", + IcoPath = firstResult?.IcoPath, + Title = string.Format(_context.API.GetTranslation("flowlauncher_plugin_processkiller_kill_all"), firstResult?.ContextData), + SubTitle = string.Format(_context.API.GetTranslation("flowlauncher_plugin_processkiller_kill_all_count"), processlist.Count), Score = 200, Action = (c) => {