在mac系统除了自带的Spotlight还有一个很好用的工具叫Alfred

image

在windows系统也有一个很好用的工具叫PowerToys,是微软的一个开源项目

image

https://github.com/microsoft/PowerToys

从上面的github地址可以下载安装包。

image

它有很多快捷功能,请大家自己研究吧。今天要说的是PowerToys Run

image

默认的唤起快捷键是 Alt+Space

但是PowerToys Run有一个问题,就是自带的文件搜索功能是基于系统索引的,搜索的速度慢,还经常找不到我想要找的文件。看见很多人在Issue里面提希望能支持Everything搜索,官方说有社区提供了插件了 https://github.com/IzaiahSun/PowerToys

从这个大佬的releases里面下载下来

image

然后定位到zip里的modules\launcher\plugins,将整个Community.PowerToys.Run.Plugin.Everything文件夹复制到系统中已经安装好的PowerToys目录\modules\launcher\Plugins中,最后重启PowerToys即可!

下面才是重点:

PowerToys Run的功能在开始以插件的形式提供之后,想要扩展自己的功能是非常简单的,我们只需要写代码加入自己的逻辑就好了。

因为我经常会用idea,我就写了几行代码来扩展一下,如果是java项目的文件夹,可以直接用idea打开。效果如下图:

image

//判断是否为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 你可以配置在环境变量里面,

image

如果你用是Toolsbox的话,idea会经常更新版本,每次升级都得重新改环境变量嫌麻烦,那么Toolsbox的这个功能可以设置下

image

然后把上图中的Shell脚本的文件夹设置到 环境变量的PATH里面 就一劳永逸了!

image

想要获取我更改后的EveryThing插件的可以公众号发送文本文字:PowerToys

下载后解压到你本机PowerToys目录

比如我的本机是:

C:\Program Files\PowerToys\modules\launcher\Plugins

Enjoy!!!

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

PowerToys插件扩展(类似Alfred)的更多相关文章

  1. [Unity]Unity3D编辑器插件扩展和组件扩展

    1. 插件扩展 1.1. 命名空间 using UnityEditor; using UnityEngine; //非必需,常用到 1.2. 使用语法 [MenuItem("Assets/M ...

  2. Chrome插件(扩展)

    [干货]Chrome插件(扩展)开发全攻略   写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均 ...

  3. kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件

    该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...

  4. QML插件扩展2(基于C++的插件扩展)

    上一节介绍了纯QML的插件扩展方式,这种扩展方式基本满足大部分的扩展需求,下面开始介绍比较小众的基于C++的扩展 (一)更新插件工程 1.更新MyPlugin工程下的qmldir文件,加入plugin ...

  5. QML插件扩展(一)

    准备分两节来介绍QML扩展插件,分别为 (一)基于QML文件的扩展方式 (二)基于C++的插件扩展 这篇先介绍基于QML的插件扩展. 先介绍几个基本概念: qmldir: 用于组织自定义的QML插件, ...

  6. 百度umeditor富文本编辑器插件扩展

    富文本编辑器在WEB开发中经常用到,个人比较喜欢用百度出的ueditor这款,ueditor这款本身支持插件扩展的,但是ueditor的mini版本 umeditor 就没有那么方便了,不过找了很多资 ...

  7. Chrome插件(扩展)开发全攻略

    [干货]Chrome插件(扩展)开发全攻略:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

  8. FireFox 浏览器插件/扩展开发学习

    2014-11-08 内容存档在evernote,笔记名"FireFox 浏览器插件/扩展开发学习"

  9. js插件---在线类似excel生成图表插件解决方案

    js插件---在线类似excel生成图表插件解决方案 一.总结 一句话总结:google比百度好用多了,多用google google js editable table jquery 双向绑定 这种 ...

随机推荐

  1. 2019.03.27【GDOI2019】模拟 T3

    题目大意 给出$n$, $p$, 求有多少长度为$n$的排列可以被分成三个上升子序列, 数量对$p$取模, 数据范围 $3 \leq n \leq 500$. 思路 首先让我们考虑如果有一个排列,如何 ...

  2. 我的笔记本电脑瞬间扩大一个T的容量!

    前言 不知道有多少人在家里搭建中央存储设备的,也就是NAS.这个东西在我日常生活中,存储了大量的个人资料,家人们的照片,技术的资料,还有各种高清影视剧.搭配公网的IP,可以真正做到,任何时候任何地点的 ...

  3. Iptables 代理局域网内的主机上网

    参考连接:https://developer.aliyun.com/article/607330 环境为云环境,有外网主机的IP为192.168.0.39,无外网主机的IP为192.168.0.228 ...

  4. ICMP 协议仿真及ping命令用途

    1.实验目的 加深对 IPv4 协议首部各定义域的理解,掌握路由表的结构和基本配置命令,熟悉 ICMP 的调试操作. 2.实验原理 IPv4 协议定义,网络层协议的相关 RFC 定义和描述. 3.实验 ...

  5. 一文读懂什么是渲染管线(7k字)

    01 | 渲染基础 渲染(Render)定义 渲染在电脑绘图中是指软件从模型生成图像的过程,通俗讲就是在计算机里面给虚拟世界"拍照".渲染主要分为两种,一种是预渲染(pre-ren ...

  6. typedef的用法 单向链表的查找、增加、删除、销毁。

    一:typedef的用法.    写一个数据结构(计算机存储数据的一种方式,是抽象的,可以人为组织,提高算法效率),我们需要注意:接口友好,模块化,规范命名等方面,在接口友好方面,typedef是非常 ...

  7. Jmeter 踩坑记录(七)

    1.master连不上Slave机 解决方法:telnet 192.168.xx.xx 1099  看IP 端口通不通,如果通 OK,不通,检查关闭防火墙或者开放端口 2.salve 连不上 mast ...

  8. <互联网时代>观感

    <互联网时代>这部纪录片描绘了互联网从上世纪70年代到现在的整个发展过程,讲述了互联网带给我们生活的方方面面的变化,互联网技术在短短二,三十年的商业化浪潮中,以前所未有的速度谱写着改变世界 ...

  9. 大爽Python入门教程 1-1 简单的数学运算

    大爽Python入门公开课教案 点击查看教程总目录 1 使用pycharm建立我们的第一个项目 打开pycharm,点击菜单栏,File->New Project 在Location(项目地址) ...

  10. 菜鸡的Java笔记 第二十三 - java 抽象类的概念

    abstractClass 抽象类的概念        1.抽象类的基本定义        2.抽象类的使用原则                不会抽象类与接口,java = 没学           ...