diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Images/admin.png b/Plugins/Flow.Launcher.Plugin.Shell/Images/admin.png
new file mode 100644
index 00000000000..bc3fe877861
Binary files /dev/null and b/Plugins/Flow.Launcher.Plugin.Shell/Images/admin.png differ
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Images/copy.png b/Plugins/Flow.Launcher.Plugin.Shell/Images/copy.png
new file mode 100644
index 00000000000..cc3bf4ea828
Binary files /dev/null and b/Plugins/Flow.Launcher.Plugin.Shell/Images/copy.png differ
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
index 586ac293b74..8665e17bb7d 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Languages/en.xaml
@@ -11,4 +11,5 @@
this command has been executed {0} times
execute command through command shell
Run As Administrator
+ Copy the command
\ No newline at end of file
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
index 3aa08782156..bd316a6bfd7 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
+++ b/Plugins/Flow.Launcher.Plugin.Shell/Main.cs
@@ -21,7 +21,7 @@ namespace Flow.Launcher.Plugin.Shell
public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, ISavable
{
private const string Image = "Images/shell.png";
- private PluginInitContext _context;
+ private PluginInitContext context;
private bool _winRStroked;
private readonly KeyboardSimulator _keyboardSimulator = new KeyboardSimulator(new InputSimulator());
@@ -108,14 +108,14 @@ private List GetHistoryCmds(string cmd, Result result)
{
if (m.Key == cmd)
{
- result.SubTitle = string.Format(_context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value);
+ result.SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value);
return null;
}
var ret = new Result
{
Title = m.Key,
- SubTitle = string.Format(_context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value),
+ SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value),
IcoPath = Image,
Action = c =>
{
@@ -134,7 +134,7 @@ private Result GetCurrentCmd(string cmd)
{
Title = cmd,
Score = 5000,
- SubTitle = _context.API.GetTranslation("flowlauncher_plugin_cmd_execute_through_shell"),
+ SubTitle = context.API.GetTranslation("flowlauncher_plugin_cmd_execute_through_shell"),
IcoPath = Image,
Action = c =>
{
@@ -152,7 +152,7 @@ private List ResultsFromlHistory()
.Select(m => new Result
{
Title = m.Key,
- SubTitle = string.Format(_context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value),
+ SubTitle = string.Format(context.API.GetTranslation("flowlauncher_plugin_cmd_cmd_has_been_executed_times"), m.Value),
IcoPath = Image,
Action = c =>
{
@@ -234,13 +234,13 @@ private void Execute(Func startProcess,ProcessStartIn
{
var name = "Plugin: Shell";
var message = $"Command not found: {e.Message}";
- _context.API.ShowMsg(name, message);
+ context.API.ShowMsg(name, message);
}
catch(Win32Exception e)
{
var name = "Plugin: Shell";
var message = $"Error running the command: {e.Message}";
- _context.API.ShowMsg(name, message);
+ context.API.ShowMsg(name, message);
}
}
@@ -275,7 +275,7 @@ private bool ExistInPath(string filename)
public void Init(PluginInitContext context)
{
- this._context = context;
+ this.context = context;
context.API.GlobalKeyboardEvent += API_GlobalKeyboardEvent;
}
@@ -301,7 +301,7 @@ bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state)
private void OnWinRPressed()
{
- _context.API.ChangeQuery($"{_context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeperater}");
+ context.API.ChangeQuery($"{context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeperater}");
Application.Current.MainWindow.Visibility = Visibility.Visible;
}
@@ -312,12 +312,12 @@ public Control CreateSettingPanel()
public string GetTranslatedPluginTitle()
{
- return _context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_name");
+ return context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_name");
}
public string GetTranslatedPluginDescription()
{
- return _context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_description");
+ return context.API.GetTranslation("flowlauncher_plugin_cmd_plugin_description");
}
public List LoadContextMenus(Result selectedResult)
@@ -326,7 +326,7 @@ public List LoadContextMenus(Result selectedResult)
{
new Result
{
- Title = _context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_different_user"),
+ Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_different_user"),
Action = c =>
{
Task.Run(() =>Execute(ShellCommand.RunAsDifferentUser, PrepareProcessStartInfo(selectedResult.Title)));
@@ -336,13 +336,23 @@ public List LoadContextMenus(Result selectedResult)
},
new Result
{
- Title = _context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_administrator"),
+ Title = context.API.GetTranslation("flowlauncher_plugin_cmd_run_as_administrator"),
Action = c =>
{
Execute(Process.Start, PrepareProcessStartInfo(selectedResult.Title, true));
return true;
},
- IcoPath = Image
+ IcoPath = "Images/admin.png"
+ },
+ new Result
+ {
+ Title = context.API.GetTranslation("flowlauncher_plugin_cmd_copy"),
+ Action = c =>
+ {
+ Clipboard.SetDataObject(selectedResult.Title);
+ return true;
+ },
+ IcoPath = "Images/copy.png"
}
};
diff --git a/Plugins/Flow.Launcher.Plugin.Shell/plugin.json b/Plugins/Flow.Launcher.Plugin.Shell/plugin.json
index 4ad572cf608..b38db70ed82 100644
--- a/Plugins/Flow.Launcher.Plugin.Shell/plugin.json
+++ b/Plugins/Flow.Launcher.Plugin.Shell/plugin.json
@@ -4,7 +4,7 @@
"Name": "Shell",
"Description": "Provide executing commands from Flow Launcher. Commands should start with >",
"Author": "qianlifeng",
- "Version": "1.1.2",
+ "Version": "1.2.0",
"Language": "csharp",
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
"ExecuteFileName": "Flow.Launcher.Plugin.Shell.dll",