All your tools, one place
OmniKit 是一款基于 Tauri 2 的跨平台(macOS / Windows)桌面工具集,将 快开(QuickOpen) 与 GIF 合成器 整合在同一应用中。左侧导航可一键切换模块,数据与功能彼此独立。
| 模块 | 说明 |
|---|---|
| 快开 | 记录高频文件/文件夹,卡片式展示,一键打开、右键定位 |
| GIF 合成器 | 多图合成 GIF、录屏转 GIF、本地视频转 GIF |
将工作与生活中高频使用、但容易忘记路径的文件或文件夹统一收录,以卡片瀑布流展示,支持一键打开与右键在访达/资源管理器中定位。
- 原生体验:Tauri v2 构建,体积小、内存占用低
- 智能图标:内置常见格式图标,无需截图也能辨识类型
- 极简交互:
- 左键:用系统默认程序打开
- 右键:在文件管理器中定位并高亮
- 悬浮删除:仅从库中移除记录,不删除源文件
- 搜索与排序:按名称或路径模糊搜索,支持按时间/名称排序
- 分类过滤:左侧按文件类型分组,点击即可筛选
- 拖拽添加:将文件或文件夹拖入窗口即可入库
- 纯本地:记录存于本机 SQLite,不联网
图片、视频、音频、压缩包、磁盘镜像、应用程序、脚本、电子表格、幻灯片、文档、产品与设计、数据库、配置文件、代码文件、字体等;未匹配格式归入其他文件。
基于 Vite + TypeScript,在 macOS 与 Windows 上可将多张图片合成 GIF,也可录屏或上传短视频转 GIF 并保存到本地。
- 选择多张本地图片(PNG / JPEG / GIF / WebP / BMP)
- 列表支持拖拽排序,或用「上移 / 下移」微调
- 设置每帧间隔(毫秒),循环播放
- 画布以第一张图为基准,其余图等比缩放并居中铺白底
- 系统对话框选择路径导出
.gif - 录屏转 GIF:通过 FFmpeg 抓屏(avfoundation / gdigrab / x11grab);最长 60 秒、无水印;选区基于一张静态屏幕快照框选
- 视频转 GIF:通过 FFmpeg 解码任意常见视频格式(MP4 / M4V / MOV / AVI / MKV / WebM / FLV / WMV / TS 等),时长最长 60 秒
- GIF 每帧经颜色量化,体积与观感会有折中
- FFmpeg:录屏与视频转 GIF 由 Rust 端通过 ffmpeg-sidecar 启动 FFmpeg 子进程完成。
- 首次下载 ffmpeg:未带二进制启动时,
ffmpeg-sidecar会自动从 GitHub Release 下载约 80MB 的静态构建。也可手动npm run ffmpeg:download提前下载。 - 把 ffmpeg 打进安装包(避免下载):
npm run ffmpeg:download:all(或单独npm run ffmpeg:download -- --target=macos-arm64等)把三平台 ffmpeg 静态构建下载到resources/ffmpeg/。npm run tauri:build时 Tauri 会自动把resources/ffmpeg/*拷到应用内(macOS:*.app/Contents/Resources/_up_/ffmpeg/,Windows:resources/ffmpeg/)。- 应用启动时
src-tauri/src/lib.rs的locate_bundled_ffmpeg会优先找到内嵌二进制,写入FFMPEG_PATH环境变量,ffmpeg_export::ensure_ffmpeg优先使用之;找不到时回退到ffmpeg-sidecar自动下载。
- 录屏平台差异:
- macOS:使用
avfoundation,录屏与系统录音需在「隐私与安全性」中允许本应用;屏幕设备索引默认1(若失败可手动调整src-tauri/src/ffmpeg_export.rs)。 - Windows:使用
gdigrab抓 desktop,无需额外配置。 - Linux:使用
x11grab,需安装xdg-desktop-portal与 xcb 库。
- macOS:使用
- 视频转 GIF使用 FFmpeg 解码,支持几乎所有常见格式(不再受 WebView 解码能力限制):MP4、M4V、MOV、AVI、MKV、WebM、FLV、WMV、MPEG、TS、M2TS、3GP、OGV 等。
- 底层:Tauri v2(Rust)
- 前端:React 19 + Vite + TypeScript
- UI:Tailwind CSS v3 + Lucide React
- 快开存储:SQLite(
rusqlite) - GIF 编码:Rust
gif/image+ 前端gifenc
- Node.js >= 18
- Rust >= 1.70(通过 rustup 安装)
- 系统构建环境:
- macOS:Xcode Command Line Tools(
xcode-select --install) - Windows:Visual Studio Build Tools(含 MSVC)+ WebView2
- macOS:Xcode Command Line Tools(
macOS / Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
cargo --versionWindows: 从 rustup.rs 安装,或使用 winget install Rustlang.Rustup。
git clone https://github.com/mango-Yu/omnikit.git
cd omnikit
npm install
npm run tauri:dev # 开发(热更新)
npm run tauri:build # 本地打包安装包输出目录:src-tauri/target/release/bundle/(macOS:.app / .dmg;Windows:.exe 等,依配置而定)。
首次 tauri dev 会编译 Rust 依赖,可能需要数分钟;之后启动会快很多。
推送符合 v* 的版本 tag 后,会自动触发 .github/workflows/release.yml,每次只产出两个安装包:
| 平台 | 产物 |
|---|---|
| macOS | 一个通用 .dmg(universal,Intel / Apple Silicon 均可) |
| Windows | 一个 NSIS 安装包 .exe |
产物会上传到对应 tag 的 GitHub Release。打开 Releases(不是 Tags)即可下载 .dmg / .exe。
Tags 页里的
Source code (zip/tar.gz)只是源码压缩包,不是安装包。安装包只出现在 Releases 的 Assets 里。
- 三个文件的版本号保持一致:
package.jsonsrc-tauri/tauri.conf.jsonsrc-tauri/Cargo.toml
- 功能在本地验证通过:
npm run tauri:build - 相关改动已合并到
main并推送到远程
先确保功能改动已提交,工作区干净,然后:
npm run release -- 0.1.1脚本会自动:同步三处版本号 → 提交 → 推送 → 打 v0.1.1 tag → 触发 CI 打包。
常用选项:
npm run release -- 0.1.1 --dry-run # 只预览,不执行
npm run release -- 0.1.1 --yes # 跳过确认
npm run release -- 0.1.1 --no-push # 只本地提交+打 tag
npm run release -- 0.2.0-beta.1 # 预发布若不用脚本,版本号示例以 0.1.0 为例(tag 必须带 v 前缀):
git checkout main && git pull
git tag -a v0.1.0 -m "release: v0.1.0"
git push origin v0.1.0预发布可用带连字符的 tag,例如 v0.2.0-beta.1(CI 会标记为 prerelease)。
- 打开仓库 Actions,确认
Release工作流全部变绿 - 打开 Releases(侧边或仓库首页右侧),检查 Assets 是否包含:
OmniKit_*_universal.dmgOmniKit_*-setup.exe
- 不要到 Tags 页找安装包(那里只有源码压缩包)
若某次没挂上安装包,可在 Actions 里手动运行 Release,填写已存在的 tag(如 v0.1.0)重新打包上传。
若 CI 报 Resource not accessible by integration,到仓库 Settings → Actions → General → Workflow permissions,勾选 Read and write permissions。
若不希望提交信息中出现 Cursor 自动署名,可启用仓库钩子(仅需一次):
git config core.hooksPath .githooks从网上下载的未签名应用可能触发 Gatekeeper。在信任来源的前提下,对 .app 执行:
xattr -cr "/Applications/OmniKit.app"也可在 Finder 中右键 → 打开 → 打开。路径请按实际安装位置调整。
快开
- 拖拽添加
- 分类标签系统
- 全局快捷键(如读取剪贴板路径)
- 剪贴板截图作为卡片封面
- 多端同步
GIF 合成器
- 多图合成、录屏转 GIF、视频转 GIF
- 视频转 GIF 改用 FFmpeg(支持 MP4 / MOV / AVI / MKV / WebM 等所有常见格式)
- 录屏改用 FFmpeg(脱离浏览器 getDisplayMedia)
- 视频转 GIF / 录屏 实时进度事件(
video-to-gif-progress/record-progress) - 录屏实时预览:3 FPS 持续刷新,框选时画面不再冻结
- FFmpeg 静态构建打包进安装包(
npm run ffmpeg:download:all)
见仓库根目录(如有)。图标替换可使用:
npx tauri icon ./your-icon.png





