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",