把 Windows 的肌肉记忆带到 macOS。常驻菜单栏,不占 Dock。
下载:最新发布 · 仅限 macOS · MIT 开源
在访达里(包括桌面):
⌘X—— 剪切选中的文件 / 文件夹⌘V—— 粘贴,直接移动过去,而不是复制一份⌘C—— 仍然是普通复制⌫(退格)—— 返回上一级文件夹(等同⌘↑),像 Windows 资源管理器
原理:macOS 的 Finder 本来就支持「⌘C 复制 + ⌘⌥V 移动到此处」,只是
没有 ⌘X。WinMate 把 ⌘X 翻译成 ⌘C 并记一个「剪切」标记,下一次
⌘V 自动按成 ⌘⌥V;单按 ⌫ 则翻译成 ⌘↑。正在重命名文件、或在搜索框
里打字时一律不拦截(退格照常删字符),⌘⌫(移到废纸篓)也不受影响。
这几个键共用同一个开关(菜单栏「Finder 剪切粘贴」)和「辅助功能」权限; 关掉那个开关,剪切和返回上级都会一起停。
菜单栏图标:平时是窗口图标,有文件「待移动」时变成剪刀 ✂︎。
按 ⌥E 直接跳到最常用的 ~/Developer 文件夹,并把窗口调成最常用的样子 —— 列视图 (Column View) + 铺满屏幕:
- 若 Finder 没开窗口,自动新开一个;有窗口就把当前最前窗口切到
~/Developer - 不进 macOS 全屏,菜单栏照常显示,只是把窗口拉到铺满可用区域(避开菜单栏和 Dock)
- 首次按会弹一个「WinMate 想要控制 Finder」的窗口,点一次 OK,以后都是静默执行
想换成别的文件夹,改 Sources/WinMate/FinderArrangeController.swift 里的 folder "Developer" of home(比如换成 folder "Documents" of home)。
按 ⌥R 把当前最前面的窗口拉到铺满屏幕可用区域(避开菜单栏和 Dock),
不进 macOS 全屏。对任意 App 都管用——用辅助功能 API 实现,不挑 App、不依赖
脚本支持。
需要「辅助功能」权限(和 Finder 剪切粘贴是同一个,授权一次都生效)。
按 ⌥S 唤出 Mission Control —— 就是触控板四指上滑那个「所有窗口铺开、
挑一个」的总览。合盖接显示器、没有触控板手势可用时,用键盘一键叫出来。
底层是唤起系统自带的 Mission Control,不需要额外权限。
- macOS 14 或更新
- 从源码构建需要 Xcode / Swift 工具链
到 Releases 下载最新的 WinMate.dmg,打开后把 WinMate 拖进
应用程序(Applications)。
⚠️ 当前发布的是未公证的预览版:第一次打开会被 macOS 拦住(提示「无法验证 是否包含恶意软件」)——这是因为还没用 Developer ID 签名 + 苹果公证,不是病毒。 放行方式二选一:
- 图形界面:双击被拦后,打开 系统设置 → 隐私与安全性,翻到底部点 「仍要打开」,再确认一次即可(以后不再拦)。
- 终端一行:
xattr -dr com.apple.quarantine /Applications/WinMate.app,之后正常打开。等签名 + 公证版本发布后,双击即可安装、零警告。
./build.sh生成同目录下的 WinMate.app。脚本会自动用钥匙串里的开发者证书签名(并开启
Hardened Runtime)。打包成 DMG:./make-dmg.sh。
open WinMate.app- 菜单栏出现一个窗口小图标。
- Finder 剪切粘贴需要「辅助功能」权限:
- 首次启动会自动弹出授权窗口;也可以点菜单栏图标 →「开启辅助功能权限」。
- 在 系统设置 → 隐私与安全性 → 辅助功能 里把 WinMate 打开。
- 授权后几秒内自动生效,无需重启。若没反应,退出再打开一次即可。
⌥E整理 Finder 首次使用会弹「WinMate 想要控制 Finder」,点一次 OK 即可。
- 整理 Finder 窗口 —— 等同
⌥E - 最大化当前窗口 —— 等同
⌥R - 所有窗口总览 —— 等同
⌥S - Finder 剪切粘贴 —— 临时开关此功能
- 开机时自动启动
- 退出 WinMate
Sources/WinMate/AppDelegate.swift 里这几行(⌥E / ⌥R / ⌥S 各一行):
HotKey(keyCode: UInt32(kVK_ANSI_E), modifiers: UInt32(optionKey)) { … }kVK_ANSI_E换成别的键,例如kVK_ANSI_T、kVK_F1。optionKey换成cmdKey/controlKey/shiftKey,可组合:UInt32(optionKey | cmdKey)。
改完重新 ./build.sh。
- 注册
⌥E/⌥R/⌥S后,这几个组合不再产生原本的字符(´ 锐音符号、®、ß)。 ⌥R最大化只对能被「辅助功能」移动 / 缩放的窗口生效;少数固定尺寸的窗口或对话框不响应。⌫返回上级只在访达、且不在重命名 / 搜索时生效;极冷门情况(正用首字母快速定位时按退格)会变成回上层而不是删定位字符。- 剪切粘贴依赖 Finder 的「移动到此处」。
- 在别的 App 里复制了非文件内容后再到 Finder 粘贴,剪切标记会自动取消。
让别人下载后能零警告安装,需要用 Developer ID 签名并经过苹果公证。 一次性准备(都需要付费开发者会员 + 你本人登录 Apple 账号):
- 建 Developer ID Application 证书:Xcode → Settings → Accounts → 选中团队
→ Manage Certificates → 左下
+→ Developer ID Application。建完用security find-identity -v -p codesigning应能看到它。 - 存公证凭证(profile 名固定用
winmate-notary):先到 https://appleid.apple.com → 登录与安全 → App 专用密码,生成一个;再运行:(Team ID 在签名身份的括号里,也可在 developer.apple.com 账户 → Membership 查到。)xcrun notarytool store-credentials winmate-notary \ --apple-id "你的 Apple ID 邮箱" \ --team-id "你的 Team ID" \ --password "刚生成的 App 专用密码"
准备好后,每次发版只要:
./release.sh # 构建 → 公证 → 盖章 → 打包 DMG → 公证 DMG
gh release create v1.0.0 WinMate.dmg \
--title "WinMate v1.0.0" --notes "更新说明…"build.sh 一旦检测到 Developer ID 证书,会自动改用它签名。
退出 App,删除 WinMate.app。若设过开机启动,先在菜单里关掉。