diff --git a/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
index 39807db2c..d7e87b50b 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml
@@ -73,6 +73,7 @@
Run As Administrator
Open containing folder
Disable this program from displaying
+ Open target folder
Program
Search programs in Flow Launcher
diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
index a7f447598..f3d971991 100644
--- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
+++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs
@@ -39,15 +39,20 @@ namespace Flow.Launcher.Plugin.Program.Programs
public string FullPath { get; set; }
///
- /// Path of the executable for .lnk, or the URL for .url. Arguments are included if any.
+ /// Path of the executable for .lnk, or the URL for .url
///
public string LnkResolvedPath { get; set; }
///
- /// Path of the actual executable file. Args are included.
+ /// Path of the actual executable file
///
public string ExecutablePath => LnkResolvedPath ?? FullPath;
+ ///
+ /// Arguments for the executable.
+ ///
+ public string Args { get; set; }
+
public string ParentDirectory { get; set; }
///
@@ -261,11 +266,29 @@ namespace Flow.Launcher.Plugin.Program.Programs
},
IcoPath = "Images/folder.png",
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe838"),
- }
+ },
};
+ if (Extension(FullPath) == ShortcutExtension)
+ {
+ contextMenus.Add(OpenTargetFolderContextMenuResult(api));
+ }
return contextMenus;
}
+ private Result OpenTargetFolderContextMenuResult(IPublicAPI api)
+ {
+ return new Result
+ {
+ Title = api.GetTranslation("flowlauncher_plugin_program_open_target_folder"),
+ Action = _ =>
+ {
+ api.OpenDirectory(Path.GetDirectoryName(ExecutablePath), ExecutablePath);
+ return true;
+ },
+ IcoPath = "Images/folder.png",
+ Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\xe8de"),
+ };
+ }
public override string ToString()
{
@@ -327,7 +350,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
var args = _helper.arguments;
if (!string.IsNullOrEmpty(args))
{
- program.LnkResolvedPath += " " + args;
+ program.Args = args;
}
var description = _helper.description;
@@ -624,7 +647,7 @@ namespace Flow.Launcher.Plugin.Program.Programs
private static IEnumerable ProgramsHasher(IEnumerable programs)
{
var startMenuPaths = GetStartMenuPaths();
- return programs.GroupBy(p => p.ExecutablePath.ToLowerInvariant())
+ return programs.GroupBy(p => (p.ExecutablePath + p.Args).ToLowerInvariant())
.AsParallel()
.SelectMany(g =>
{