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) =>
{