PowerToys插件扩展(类似Alfred)
在mac系统除了自带的Spotlight还有一个很好用的工具叫Alfred
在windows系统也有一个很好用的工具叫PowerToys,是微软的一个开源项目
https://github.com/microsoft/PowerToys
从上面的github地址可以下载安装包。
它有很多快捷功能,请大家自己研究吧。今天要说的是PowerToys Run
默认的唤起快捷键是 Alt+Space
但是PowerToys Run有一个问题,就是自带的文件搜索功能是基于系统索引的,搜索的速度慢,还经常找不到我想要找的文件。看见很多人在Issue里面提希望能支持Everything搜索,官方说有社区提供了插件了 https://github.com/IzaiahSun/PowerToys
从这个大佬的releases里面下载下来
然后定位到zip里的modules\launcher\plugins,将整个Community.PowerToys.Run.Plugin.Everything文件夹复制到系统中已经安装好的PowerToys目录\modules\launcher\Plugins中,最后重启PowerToys即可!
下面才是重点:
PowerToys Run的功能在开始以插件的形式提供之后,想要扩展自己的功能是非常简单的,我们只需要写代码加入自己的逻辑就好了。
因为我经常会用idea,我就写了几行代码来扩展一下,如果是java项目的文件夹,可以直接用idea打开。效果如下图:
//判断是否为java工程文件夹
public static bool CanRunIdea(string path)
{
if (File.Exists(path))
{
return path.EndsWith("pom.xml");
}
var buildGradleFile = System.IO.Path.Combine(path, "build.gradle");
if (File.Exists(buildGradleFile))
{
return true;
}
var pomFile = System.IO.Path.Combine(path, "pom.xml");
if (File.Exists(pomFile))
{
return true;
}
return false;
}
//创建运行idea的按钮以及点击按钮事件的触发
private static ContextMenuResult CreateRunIdeaContextMenu(SearchResult record)
{
return new ContextMenuResult
{
PluginName = Assembly.GetExecutingAssembly().GetName().Name,
Title = Properties.Resources.Community_plugin_everything_run_as_idea,
Glyph = "\xEC58",
FontFamily = "Segoe MDL2 Assets",
AcceleratorKey = Key.F1,
AcceleratorModifiers = ModifierKeys.Windows,
Action = _ =>
{
try
{
Task.Run(() => {
var idea = Environment.GetEnvironmentVariable("idea");
if (string.IsNullOrEmpty(idea))
{
RunCommand($"idea \"{record.FullPath}\"", record.FullPath);
}
else
{
RunCommand($"\"{idea}\" \"{record.FullPath}\"", record.FullPath);
}
});
return true;
}
catch (System.Exception e)
{
Log.Exception($"Failed to run {record.FullPath} as idea, {e.Message}", e, MethodBase.GetCurrentMethod().DeclaringType);
return false;
}
},
};
}
代码很简单,如果识别到了是java项目文件夹,就展示一个icon图标按钮,点击用idea打开。
idea的启动path 你可以配置在环境变量里面,
如果你用是Toolsbox的话,idea会经常更新版本,每次升级都得重新改环境变量嫌麻烦,那么Toolsbox的这个功能可以设置下
然后把上图中的Shell脚本的文件夹设置到 环境变量的PATH里面 就一劳永逸了!
想要获取我更改后的EveryThing插件的可以公众号发送文本文字:PowerToys
下载后解压到你本机PowerToys目录
比如我的本机是:
C:\Program Files\PowerToys\modules\launcher\Plugins

Enjoy!!!
关注公众号,我开发的开源工具分享给你!

PowerToys插件扩展(类似Alfred)的更多相关文章
- [Unity]Unity3D编辑器插件扩展和组件扩展
1. 插件扩展 1.1. 命名空间 using UnityEditor; using UnityEngine; //非必需,常用到 1.2. 使用语法 [MenuItem("Assets/M ...
- Chrome插件(扩展)
[干货]Chrome插件(扩展)开发全攻略 写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...
- kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- QML插件扩展2(基于C++的插件扩展)
上一节介绍了纯QML的插件扩展方式,这种扩展方式基本满足大部分的扩展需求,下面开始介绍比较小众的基于C++的扩展 (一)更新插件工程 1.更新MyPlugin工程下的qmldir文件,加入plugin ...
- QML插件扩展(一)
准备分两节来介绍QML扩展插件,分别为 (一)基于QML文件的扩展方式 (二)基于C++的插件扩展 这篇先介绍基于QML的插件扩展. 先介绍几个基本概念: qmldir: 用于组织自定义的QML插件, ...
- 百度umeditor富文本编辑器插件扩展
富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...
- Chrome插件(扩展)开发全攻略
[干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html
- FireFox 浏览器插件/扩展开发学习
2014-11-08 内容存档在evernote,笔记名"FireFox 浏览器插件/扩展开发学习"
- js插件---在线类似excel生成图表插件解决方案
js插件---在线类似excel生成图表插件解决方案 一.总结 一句话总结:google比百度好用多了,多用google google js editable table jquery 双向绑定 这种 ...
随机推荐
- STM32学习笔记之核心板PCB设计
PCB设计流程 PCB规则设置 设计规则的单位跟随画布属性里设置的单位,此处单位是mil.导线线宽最小为10mil;不同网络元素之间最小间距为8mil;孔外径为24mil,孔内径为12mil;线长不做 ...
- 第K个数 牛客网 程序员面试金典 C++ Python
第K个数 牛客网 程序员面试金典 C++ Python 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测 ...
- 学习JS的第二天
一.数据类型间的转换 主要:数字与字符串之间的转换 1.隐式转换 // console.log(1==true);[] 字符串与数字相加,其结果就是字符串 类似于字符串拼接 concole.log( ...
- Linux 下权限的管理
Linux 下权限的管理 我们都知道,Linux系统对于用户的权限管理是十分严格的. 那么,我们就来具体了解一下. 一. 用户 在Linux中按照类型用户分为两种:1.超级用户 2.普通用户 那么它们 ...
- Mac下Shell脚本使用学习笔记(二)
参考文献 Shell 教程 MAC常用终端命令行 Mac下Shell脚本使用 (7)Shell echo命令: 命令格式:echo string ①显示普通字符串:echo "It is a ...
- 说透 Docker:基础
既然要学习 K8S,相信各位读者都已经使用过 Docker 了,Docker 的入门是比较容易的,但 Docker 的网络和存储.虚拟化是相当复杂的,Docker 的技术点比较多,在本章中将会深入介绍 ...
- Django 项目配置拆分独立
目录 一.创建配置目录 二.创建基础配置文件 三.创建各个环境的配置 四.调整settings.py 五.程序使用 六.目录结构 Django 项目中,我们默认的配置是都在 settings.py 文 ...
- C#-WPF数据绑定基础(一)
前言:WPF数据绑定技术有效的提高了程序的容错率,可以最大程度的保持程序的健壮性,从而降低程序在使用过程中崩掉的可能性. 接下来,我将分享一下我在写测量程序过程中所用到的数据绑定方面的知识 首先,我所 ...
- shell脚本训练
*注:shell中的/data目录为自创练习目录 1,编写脚本systeminfo.sh,显示当前主机系统信息.包括主机名,IPV4地址,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小 结果: ...
- PAT A1024题解——高精度大数相加模板
PAT:A1024 Palindromic Number A number that will be the same when it is written forwards or backwards ...