安全摸鱼

👤 user_35fb3d31 📦 v1.0.1 ⭐ 4.4 ⬇️ 72 下载
🏠 生活服务 免费

📖 技能介绍


name: 安全摸鱼 description: 在电脑桌面中,将 Codex、IDE 等工作软件放在主要显示区域;把小说、微信、网页等内容放在次要显示区域。鼠标进入某个次要区域时,只展示该区域对应的窗口;移开后立即收起,只留下工作区域,减少被他人看到的机会。使用 Hammerspoon 配置和调试。


安全摸鱼

在电脑桌面中,将 Codex、IDE 等工作软件放在主要显示区域;把小说、微信、网页等内容放在次要显示区域。鼠标进入某个次要区域时,只展示该区域对应的窗口;移开后立即收起,只留下工作区域,减少被他人看到的机会。使用 Hammerspoon 配置和调试。

具体流程:

小葱技能站7w4.net,专业的AI技能分享平台。

  1. 帮助或提示用户安装Hammerspoon并配置好辅助功能权限
  2. 用户先将主区域、副区域对应的窗口排放好,配合AI生成好lua脚本,完成窗口区域识别
  3. 完成配置后,鼠标移到副区域(摸鱼)就显示摸鱼窗口,移开就消失

先确认需求

在改 ~/.hammerspoon/init.lua 前,确认:

  • 哪些窗口始终显示,哪些是可收起窗口;每个可收起窗口对应的区域。
  • 用“停放到屏幕边缘”模拟隐藏,还是接受最小化/整应用隐藏。单窗口且不要 Dock 动画时,优先停放。
  • 显示是否要延迟、是否要求鼠标在小范围内静止、离开是否立即收起、恢复后是否置顶。
  • 是否有多显示器、窗口是否固定布局、以及登记方式(标题、窗口 ID、菜单重新识别或快捷键)。

不要把同一应用的多个窗口用 app:hide() 处理;它会同时隐藏该应用的所有窗口。

实施流程

  1. 读取现有 ~/.hammerspoon/init.lua,保留无关配置。确认 Hammerspoon 已获“辅助功能”权限。
  2. 先建模:每个 slot 保存 windowID、原始 frameparked 和悬停等待状态。原始 frame 同时是恢复位置与感应区。
  3. 登记窗口时,优先按用户安排后的屏幕几何位置;若自动识别,限定目标屏幕、上/下分区,并排除覆盖整列的背景窗口。标题会变化,不能作为唯一标识。
  4. hs.timer.doEvery() 轮询鼠标,并将返回的 timer 保存到状态表中;未保留引用的 timer 可能被垃圾回收而停止。
  5. 停放时使用 window:setFrame(frame, 0),恢复时同样使用零时长;恢复后调用 window:raise()
  6. 菜单栏提供“重新识别”“暂停并恢复”操作;重新加载配置前恢复已停放窗口。
  7. 按“验证”执行;出现异常先添加只读诊断,不要猜测修复。

读取 references/patterns.md 获取可复用 Lua 结构、延迟状态机、多屏停放和故障排查模式。

验证

使用 require("hs.ipc") 后,执行:

hs -c 'assert(loadfile(os.getenv("HOME") .. "/.hammerspoon/init.lua")); print("Lua syntax OK")'
hs -c 'hs.reload()'

然后手动验证每个 slot:

  1. 区域外:窗口停放且无 Dock 最小化动画。
  2. 区域内静止到指定延迟:窗口恢复并位于最顶层。
  3. 立即移出已显示窗口:窗口立即停放。
  4. 暂停菜单:所有受控窗口恢复,其他窗口不变。

若“能停放但无法恢复”,优先检查 timer 是否有强引用、鼠标坐标是否进入保存的原始 frame、slot 的 windowID 是否仍有效。若“停放后跑到另一块屏幕”,按全部显示器边界计算停放位置。

🤖 AI 评测

这个 Skill 质量中等偏上。它提供了实用的窗口隐藏方案,能在检测到鼠标进入特定区域时自动显示摸鱼窗口,移开后立即收起,隐私保护思路明确。SKILL.md 步骤清晰,容易上手;但提供的实际代码模式偏少,用户需要自己编写完整脚本才能使用。适合有 Hammerspoon 使用经验的用户,对新手不太友好。整体而言是一个有创意的概念验证型 Skill,仍需完善示例和文档以提升可用性。

📊 多维度评分

适应性4.4
规范性4.4
有效性4.4
可靠性4
可信度5

📁 包含文件 (2 个)

📄 SKILL.md 3.4 KB
📄 references/patterns.md 3.1 KB