@tobi: omasnap 更新:自首次分享以来约70个PR,新增多行文本、剪切部分、聚光灯+放大镜、可固定截图等功能

X AI KOLs Following 工具

摘要

Omasnap 已更新,包含超过70个PR,新增了多行文本、剪切部分和改进的编辑功能,同时保持其轻量级的800KB二进制文件,适用于Wayland和Hyprland环境。

omasnap 更新:自首次分享以来约70个PR 多行文本 剪切部分 聚光灯 + 放大镜 可跨工作区固定的截图 真正安全的编辑功能 可编辑的矢量标注 OCR 防崩溃撤销 原生Wayland捕获 仍然是一个微小的800KB、速度极快的二进制文件。QT很酷。 https://github.com/tobi/omasnap
查看原文
查看缓存全文

缓存时间: 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 表面前捕获聚焦的显示器,因此编辑器永远不会出现在自己的截图中。编辑器将标注保留为可移动、可缩放的矢量图层,并在缩放显示器上保留监视器的原始像素。

循环播放的 Omasnap 演示

功能特性

  • 自由选择区域、窗口和全屏显示器捕获模式。
  • 指针侧读数:将任何拖动变为标尺。十字准星空闲时显示指针位置;调整区域、悬停窗口或裁剪手柄大小时,显示原生导出像素的框架尺寸。
  • 窗口捕获是对聚焦显示器框架的裁剪。重叠的窗口保持可见;无需第二次重新捕获干净窗口。
  • 选择/移动/调整图层大小、鼠标滚轮缩放以及八个外部重裁剪手柄。
  • 箭头、直线、平滑的手绘笔触、半透明荧光笔笔触、空心或实心矩形(可选圆角)和椭圆、带编号的标记、可编辑的 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 支持。

应用程序使用的运行时命令:

  • hyprctl
  • wl-copywl-paste
  • tesseract
  • omarchy-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/binPATH 上,然后验证已安装的 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选择整个聚焦显示器
EscEsc关闭

标注编辑器

输入操作
V选择/移动/调整图层大小;拖动空白画布进行框选;滚轮缩放选定图层
A箭头
S聚光镜/放大镜;再次按以在椭圆、矩形、圆角间循环
L直线
F手绘笔触
I在颜色弹出窗口中吸管;采样图像作为自定义颜色
C带编号的标记
R矩形;悬停形状按钮可获得矩形、椭圆和填充控制;Alt+滚轮可圆角
E椭圆;共享形状子菜单和填充/空心切换
D涂黑;再次按以切换随机像素化或纯色涂黑
X剪切一条带状区域;拖动预览被划掉的带状区域,然后松开以移除并收缩
T位于奶油色可读性标签上的 Neucha 文本;回车添加换行,点击别处保留文本;再次按 T 可切换标签
O识别并复制当前图像中的所有文本
B循环背景
18设置标注颜色;7 是黑色,8 是白色
滚轮缩放选定图层、放大光标下的聚光镜或更改活动工具大小(Alt+滚轮:矩形圆角或聚光镜边框);仅查看缩放捕获时,像文档一样滚动
Shift+滚轮侧向滚动缩放捕获(宽幅拼接);从不更改缩放
Ctrl+滚轮 · 中键拖动以光标为中心缩放 · 拖动平移
+ / - / 0(也可与 Ctrl 一起使用)放大 / 缩小 / 适应
拖动时按住 Shift使矩形、椭圆和聚光镜为 1:1;使直线和箭头对齐 45°;拖动选定图层的手柄时,保持矩形、涂黑或聚光镜的宽高比(直线和箭头:45°)
拖动时按住 Alt将矩形、椭圆和聚光镜中心置于按压点;添加 Shift 可得到中心正方形/圆形
将选定图层微移 1 像素;按住 Shift 为 10 像素(按住的键是一次撤销步长)。未选中任何内容时,平移缩放捕获
双击文本重新打开文本编辑
Delete删除选定图层
Alt+D复制选定图层(向左下方偏移,或远离附近边缘);副本成为选区
Ctrl+Z撤销
Ctrl+Shift+ZCtrl+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。

相似文章

BasedHardware/omi

GitHub Trending (daily)

Omi 是一个开源的 AI 第二大脑平台,可以捕捉屏幕内容和对话,提供实时转录、总结和跨桌面、移动和可穿戴设备的上下文感知聊天功能。拥有 30 多万用户,完全开源,支持多平台。