@tobi: omasnap 更新:自首次分享以来约70个PR,新增多行文本、剪切部分、聚光灯+放大镜、可固定截图等功能
摘要
Omasnap 已更新,包含超过70个PR,新增了多行文本、剪切部分和改进的编辑功能,同时保持其轻量级的800KB二进制文件,适用于Wayland和Hyprland环境。
查看缓存全文
缓存时间: 2026/08/22 09:29
omasnap 更新:自首次分享以来已合并约 70 个 PR
多行文本 | 剪切区块 | 聚光镜+放大镜 | 跨工作区可固定截图 | 真正安全的涂黑 | 可编辑矢量标注 | OCR | 防崩溃撤销 | 原生 Wayland 捕获
仍然是单一 800KB、快得离谱的二进制文件。QT 非常出色。
https://github.com/tobi/omasnap
tobi/omasnap
来源:https://github.com/tobi/omasnap
Omasnap
一款为 Omarchy 和 Hyprland 设计的原生 Wayland 截图与标注覆盖层。它会在映射独占 layer-shell 表面前捕获聚焦的显示器,因此编辑器永远不会出现在自己的截图中。编辑器将标注保留为可移动、可缩放的矢量图层,并在缩放显示器上保留监视器的原始像素。
功能特性
- 自由选择区域、窗口和全屏显示器捕获模式。
- 指针侧读数:将任何拖动变为标尺。十字准星空闲时显示指针位置;调整区域、悬停窗口或裁剪手柄大小时,显示原生导出像素的框架尺寸。
- 窗口捕获是对聚焦显示器框架的裁剪。重叠的窗口保持可见;无需第二次重新捕获干净窗口。
- 选择/移动/调整图层大小、鼠标滚轮缩放以及八个外部重裁剪手柄。
- 箭头、直线、平滑的手绘笔触、半透明荧光笔笔触、空心或实心矩形(可选圆角)和椭圆、带编号的标记、可编辑的 Neucha 文本(位于可读性标签上)以及安全的涂黑(不透明或随机马赛克输出)。
- 每个图层的预设或自定义颜色(包括荧光笔墨水)、撤销/重做历史、一键全图 OCR、网格渐变背景和渲染的阴影。
- 剪切工具:拖动穿过图像的一条带状区域将其移除并收缩间隙,拖动时提供实时预览和虚线接缝标记;标注会随之移动。
- 将完成的截图固定为右下角的始终置顶图层表面,从同一
omasnap可执行文件启动,并在所有工作区可见。 - 在
/run/user/<uid>/omasnap/下创建防崩溃工作文档(回退到私有/tmp/omasnap-<uid>/):原始源图像加上伴随的 JSON 操作日志。崩溃后或--file重新打开时撤销仍然有效。保存和复制会将普通的扁平化 PNG 写入剪贴板或~/Pictures/Screenshots。 - 通过
wl-copy/wl-paste验证 PNG 剪贴板输出,默认在~/Pictures/Screenshots下生成带时间戳的文件。 - 直接在标注编辑器中打开剪贴板上的图像。
- 在分数或整数缩放显示器上正确导出原生像素。
平台范围
支持的运行环境是 Wayland + Hyprland,主要集成于 Omarchy。渲染器、图层表面、剪贴板和监视器捕获使用 Wayland 协议;监视器/窗口发现当前调用 hyprctl。在层映射之前,聚焦的输出在进程内通过 ext-image-copy-capture 捕获。选择界面显示该捕获帧,而标注编辑器使用覆盖在实时桌面上的半透明图层,仅绘制选定的捕获。其他 Wayland 合成器在提供等效的监视器和窗口发现后可支持该应用程序;1.0 版本不提供通用的 Wayland 支持。
应用程序使用的运行时命令:
hyprctlwl-copy和wl-pastetesseractomarchy-notification-send(如可用);保存的捕获包含缩略图,点击时可在 Omasnap 中重新打开。通知失败不会使输出失效。
在 Omarchy 上安装
克隆仓库并运行 Omarchy 安装程序:
git clone https://github.com/tobi/omasnap.git
cd omasnap
./install-omarchy
安装程序使用 Omarchy 的包助手处理缺失的依赖项,在 ~/.cache/omasnap 中构建,并安装到 ~/.local 下。它不会修改 Hyprland 配置。
Hyprland 绑定
将以下内容粘贴到在 require("default.hypr.omarchy") 之后加载的 Lua 配置中:
hl.unbind("PRINT")
hl.unbind("F12")
hl.unbind("ALT + SHIFT + 4")
o.bind("PRINT", "Screenshot", "omasnap")
o.bind("F12", "Screenshot", "omasnap")
o.bind("ALT + SHIFT + 4", "Screenshot", "omasnap")
hl.layer_rule({
match = { namespace = "^omasnap$" },
no_anim = true,
animation = "none",
no_screen_share = true,
})
每个按键都可切换:第一次按下打开覆盖层,再次按下关闭它。
应用并验证:
hyprctl reload
hyprctl configerrors
hyprctl binds -j | jq -c \
'[.[] | select(.description == "Screenshot") | {modmask,key,description}]'
有意不使用 omarchy plugin add。Omarchy 插件是 Quickshell QML 扩展;它们不安装本机可执行文件或系统包。在运行 install-omarchy 之前设置 OMASNAP_PREFIX 以使用非 ~/.local 的前缀。
手动 Arch Linux 构建
安装完整的构建/运行时依赖集:
sudo pacman -S --needed \
base-devel cmake ninja pkgconf qt6-base layer-shell-qt \
wayland wayland-protocols hyprland wl-clipboard \
tesseract tesseract-data-eng
构建并安装:
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$HOME/.local"
cmake --build build --parallel
cmake --install build
安装步骤将放置:
~/.local/bin/omasnap~/.local/share/applications/omasnap.desktop~/.local/share/licenses/omasnap/Neucha-OFL.txt
确保 ~/.local/bin 在 PATH 上,然后验证已安装的 CLI:
omasnap --version
omasnap --help
CLI 捕获模式
不带参数运行时打开自由区域选择:
omasnap
显式启动模式:
omasnap --capture-region
omasnap --capture-window
omasnap --capture-fullscreen
也接受兼容性位置参数:
omasnap region
omasnap windows
omasnap fullscreen
omasnap smart # 映射到区域选择
这些选项选择初始内容;编辑器仍控制结果是复制、保存还是两者兼有。
快速输出跳过标注编辑器。添加 --copy 仅复制,--save 仅保存,或同时添加两个标志以复制和保存。区域和窗口捕获在选择后输出;全屏捕获立即输出。快速输出不能与 --file、--clipboard 或 --pin 组合使用。
单一实例,由同一热键切换
一次只能运行一个捕获覆盖层,由运行时快照目录中的锁文件守护。在覆盖层打开时启动 omasnap 会向运行实例发送 SIGTERM,其实例通过干净的 Qt 关闭来处理;然后新进程退出而不进行捕获。因此,按下 PRINT 会打开覆盖层,再次按下则关闭它。每次捕获调用都以此方式关闭,快速输出也不例外:在覆盖层打开时 --copy/--save 会关闭覆盖层且不输出任何内容,而不是截取仍在屏幕上的覆盖层。
编辑现有图像时永远不会以此方式取消:--file、--clipboard 或图像路径会停止运行实例,等待锁最多两秒,并在该图像上打开编辑器。这就是固定图的编辑按钮和通知点击始终进入编辑器的方式。崩溃实例遗留的锁会被移除并回收。完全无法读取或写入的锁文件会在 stderr 上报告,而不是被误认为是正在运行的实例。
退出码:
| 代码 | 含义 |
|---|---|
0 | 成功,包括关闭正在运行的覆盖层 |
1 | 捕获、图像或单一实例锁失败 |
2 | 使用错误 |
编辑现有或剪贴板图像
将 omasnap 指向任何可读图像,它会直接进入标注编辑器并选中整个图像,跳过屏幕捕获步骤:
omasnap ~/Pictures/Screenshots/screenshot-2026-08-11_10-00-00.png
# 或
omasnap --file /path/to/capture.png
要打开当前在 Wayland 剪贴板上的图像:
omasnap --clipboard
剪贴板必须提供可读的图像数据。纯文本剪贴板内容会返回错误,而不是打开空编辑器。也接受文件 URL。
保存的捕获通知的“点击编辑”操作会在最终截图上启动 omasnap,以便可以重新打开和重新标注。未保存而复制的捕获不会保留在磁盘上,因此没有延迟的编辑操作。
环境变量覆盖:
OMASNAP_SCREENSHOT_DIR="$HOME/Pictures/Captures" omasnap
OMASNAP_OCR_LANGS="eng+deu" omasnap
# 泰语加英语:
OMASNAP_OCR_LANGS="tha+eng" omasnap
在向 OMASNAP_OCR_LANGS 添加语言之前,请安装相应的 Tesseract 语言数据。未设置时,omasnap 回退到 Omarchy 的 OMARCHY_OCR_LANGS(通常包含用户的书写系统,例如 tha+eng),然后回退到 eng。
控件
捕获选择
| 输入 | 操作 |
|---|---|
| 拖动 | 选择区域,指针显示其原生像素大小 |
空格 | 切换区域/窗口选择 |
SUPER + 方向键 | 在窗口模式下在窗口间移动 |
回车 | 捕获高亮窗口 |
Ctrl+A | 选择整个聚焦显示器 |
Esc、Esc | 关闭 |
标注编辑器
| 输入 | 操作 |
|---|---|
V | 选择/移动/调整图层大小;拖动空白画布进行框选;滚轮缩放选定图层 |
A | 箭头 |
S | 聚光镜/放大镜;再次按以在椭圆、矩形、圆角间循环 |
L | 直线 |
F | 手绘笔触 |
I | 在颜色弹出窗口中吸管;采样图像作为自定义颜色 |
C | 带编号的标记 |
R | 矩形;悬停形状按钮可获得矩形、椭圆和填充控制;Alt+滚轮可圆角 |
E | 椭圆;共享形状子菜单和填充/空心切换 |
D | 涂黑;再次按以切换随机像素化或纯色涂黑 |
X | 剪切一条带状区域;拖动预览被划掉的带状区域,然后松开以移除并收缩 |
T | 位于奶油色可读性标签上的 Neucha 文本;回车添加换行,点击别处保留文本;再次按 T 可切换标签 |
O | 识别并复制当前图像中的所有文本 |
B | 循环背景 |
1–8 | 设置标注颜色;7 是黑色,8 是白色 |
| 滚轮 | 缩放选定图层、放大光标下的聚光镜或更改活动工具大小(Alt+滚轮:矩形圆角或聚光镜边框);仅查看缩放捕获时,像文档一样滚动 |
Shift+滚轮 | 侧向滚动缩放捕获(宽幅拼接);从不更改缩放 |
Ctrl+滚轮 · 中键拖动 | 以光标为中心缩放 · 拖动平移 |
+ / - / 0(也可与 Ctrl 一起使用) | 放大 / 缩小 / 适应 |
拖动时按住 Shift | 使矩形、椭圆和聚光镜为 1:1;使直线和箭头对齐 45°;拖动选定图层的手柄时,保持矩形、涂黑或聚光镜的宽高比(直线和箭头:45°) |
拖动时按住 Alt | 将矩形、椭圆和聚光镜中心置于按压点;添加 Shift 可得到中心正方形/圆形 |
← ↑ → ↓ | 将选定图层微移 1 像素;按住 Shift 为 10 像素(按住的键是一次撤销步长)。未选中任何内容时,平移缩放捕获 |
| 双击文本 | 重新打开文本编辑 |
Delete | 删除选定图层 |
Alt+D | 复制选定图层(向左下方偏移,或远离附近边缘);副本成为选区 |
Ctrl+Z | 撤销 |
Ctrl+Shift+Z、Ctrl+Y | 重做 |
Ctrl+C | 仅复制 PNG |
Ctrl+S | 仅保存 PNG |
回车 | 复制并保存 |
P | 将捕获固定到屏幕并关闭编辑器 |
Esc | 返回到选择;再次按以关闭 |
| 右键点击 | 返回到选择;取消活动绘图 |
固定的捕获
P 渲染当前捕获,将其写入运行时快照目录下的 pin-<uid>-<timestamp>.png,并在分离的固定模式下启动相同的 omasnap 可执行文件。活动固定从右下角堆叠,可通过图像背景拖动。该图层在每个工作区可见,无需合成器窗口规则。它保留图像宽高比,最大宽度为屏幕的三分之一,最大高度为二分之一。固定既不触碰剪贴板,也不写入截图目录;它是与复制、保存和复制并保存并列的第四种输出。
P 会立即关闭编辑器并释放单一实例锁。来自不同捕获的固定作为独立进程累积。
将鼠标悬停在固定上以显示其控件:
| 在固定上的输入 | 操作 |
|---|---|
| 编辑按钮 | 在 Omasnap 中重新打开全分辨率 PNG 并替换固定 |
| 链接按钮 | 复制源文件路径 |
复制按钮、Ctrl+C | 复制全分辨率 PNG |
| 左上角双宽拖动手柄 | 将 PNG 拖入支持文件的拖放目标 |
| 滚轮 | 在屏幕限制内调整大小,保持宽高比 |
关闭按钮、Esc、中键点击 | 关闭 |
图像和路径复制使用 wl-copy 而非 QClipboard,因此剪贴板数据在固定关闭后仍然可用。无需基于字体的符号集或合成器特定的窗口规则;控件使用与标注工具栏相同的矢量图标渲染器。创建工具在放置一次后会返回选择模式,不会选择新图层。在选择模式下,箭头和直线仅显示其两个端点手柄;其他图层显示选择边界。图像外的八个蓝色/白色手柄可重裁剪其角或边。
开发和验证
make check
冒烟可执行文件练习区域/窗口/全屏启动模式、捕获选择、工作文档持久性(源加上操作日志 JSON)、标注工具、撤销/重放、矢量移动和缩放、文本编辑、OCR、原生 DPI 输出、仅端点直线选择、外部裁剪手柄,以及缩放显示器上的原生像素测量读数。
.github/workflows/build-linux.yml 在 Arch Linux 容器中运行相同的 make check 构建、交互冒烟和可用的静态分析检查,暂存 CMake 安装,并上传版本化的 Linux 制品。v* 标签还会将该制品附加到相应的 GitHub 发布。
致谢
捕获和标注工作流程受三个优秀截图工具的启发:
- Shottr — 快速区域/窗口捕获、OCR 和精美的背景。
- Satty — 专注的、Wayland 原生的标注工作流程。
- Flameshot — 优先选择捕获和易于使用的标注工具栏。
感谢他们的作者和贡献者确立了使本项目成为可能的交互模式。Omasnap 是一个独立实现,与这些项目无关。
项目历史
此独立仓库是从原始 Omarchy 系统自定义仓库中使用 git filter-repo 提取的。前 omasnap/ 目录被提升到仓库根目录,同时保留了其相关的提交历史。捆绑的 Neucha 字体在 SIL 开源字体许可下分发;其许可证位于 assets/OFL.txt 中,并随应用程序一起安装。
tobi lutke (@tobi):
更好的标注截图工具即将登陆 Omarchy Quattro。
相似文章
@tobi: 更好的截图标注工具即将登陆 Omarchy Quattro。https://github.com/tobi/omasnap
Omasnap 是一款适用于 Omarchy 和 Hyprland 的全新原生 Wayland 截图与标注工具,提供矢量图层、OCR 捕获以及通过 Wayland 协议实现的干净窗口捕获。
@tobi: omasnap 现在有好多很棒的功能。这是文字 OCR。连这个都能看起来很炫酷。
Tobi 强调了 omasnap 的新功能,特别是文字 OCR 功能,增强了其外观。
@omnigent_ai: 你现在可以通过引导式主题编辑器自定义Omnigent的外观。调整强调色、色调、对比度和侧边栏透明度。开始…
Omnigent v0.6.0 推出了引导式主题编辑器、Slack 集成、适用于 Windows 和 Linux 的原生桌面应用、更丰富的文件查看功能,以及从 Claude Code 和 Codex 导入聊天记录的能力。
BasedHardware/omi
Omi 是一个开源的 AI 第二大脑平台,可以捕捉屏幕内容和对话,提供实时转录、总结和跨桌面、移动和可穿戴设备的上下文感知聊天功能。拥有 30 多万用户,完全开源,支持多平台。
展示HN:Omacosy – 适用于macOS的Omarchy风格平铺桌面,无需SIP
Omacosy是适用于macOS的Omarchy风格平铺桌面环境,提供Hyprland的dwindle布局、焦点跟随鼠标和统一主题切换等功能,具有低内存占用。