@tobi: 更好的截图标注工具即将登陆 Omarchy Quattro。https://github.com/tobi/omasnap

X AI KOLs Timeline 产品

摘要

Omasnap 是一款适用于 Omarchy 和 Hyprland 的全新原生 Wayland 截图与标注工具,提供矢量图层、OCR 捕获以及通过 Wayland 协议实现的干净窗口捕获。

更好的截图标注工具即将登陆 Omarchy Quattro。https://t.co/sWQ4Um1os1 https://t.co/rh9MH9ZbDv
查看原文
查看缓存全文

缓存时间: 2026/08/11 03:40

更好的标注截图工具即将登陆 Omarchy Quattro。 https://t.co/sWQ4Um1os1 https://t.co/rh9MH9ZbDv

tobi/omasnap

Source: https://github.com/tobi/omasnap

Omasnap

一个为 Omarchy 和 Hyprland 设计的原生 Wayland 截图与标注覆盖层。它在映射独占 layer-shell 表面之前捕获当前聚焦的显示器,因此编辑器永远不会出现在自己的截图中。编辑器将标注保留为可移动、可调整大小的矢量图层,并在缩放显示器上保留显示器的原生像素。

循环演示 Omasnap

功能特性

  • 自由选区、窗口和全显示器捕获模式。
  • 通过 Wayland 图像复制协议实现干净的窗口表面捕获。如果原生捕获失败,窗口选择器会保留原样;Omasnap 绝不会用桌面裁剪来代替。
  • 选择/移动/调整图层大小、鼠标滚轮缩放,以及八个外部重新裁剪手柄。
  • 箭头、直线、平滑手绘笔迹、矩形、编号标记和可编辑的 Neucha 文本。
  • 每个图层可使用预设或自定义颜色、撤销/重做历史、OCR 区域捕获、网格渐变背景以及渲染投影。
  • 在 /tmp/omasnap/snapshot-.png 下保存抗崩溃的工作快照,选择后立即写入,并在每次完成编辑后覆盖。保存操作会将该文件移动到 ~/Pictures/Screenshots;剪贴板输出也会流式输出同一个 PNG。
  • 通过 wl-copy/wl-paste 验证 PNG 剪贴板输出,并默认在 ~/Pictures/Screenshots 下生成带时间戳的文件。
  • 在分数或整数缩放显示器上正确导出原生像素。

平台范围

受支持的目标是 Wayland + Hyprland,并以 Omarchy 作为主要集成环境。渲染器、图层表面、剪贴板和干净窗口捕获均使用 Wayland 协议;显示器/窗口发现目前调用 hyprctl。grim 在图层映射之前捕获显示器。选择界面显示该捕获帧,而标注编辑器则在实时桌面上使用半透明图层遮罩,并且只绘制所选捕获内容。其他 Wayland 合成器在提供等效的显示器和窗口发现功能后,也可以支持该应用程序;1.0 并不声称提供通用 Wayland 支持。应用程序使用的运行时命令:

  • hyprctl
  • grim
  • wl-copy 和 wl-paste
  • tesseract
  • omarchy-notification-send(如果可用);完成后的捕获会包含缩略图,点击后通过 xdg-open 打开。通知失败不会使输出失效。

在 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",
})

应用并验证:

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 grim 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 # 映射到区域选择

这些选项决定初始选择的内容;编辑器仍然控制结果是复制、保存,还是两者兼有。

环境变量覆盖:

OMASNAP_SCREENSHOT_DIR="$HOME/Pictures/Captures" omasnap
OMASNAP_OCR_LANGS="eng+deu" omasnap

在向 OMASNAP_OCR_LANGS 添加语言之前,请先安装相应的 Tesseract 语言数据。

操作控制

捕获选择

输入操作
拖动选择区域
Space在区域/窗口选择之间切换
SUPER + Arrow在窗口模式下在各窗口之间移动
Enter捕获高亮窗口
Ctrl+A选择整个聚焦显示器
Esc, Esc关闭

标注编辑器

输入操作
V选择/移动/调整图层大小;滚轮缩放所选图层
A箭头
L直线
F手绘笔迹
C编号标记
R矩形
TNeucha 文本
O拖动 OCR 区域并复制识别到的文本
B切换背景
1–6设置标注颜色
滚轮缩放所选图层或更改当前工具大小
双击文本重新打开文本编辑
Delete删除所选图层
Ctrl+Z撤销
Ctrl+Shift+Z, Ctrl+Y重做
Ctrl+C仅复制 PNG
Ctrl+S仅保存 PNG
Enter复制并保存
Esc返回选择模式;再次按下关闭

创建工具在放置一次后返回选择模式,且不会选中新图层。在选择模式下,箭头和直线只显示两个端点手柄;其他图层显示选择边界。图像外部的八个蓝/白手柄可重新裁剪图像的角或边。

开发与验证

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
QT_QPA_PLATFORM=offscreen \
  ./build/omasnap-smoke /tmp/omasnap-smoke

该冒烟测试可执行文件会覆盖区域/窗口/全屏启动模式、捕获选择、临时快照更新、标注工具、撤销/重做、矢量移动和缩放、文本编辑、OCR、原生 DPI 输出、仅显示端点的直线选择,以及外部裁剪手柄。

.github/workflows/build-linux.yml 在 Arch Linux 容器中执行相同的发布构建和交互冒烟测试,暂存 CMake 安装结果,并上传带版本号的 Linux 构建产物。v* 标签还会将该构建产物附加到对应的 GitHub 发布中。

致谢

捕获和标注工作流程受到了三款优秀截图工具的启发:

  • Shottr (https://shottr.cc/) — 快速的区域/窗口捕获、OCR 和精致的背景。
  • Satty (https://github.com/Satty-org/Satty) — 专注且原生的 Wayland 标注工作流程。
  • Flames

相似文章

@tobi: 软件的未来

X AI KOLs Following

来自@tobi的一条推文,讨论软件的未来,强调他完全可定制的操作系统,并提及@dhh的Omarchy。