feat(macOS): 支持全屏应用覆盖显示、跨显示器拖拽及隐藏 Dock 图标#12
Conversation
通过运行时 object_setClass 将窗口提升为 NSPanel 子类,启用 NonactivatingPanel style mask,这是 macOS 10.14 以来唯一能让 窗口浮在全屏应用之上的方式。同时设置 CanJoinAllSpaces + FullScreenAuxiliary + Stationary collectionBehavior 和 NSScreenSaverWindowLevel 窗口层级。拖拽范围改为所有显示器的 联合包围盒以支持跨屏拖拽。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
设置 ActivationPolicy::Accessory 隐藏 Dock 上的应用图标, 桌面宠物通过系统托盘图标进行交互和管理。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
使用 CoreGraphics CGEvent 获取全局鼠标坐标,替代前端 screenX * devicePixelRatio 的方式,避免跨不同 DPI 显示器 拖拽时坐标缩放不一致的问题。同时在 hit 窗口添加 setPointerCapture,防止快速拖拽时 pointer 事件丢失。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
在宠物窗口左上角始终显示最多3条任务,右键菜单「编辑任务」 打开编辑面板,支持添加、编辑、删除任务。任务存储在 ~/.clyde/tasks.json,通过 Tauri events 实时同步到宠物窗口。 同时添加二次开发交接文档 INTEGRATION.md。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
删除无法接收事件的 tasks 独立窗口方案,改用右键菜单子菜单 + osascript 原生对话框编辑任务。弹框前临时切换 ActivationPolicy 到 Regular 使输入法正常工作,关闭后切回 Accessory。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
感谢你的贡献!macOS 全屏覆盖和跨显示器拖拽是很有价值的功能。以下是详细的 review 意见: 🔴 需要修复(阻塞合并)1. Windows/Linux 置顶回归
建议:保持 2. PR 范围过大 — 建议拆分这个 PR 混合了三组独立功能:
建议拆为至少两个 PR:
3.
|
概述
object_setClass将 pet/hit 窗口提升为 NSPanel 子类,启用NSWindowStyleMaskNonactivatingPanel— 这是macOS 10.14 以来能让窗口浮在全屏应用之上的方式
CanJoinAllSpaces | FullScreenAuxiliary | StationarycollectionBehavior,使宠物出现在所有 Space(包括全屏Space 和外接显示器)
NSScreenSaverWindowLevel(1000),确保在全屏应用内容之上ActivationPolicy::Accessory隐藏 Dock 图标,通过托盘图标管理应用测试计划
#[cfg]保护)