Skip to content

sasa935/WinMate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WinMate

把 Windows 的肌肉记忆带到 macOS。常驻菜单栏,不占 Dock。

下载:最新发布 · 仅限 macOS · MIT 开源

功能

1. Finder 里的 Windows 式剪切 / 返回上级

在访达里(包括桌面):

  • ⌘X —— 剪切选中的文件 / 文件夹
  • ⌘V —— 粘贴,直接移动过去,而不是复制一份
  • ⌘C —— 仍然是普通复制
  • (退格)—— 返回上一级文件夹(等同 ⌘↑),像 Windows 资源管理器

原理:macOS 的 Finder 本来就支持「⌘C 复制 + ⌘⌥V 移动到此处」,只是 没有 ⌘X。WinMate 把 ⌘X 翻译成 ⌘C 并记一个「剪切」标记,下一次 ⌘V 自动按成 ⌘⌥V;单按 则翻译成 ⌘↑。正在重命名文件、或在搜索框 里打字时一律不拦截(退格照常删字符),⌘⌫(移到废纸篓)也不受影响。

这几个键共用同一个开关(菜单栏「Finder 剪切粘贴」)和「辅助功能」权限; 关掉那个开关,剪切和返回上级都会一起停。

菜单栏图标:平时是窗口图标,有文件「待移动」时变成剪刀 ✂︎。

2. ⌥E —— 一键跳到 Developer 文件夹并整理窗口

⌥E 直接跳到最常用的 ~/Developer 文件夹,并把窗口调成最常用的样子 —— 列视图 (Column View) + 铺满屏幕:

  • 若 Finder 没开窗口,自动新开一个;有窗口就把当前最前窗口切到 ~/Developer
  • 不进 macOS 全屏,菜单栏照常显示,只是把窗口拉到铺满可用区域(避开菜单栏和 Dock)
  • 首次按会弹一个「WinMate 想要控制 Finder」的窗口,点一次 OK,以后都是静默执行

想换成别的文件夹,改 Sources/WinMate/FinderArrangeController.swift 里的 folder "Developer" of home(比如换成 folder "Documents" of home)。

3. ⌥R —— 最大化当前窗口(像 Win+↑)

⌥R当前最前面的窗口拉到铺满屏幕可用区域(避开菜单栏和 Dock), 不进 macOS 全屏。对任意 App 都管用——用辅助功能 API 实现,不挑 App、不依赖 脚本支持。

需要「辅助功能」权限(和 Finder 剪切粘贴是同一个,授权一次都生效)。

4. ⌥S —— 所有窗口总览(Mission Control)

⌥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
  1. 菜单栏出现一个窗口小图标。
  2. Finder 剪切粘贴需要「辅助功能」权限:
    • 首次启动会自动弹出授权窗口;也可以点菜单栏图标 →「开启辅助功能权限」。
    • 系统设置 → 隐私与安全性 → 辅助功能 里把 WinMate 打开。
    • 授权后几秒内自动生效,无需重启。若没反应,退出再打开一次即可。
  3. ⌥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_TkVK_F1
  • optionKey 换成 cmdKey / controlKey / shiftKey,可组合: UInt32(optionKey | cmdKey)

改完重新 ./build.sh

已知限制

  • 注册 ⌥E / ⌥R / ⌥S 后,这几个组合不再产生原本的字符(´ 锐音符号、®、ß)。
  • ⌥R 最大化只对能被「辅助功能」移动 / 缩放的窗口生效;少数固定尺寸的窗口或对话框不响应。
  • 返回上级只在访达、且不在重命名 / 搜索时生效;极冷门情况(正用首字母快速定位时按退格)会变成回上层而不是删定位字符。
  • 剪切粘贴依赖 Finder 的「移动到此处」。
  • 在别的 App 里复制了非文件内容后再到 Finder 粘贴,剪切标记会自动取消。

维护者:发布签名 + 公证版本

让别人下载后能零警告安装,需要用 Developer ID 签名并经过苹果公证。 一次性准备(都需要付费开发者会员 + 你本人登录 Apple 账号):

  1. 建 Developer ID Application 证书:Xcode → Settings → Accounts → 选中团队 → Manage Certificates → 左下 +Developer ID Application。建完用 security find-identity -v -p codesigning 应能看到它。
  2. 存公证凭证(profile 名固定用 winmate-notary):先到 https://appleid.apple.com → 登录与安全 → App 专用密码,生成一个;再运行:
    xcrun notarytool store-credentials winmate-notary \
        --apple-id "你的 Apple ID 邮箱" \
        --team-id  "你的 Team ID" \
        --password "刚生成的 App 专用密码"
    (Team ID 在签名身份的括号里,也可在 developer.apple.com 账户 → Membership 查到。)

准备好后,每次发版只要:

./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。若设过开机启动,先在菜单里关掉。

About

把 Windows 肌肉记忆带到 macOS 的菜单栏小工具:Finder 剪切粘贴 + 退格返回上级、⌥E/⌥R/⌥S。A menu-bar app bringing Windows-style shortcuts to macOS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors