【Code With SOLO】用SOSO开发了一款MacOS Dock栏增强应用,可使用鼠标滚轮快速退出APP

MiddleQ - MacOS Dock栏增强工具

MiddleQ可实现鼠标中键点击Dock栏APP图标退出该APP;左键双击APP图标显示其的App Exposé。
当前版本:v1.7.0 | 系统要求:macOS 13.0+


:glowing_star: 特性亮点

  • :high_voltage: 中键秒退: 在 Dock 上中键(滚轮)点击已启动的应用图标即可快速退出,无需右键菜单。
  • :open_file_folder: 双击Exposé: 连续左键点击 Dock 图标两次,可快速触发该应用的 App Exposé 视图,方便在多窗口间切换。
  • :rocket: 开机自启: 支持开机自动启动,基于现代的 SMAppService 架构(macOS 13.0+)。
  • :laptop: 双架构支持: Universal Binary 同时支持 Intel 和 Apple Silicon。
  • :leaf_fluttering_in_wind: 轻量级: 菜单栏常驻,资源占用极低。

:open_book: 核心原理

MiddleQ 结合了 macOS 底层的 辅助功能 (Accessibility)事件监听 (Event Tap) 机制:

  • 全局监听: 启动后创建一个全局事件监听器,捕获鼠标中键(Button 2)和左键双击事件。
  • 精准定位: 利用坐标定位与辅助功能 API 识别鼠标下的 Dock 项目 (AXDockItem) 及其标题。
  • Spotlight 辅助: 通过 kMDItemDisplayNamekMDItemCFBundleIdentifier 等元数据,建立更可靠的“图标标题 - Bundle ID”映射关系。
  • 动态响应:
    • 中键点击: 向目标进程发送退出指令。
    • 左键双击: 通过系统指令触发 App Exposé,展示该应用的所有窗口。

:gear: 配置管理

连接名称与身份的桥梁

有些应用在 Dock 上显示的名称(如"Visual Studio Code")与其真实的身份标识(Bundle ID)并不一致,此时使用默认的"名称匹配进程"的方式便会失效。为了解决这个"对不上号"的问题,MiddleQ 引入了一套映射系统。

它的作用

配置系统主要充当 “翻译官”。当自动扫描无法准确关联应用图标与运行进程时,你可以通过配置管理界面,手动告诉 MiddleQ:“看到 A 这个名字,请退出 B 这个程序”。

工作原理

  1. 自动初始化: 软件在启动时会自动扫描你系统中的 /Applications 目录和 ~/Applications 目录 ,将大多数应用的名称与它们的唯一身份标识(Bundle ID)建立初步映射。
  2. 配置优先: 然后软件会加载配置文件中的映射关系,其优先级高于软件自动扫描的结果。
  3. 动态更新: 当你通过配置界面修改配置后,MiddleQ会自动保存并加载新的映射。

配置管理界面

现在,你可以通过图形化界面轻松管理应用映射:

  1. 点击菜单栏图标 > “手动添加配置”

  2. 在打开的配置窗口中,你可以:

    • 添加映射:点击"添加"按钮,输入应用名称(:warning:注意:这里一定要输入Dock栏中实际显示的应用名称)和Bundle ID,或直接拖放应用程序到输入区域自动获取信息
    • 删除映射:选中要删除的映射,点击"删除"按钮
    • 查看现有映射:配置窗口会显示当前所有的应用映射关系
    • 打开配置文件夹:打开配置文件夹查看配置文件,配置文件为json格式,编辑保存后会被自动加载

配置文件位置

配置数据存储在以下位置:

~/Library/Application Support/MiddleQ/config.json

:light_bulb: 提示: 大多数应用的映射关系已被自动扫描添加,仅在特殊情况下需要手动配置。

:memo: 注意: 虽然配置文件仍然存在,但现在推荐通过图形化配置界面进行管理,无需手动编辑JSON文件。


:package: 安装

方法一:下载预编译版本(推荐)

  1. Releases 页面下载最新的 .dmg 文件
  2. 双击打开 DMG 文件
  3. MiddleQ.app 拖拽到 Applications 文件夹
  4. 首次运行时系统会提示辅助权限授权与通知授权
    • 辅助权限:为了在鼠标中键点击Dock应用图标时,获取图标的标题
    • 通知权限:为了在修改完配置文件并加载成功时能有所体现

方法二:源码编译

# 克隆仓库
git clone https://github.com/yourusername/MiddleQ.git
cd MiddleQ

# 授权脚本可执行权限
chmod +x build.sh
chmod +x package_dmg.sh

# 编译应用(如果需要自定义版本号,可以先修改version.txt中的版本号,执行脚本会自动同步到应用配置)
./build.sh

# 打包为 DMG(可选)
./package_dmg.sh

编译产物:

  • MiddleQ.app - 拖动到应用程序目录即可直接运行的应用
  • MiddleQ_v1.3.0.dmg - 安装包(用于分发)

:rocket: 使用方法

菜单栏功能

点击菜单栏的 :computer_mouse: 图标可以访问以下功能:

功能 快捷键 说明
开机自动启动 - 开启/关闭开机自启动
双击显示窗口 - 开启/关闭双击 Dock 图标触发 App Exposé
中键退出应用 - 开启/关闭中键点击 Dock 图标退出应用
重新加载映射 ⌘R 软件启动后新安装的应用如果无效时,可点击此功能进行重新加载
手动添加配置 ⌘C 打开图形化配置界面,可添加或删除应用映射
查看日志 ⌘L 打开日志文件夹,查看日志
退出 MiddleQ ⌘Q 完全退出应用

:locked: 安全性和权限

  • 辅助功能权限:用于监听鼠标事件及获取 Dock 元素信息。
  • 通知权限:用于在配置文件自动加载成功时提醒用户。
  • 隐私承诺:white_check_mark: 零数据收集 | :white_check_mark: 零网络连接 | :white_check_mark: 完全开源

:page_facing_up: 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。


:telephone_receiver: 联系方式

如有问题或建议,请通过以下方式联系:


Made with ❤️ for macOS users
版本:1.7.0 | 最后更新:2026-04-12

MTC 还是 CWS 模式开发的??感觉挺好

1 个赞

最早是使用各种AI混杂着开发的,这两天使用Trea SOLO后使用CWS继续开发新功能,感觉挺好用