PowerToys插件扩展(类似Alfred)

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

4fd5f7a65eedc9560398e9c5f824f803.png
image

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

2045e2f8707f7f11fc62355e8f849796.gif
image

https://github.com/microsoft/PowerToys

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

68bedf5b458b89927dd47883dc0d8845.png
image

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

a7859fb47a1202a18e4f9423ecd8517b.png
image

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

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

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

4409ad06419ea920af25551231ed0139.png
image

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

下面才是重点:

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

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

5b6f8511a72a13dd603fab705640dd05.gif

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 你可以配置在环境变量里面,

86662cc10497266e9bb44860e6727ac6.png
image

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

00e4b6194fa8b5601f4740b3e9cd0e53.png
image

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

0656b9cdbfa16f9c561c06a71ebe985f.png
image

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

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

比如我的本机是:

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

caeceb88dd651dc47e3846fb1c909dc2.png
image

我是正东,学的越多不知道也越多。欢迎白嫖 顺手点个赞吧!d4498c73d1246256600b64827dd0b12d.png196e2a2bf4952d06b95e5655b589d18a.png489e2b31ecef499ae0528f47d378efe9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值