# 【自荐】Windows上类似Alfred的效率工具，名为 火眼（gotcha）

**URL:** https://meta.appinn.net/t/topic/61688
**Category:** 发现频道
**Created:** [2024 年10 月 5 日 22:09 UTC](https://meta.appinn.net/t/topic/61688 "2024-10-05T22:09:48Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### 作者： ![gotcha0](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/g/aca169/32.png) [@gotcha0](https://meta.appinn.net/u/gotcha0)
#### 发布日期： [2024 年10 月 5 日 22:09 UTC](https://meta.appinn.net/t/topic/61688/1 "2024-10-05T22:09:48Z")

</div>

Hello大家好呀，我从今年夏天至今写了一个款Windows上的生产力工具，也可以说是效率工具，类似于MacOS的Alfred，命名为Gotcha。

写这款工具的原因很简单，Windows内置的启动菜单不好用，和Alfred差远了，我很单纯就想写一个类似于Alfred的启动工具，因为我自己喜欢用。

肯定有朋友会问，uTools不是很好的Alfred替代品么，为什么要自己再写一个工具？

是的，uTools非常优秀，但是我就是喜欢写一款符合自己喜好的工具。比如我喜欢Alfred中Workflow的理念，所以我加到了这个工具中。再比如我不太喜欢electron架构的工具（没有冒犯的意思，我也用vscode，纯粹是太多优化不好的electron工具太占资源），所以我选择使用Qt。

自己造轮子一个最大的好处就是随意自己心意，让自己心情好就是最好的工具。在此分享这个工具也是Gotcha工具的第一次分享，希望能找到志同道合的朋友使用体验（BUG可能很多，毕竟一直都是自己用的）。

对了，Gotcha的中文名叫做“火眼”，取这个名字也是最近的事情。估计有的朋友都能猜出来，最近中黑神话悟空的毒比较深，所以用“火眼金睛”的“火眼”来命名软件，正好符合一个搜索为主的效率工具的调性。

需要郑重说明的是，软件肯定一直都会免费使用，原因很简单，第一，软件本身就使用了大量的MIT，BSD，LGPL等协议的代码，不可能厚着脸皮收费；第二，软件才1.0版本，比这个软件好用的软件多的去了，发布这个工具只是为了分享，找点志同道合的朋友，一起完善它。

最后，我想说一下火眼（Gotcha）为什么没有开源，其实原因很简单，代码写的比较随意，一边想一边写的，不符合我自己对于“开源”的代码质量规范的要求，简单说就是不拿出来丢人现眼了。如果有朋友想知道某些功能是如何实现的，大可以联系我，我甚至能写文章或者录视频来讲解。

好了，说了这么多，来看看火眼（Gotcha）究竟能做些什么吧。

## 简介

火眼（Gotcha）是 Windows 上的生产力工具，允许你通过键盘快速搜索、执行命令、启动应用、管理剪贴板、创建自定义工作流等。它极大地提高了工作效率，减少了鼠标操作。

官网链接：[火眼（Gotcha）](https://www.0cch.com/gotcha/index.html)

下载连接： [点我下载](https://github.com/0cch/gotcha_release/releases/download/v1.0.0.0/gotcha-setup-1.0.0.0.exe)

* * *

## 安装

1. 打开 [火眼（Gotcha）官网](https://www.0cch.com/gotcha/index.html) 并下载最新版。
2. 运行下载的 `.exe` 文件安装程序。
3. 启动 火眼（Gotcha）即可开始搜索。

* * *

## 基本功能

**火眼（Gotcha）使用符号 `>` 作为搜索执行符，是整个软件的核心字符。**

### 应用搜索

按下 `Win + Y` 打开 火眼（Gotcha）界面，输入关键字即可搜索应用。搜索的范围包括开始菜单、程序目录、用户桌面和环境变量中可执行程序和快捷方式。目前拼音搜索和首字母搜索只支持应用搜索，因为拼音搜索和首字母会减缓搜索速度。

![image-20241005122702691](https://0cch.cn/gotcha/assets/image-20241005122702691.png)

### 进程搜索

使用`pi>` 前缀即可开启进程搜索，其中`pi` 为搜索功能前缀，`>` 为搜索执行符。比如，搜索chrome，输入`pi>chrome` 即可。

![image-20241005122750820](https://0cch.cn/gotcha/assets/image-20241005122750820.png)

### 剪贴板搜索

使用`cb>` 前缀即可开启进程搜索，剪贴板搜索可以搜索火眼（Gotcha）启动以来的剪贴板历史。 **注意：程序重启后，重新开始记录剪贴板历史。**

![image-20241005123121712](https://0cch.cn/gotcha/assets/image-20241005123121712.png)

### Web搜索引擎搜索

使用`s>` 前缀即可开启进程搜索，例如搜索`s>火眼` ，目前还只支持作者常用的搜索引擎，如果需要其他搜索引擎，可以使用工作流（Workflow）功能自由创建搜索功能。

![image-20241005123225124](https://0cch.cn/gotcha/assets/image-20241005123225124.png)

### 搜索资源管理器窗口中的文件

使用`sf>` 前缀即可开启搜索资源管理器（explorer.exe）窗口中的文件，在打开窗口比较多的时候，使用此功能可以方便的找到想要的文件。

![image-20241005123334913](https://0cch.cn/gotcha/assets/image-20241005123334913.png)

### 普通文件搜索和文件内容搜索

使用`f>` 前缀即可开启普通文件搜索，普通文件搜索目录需要通过配置选项设置，可以添加包含路径和排除路径。

![image-20241005123429999](https://0cch.cn/gotcha/assets/image-20241005123429999.png)

使用`in>` 前缀即可开启文件内容二进制搜索，搜索路径依然是通过配置选项设置，与普通文件搜索相同。

![image-20241005123541581](https://0cch.cn/gotcha/assets/image-20241005123541581.png)

### 执行命令

使用`cmd>` 前缀即可执行cmd命令，输入cmd命令后需要输入`>` 执行命令，cmd命令支持命令行参数。例如：`cmd>ipconfig /all>`

![image-20241005123727704](https://0cch.cn/gotcha/assets/image-20241005123727704.png)

### 快速计算

使用`calc>` 前缀即可开启计算器功能，输入数学表达式，火眼（Gotcha）会自动计算结果。例如：

calc\>5 \* 8 + sin(1) - s2i(‘0x10’)

![image-20241005123949842](https://0cch.cn/gotcha/assets/image-20241005123949842.png)

支持的函数包括：

abs, avg, ceil, clamp, erf, erfc, exp, expm1, floor, frac, hypot, iclamp, inrange, log, log10, log1p, log2, logn, max, min, mod, mul, ncdf, pow, root, round, roundn, sgn, sqrt, sum, swap, trunc, equal, not\_equal, acos, acosh, asin, asinh, atan, atan2, atanh, cos, cosh, cot, csc, sec, sin, sinc, sinh, tan, tanh, deg2rad, rad2deg, deg2grad, grad2deg

### Windows设置项搜索

使用`st>` 前缀即可开启Windows设置项搜索，例如`st>xz` 。

![image-20241005124046217](https://0cch.cn/gotcha/assets/image-20241005124046217.png)

### 文档内容搜索

使用`doc>` 前缀即可开启文档文件内容搜索，目前支持Word、Excel、PowerPoint文件以及PDF搜索，注意Word、Excel、PowerPoint的搜索借助MS Office能力，需要安装Office，PDF搜索根据文件大小可能会比较慢。

### 超级搜索

使用`ss>` 前缀即可开启超级搜索，会使用 **管理员权限运行searchfileserver服务** ，该服务能力类似everything，对NTFS文件系统做全盘扫描搜索，目前暂不支持配置搜索盘符，所以盘符都会进行索引。

### 运行脚本

目前支持执行脚本的类型包括QuickJs，Python和PowerShell，其他脚本包括NodeJs还在计划当中。

使用`qjs>` 前缀即可开启执行QuickJs脚本，QuickJs为火眼（Gotcha）内置脚本引擎，可以在不依赖任何第三方库的情况下，执行简单的JS脚本操作。当然也支持一些基本的文件操作（QuickJs默认支持），后续内置功能陆续更新。

![image-20241005124238639](https://0cch.cn/gotcha/assets/image-20241005124238639.png)

使用`py>` 前缀即可开启执行Python脚本，Python脚本非内置引擎，依赖Python312.dll（需要安装Python3.12），因为是依赖第三方安装，所以pip安装的包都可以使用。Python脚本对应的文件夹如果存在requirements.txt文件，火眼（Gotcha）启动的时候会优先安装依赖包，因此Python是比较好的脚本传播选择。

py

| dict.py

|

-–dict

requirements.txt

dict\requirements.txt:

requests==2.32.3

![image-20241005125354175](https://0cch.cn/gotcha/assets/image-20241005125354175.png)

使用`ps>` 前缀即可开启执行PowerShell脚本。因为PowerShell是Windows内置脚本，所以基本上等于内置脚本。另外因为PowerShell支持.net和COM的调用，所以理论上可以完成一些复杂的功能，只是编写脚本不如Python方便。

![image-20241005124515283](https://0cch.cn/gotcha/assets/image-20241005124515283.png)

三种脚本的运行方式为：

(qjs|py|ps)\>(script name)\>(script args)\>(search pattern [optional])

![image-20241005125457627](https://0cch.cn/gotcha/assets/image-20241005125457627.png)

* * *

## 火眼（Gotcha）工作流（Workflow ）

### 什么是工作流？

工作流是 火眼（Gotcha）最强大的功能之一，允许用户通过自定义的操作流程自动完成多项任务。它可以用来启动一系列应用、进行复杂搜索、执行脚本等。

### 如何创建工作流？

1. 打开 火眼（Gotcha）设置。
2. 点击左侧的 “工作流（Workflow）”。
3. 点击新建工作流。
4. 按照需要添加触发器、操作步骤（如运行脚本、打开文件等）。

请注意，选择工作流节点有两种状态， **蓝色是选择节点** ，也是起始节点。 **红色是结束节点只用于连接节点使用** 。

#### 以ip工作流为例：

![image-20241005132805115](https://0cch.cn/gotcha/assets/image-20241005132805115.png)

1. 首先创建触发器，触发器是所有工作流的起点，需要设置工作流的名称和前缀。注意 **前缀非常重要** ，在运行工作流的时候需要用到。

![image-20241005133052892](https://0cch.cn/gotcha/assets/image-20241005133052892.png)

1. 创建所需要的行动节点，例如在ip这个工作流中需要执行PowerShell命令。

![image-20241005133205877](https://0cch.cn/gotcha/assets/image-20241005133205877.png)

1. 接着需要解析执行命令的结果，因为上一个节点输出的变量为`output` ，所以需要解析的变量为`${output}` 。这里用到了一个非常重要的组件Json解析器，可以通过类似XML的XPath解析Json。在例子中命令行返回的是一个Json数组，通过`/[*]/IPAddress` 这个查询路径，告诉解析器遍历Json数组中所有的数组，并且输出`IPAddress` 的值到`ip_addresses` ，`ip_addresses` 最后得到的也是一个数组。

查询路径使用方法：

/[\*]/target - 选择所有数组中的target Key

/[5]/target - 选择数组第5个target key

/[@‘attr1’==‘value1’, @‘attr2’\<‘value2’]/target - 通过Json对象中的某个key的值，过滤对象，并且输出符合条件的target

![image-20241005134052099](https://0cch.cn/gotcha/assets/image-20241005134052099.png)

1. 输出到列表，将`${ip_addresses}` 和`${interface_aliases}` 作为主信息和辅助信息输出到结果列表。

![image-20241005134241377](https://0cch.cn/gotcha/assets/image-20241005134241377.png)

### 运行工作流

使用`wf>` 前缀即可开启执行工作流，整体输入为：

wf\>(workflow name)\>(input [optional)\>(search pattern [optional])

其中`workflow name` 为工作流名称，`input` 为输入给工作流的参数，是可选的，其他工作流节点可以通过`${input}` 变量获取，`search pattern` 是搜索结果过滤。

例如`wf>ip>>12` ：

![image-20241005135140972](https://0cch.cn/gotcha/assets/image-20241005135140972.png)

如果需要查看所有工作流可以通过`wfl>` 查看：

![image-20241005135610830](https://0cch.cn/gotcha/assets/image-20241005135610830.png)

**工作流的相关例子均可以在安装目录的workflows文件夹下找到。**

* * *

## 常见问题

### 火眼（Gotcha）是否可以离线工作？

是的，大多数 火眼（Gotcha）功能在离线状态下都可以正常工作，但一些在线搜索功能（如互联网搜索）需要网络连接。

### 如何备份我的 火眼（Gotcha）设置？

您可以通过 火眼（Gotcha）设置（Settings）中的打开 Config.toml 另存为备份文件。

### 火眼（Gotcha）的工作流（Workflow）是否免费？

是的，火眼所有功能完全免，包括Workflow。

### 如何反馈BUG 或是 提交新的想法和需求？

您可以通过 moderncpp[at][163.com](http://163.com) 这个邮箱联系到我。也可以提交issues到[发布页面](https://github.com/0cch/gotcha_release/issues)

---

<div class="post-metadata">

### 作者： ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)
#### 发布日期： [2024 年10 月 6 日 00:17 UTC](https://meta.appinn.net/t/topic/61688/2 "2024-10-06T00:17:55Z")

</div>

就说一个，前缀词建议统一长度为一个字符，0\_9+a\_z一共36种类型，按说够用了

---

<div class="post-metadata">

### 作者： ![MiN](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/min/32/4428_2.png) [@MiN](https://meta.appinn.net/u/MiN)
#### 发布日期： [2024 年10 月 6 日 04:04 UTC](https://meta.appinn.net/t/topic/61688/3 "2024-10-06T04:04:29Z")

</div>

那些“calc\>”命令是不是点击左边的闪电图标选择输入的？

---

<div class="post-metadata">

### 作者： ![Azona77](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/azona77/32/63797_2.png) [@Azona77](https://meta.appinn.net/u/Azona77)
#### 发布日期： [2024 年10 月 6 日 05:25 UTC](https://meta.appinn.net/t/topic/61688/4 "2024-10-06T05:25:03Z")

</div>

看起来不错，wox竞品，有没有大佬来对比一下两者

> **[GitHub - Wox-launcher/Wox: A cross-platform launcher that simply works](https://github.com/Wox-launcher/Wox)**
>
> A cross-platform launcher that simply works

---

<div class="post-metadata">

### 作者： ![gotcha0](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/g/aca169/32.png) [@gotcha0](https://meta.appinn.net/u/gotcha0)
#### 发布日期： [2024 年10 月 6 日 06:00 UTC](https://meta.appinn.net/t/topic/61688/5 "2024-10-06T06:00:58Z")

</div>

现在不支持，但是你说的这个点子太好了，我这会就加上去。

---

<div class="post-metadata">

### 作者： ![gotcha0](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/g/aca169/32.png) [@gotcha0](https://meta.appinn.net/u/gotcha0)
#### 发布日期： [2024 年10 月 6 日 06:01 UTC](https://meta.appinn.net/t/topic/61688/6 "2024-10-06T06:01:15Z")

</div>

这个后面考虑做成可自定义字符+快捷键吧，按照个人习惯设置会更好。

---

<div class="post-metadata">

### 作者： ![ssln](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/ssln/32/56538_2.png) [@ssln](https://meta.appinn.net/u/ssln)
#### 发布日期： [2024 年10 月 7 日 05:04 UTC](https://meta.appinn.net/t/topic/61688/7 "2024-10-07T05:04:31Z")

</div>

感觉很不错，不过我用了quicker+listary 很多功能倒是也能实现
