Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EInkCapture:Mac 墨水屏截图投送工具

一个面向个人学习与日常阅读的 macOS 小工具:按一次快捷键,拖出与墨水屏一致的固定比例截图,松开鼠标后自动把截图全屏显示到已连接的 2:1 墨水屏。

当前状态

  • 版本:0.1.0
  • 已验证环境:macOS、Hammerspoon 1.1.1、macshot 4.2.1
  • 已验证显示器:P6Y2,竖屏 900×1800
  • 截图比例:根据目标屏方向自动设为 1:22:1
  • 无 2:1 显示器时:不启动截图,也不投送

操作

  1. 连接比例为 2:1 的墨水屏。
  2. ⌃⌥⌘2
  3. 拖动固定比例选框。
  4. 松开鼠标,截图自动全屏显示到墨水屏。

清除投送画面:⌃⌥⌘Esc

依赖

  • Hammerspoon:快捷键、显示器识别、剪贴板轮询和全屏画布。
  • macshot:固定比例区域截图,并把结果复制到剪贴板。

使用 Homebrew 安装:

brew install --cask hammerspoon
brew install --cask macshot

首次启动 macshot 后,在“系统设置 → 隐私与安全性 → 屏幕与系统音频录制”中允许 macshot。

安装配置

如果 ~/.hammerspoon/init.lua 没有其他自定义内容,可直接运行:

chmod +x install.sh
./install.sh

安装脚本会先备份已有配置,再安装本项目的配置。若已有复杂的 Hammerspoon 配置,建议手动合并 hammerspoon/init.lua

工作原理

  1. Hammerspoon 查找长边/短边约为 2.0 的现有显示器,并优先选择非主屏。
  2. 找到目标后,根据屏幕方向写入 macshot 的固定截图比例。
  3. macshot 完成截图并复制到剪贴板。
  4. 截图期间临时轮询剪贴板;读到图片后立即停止轮询。
  5. Hammerspoon 在目标屏创建最高层级画布并显示截图。
  6. 只有画布显示期间才创建屏幕变化监听器;显示器拓扑发生任何变化时立即删除画布并释放监听器。

空闲状态下没有常驻屏幕或剪贴板监听器。

拔掉显示器时的保护

早期版本在拔掉墨水屏后,macOS 会把最高层级画布迁移到 MacBook 主屏,而屏幕监听器可能已经被回收,导致画面遮住主屏。

当前版本改为按需生命周期:

  • 投送前不创建屏幕监听器;
  • 画布显示时临时保留监听器;
  • 任何显示器变化都会无条件清除画布;
  • 清除画布时同步停止并释放监听器。

紧急清除命令:

/opt/homebrew/bin/hs -c 'EInkCapture.hide()'

诊断

查看目标显示器和运行状态:

/opt/homebrew/bin/hs -c 'local s=EInkCapture.status(); local t=EInkCapture.target(); return hs.inspect({target=t,status=s})'

关键状态:

  • target=nil:当前没有 2:1 显示器。
  • showing=true:投送画布正在显示。
  • monitoringOutputScreen=true:临时拔屏保护正在工作。
  • armed=true:正在等待本次截图进入剪贴板。

文件

  • hammerspoon/init.lua:核心配置。
  • install.sh:带备份的本地安装脚本。
  • LICENSE:本项目脚本采用 MIT License;Hammerspoon 和 macshot 仍遵循各自许可证。

About

One-hotkey 2:1 screenshot delivery from macOS to an e-ink display using Hammerspoon and macshot.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages