
Wayland 截图与录屏 × 6 款:从选区到标注,从录屏到上传,一套工具全搞定
grim 截图、slurp 选区、swappy/satty 标注、wf-recorder 录屏、hyprshot Hyprland 脚本——6 款全进官方 Extra 仓库,pacman 直装,覆盖 Wayland 截图录屏全流程。

Wayland 下没有 X11 的通用截图 API,各合成器自行实现 screencopy 协议。好在围绕
wlr-screencopy-v1 协议已经形成一条完整工具链:截图用 grim、选区用 slurp、标注用 swappy 或 satty、录屏用 wf-recorder、Hyprland 用户还有现成的一键脚本 hyprshot。6 款工具全部进了官方 Extra 仓库,pacman -S 直装。软件分类总览
| 工具 | 类别 | 仓库 | 版本 |
|---|---|---|---|
| grim | 截图核心 | Extra | 1.5.0 |
| slurp | 选区交互 | Extra | 1.5.0 |
| swappy | 截图标注(GTK3) | Extra | 1.8.0 |
| wf-recorder | 屏幕录制 | Extra | 0.6.0 |
| satty | 截图标注(GTK4/现代) | Extra | 0.20.1 |
| hyprshot | Hyprland 一键截图脚本 | Extra | 1.3.0 |
grim — Wayland 截图核心
grim 是 wlroots 生态截图工具链的起点,作者是 wlroots 核心开发者 emersion。它直接调用
wlr-screencopy-v1 协议,无 GUI,只做一件事:把像素写到文件或 stdout。安装:
sudo pacman -S grim典型用法:
# 截全屏,保存到当前目录
grim
# 截指定显示器
grim -o DP-1
# 结合 slurp 手动框选区域
grim -g "$(slurp)"
# 截图并复制到剪贴板(配合 wl-copy)
grim - | wl-copy
# 带时间戳文件名,保存到 ~/Pictures
grim ~/Pictures/$(date +'%s_grim.png')grim 支持输出 PNG 和 JPEG(
-t jpeg);-s 参数可指定缩放因子,高 DPI 屏幕下截取 1x 物理分辨率时有用。本体只有 18.9 KB,依赖 cairo + wayland + pango,无多余包袱。仓库(已迁移 GitHub 存档):https://gitlab.freedesktop.org/emersion/grim 1
slurp — Wayland 选区交互
slurp 是 grim 的标准搭档,负责在屏幕上拉出一个矩形选区并把坐标打印到 stdout。它同样来自 emersion,遵循 UNIX 管道哲学:自己只输出坐标,由调用者决定怎么处理。
安装:
sudo pacman -S slurp典型用法:
# 框选区域后截图(最常用组合)
grim -g "$(slurp)"
# 点选单个像素(取色模式)
slurp -p
# 选整个显示器,输出显示器名称
slurp -o -f "%o"
# 在 Sway 下选择可见窗口区域(结合 swaymsg + jq)
swaymsg -t get_tree \
| jq -r '.. | select(.pid? and .visible?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' \
| slurpswappy — 截图标注(GTK3)
swappy 是截图标注的经典选择,灵感来自 macOS 的 Snappy。它接受 grim 的 stdout 输出或本地 PNG 文件,提供画笔、矩形、椭圆、箭头、文字、模糊工具,支持 Ctrl+Z 撤销,完成后可以保存到文件或复制到剪贴板。

安装:
sudo pacman -S swappy
# 可选:Font Awesome 图标(让工具栏图标正常显示)
sudo pacman -S otf-font-awesome
# 可选:关闭 swappy 后剪贴板内容仍可粘贴
sudo pacman -S wl-clipboard典型用法:
# 经典三件套:框选 → 截图 → 打开标注
grim -g "$(slurp)" - | swappy -f -
# 直接打开已有截图编辑
swappy -f ~/Pictures/screenshot.png配置文件位于
~/.config/swappy/config,可设置默认保存目录、文件名格式、默认画笔模式和初始工具:[Default]
save_dir=$HOME/Pictures/Screenshots
save_filename_format=swappy-%Y%m%d-%H%M%S.png
paint_mode=brush
early_exit=falsewf-recorder — Wayland 屏幕录制
wf-recorder 是 wlroots 生态中的屏幕录制工具,底层调用 ffmpeg 编解码,支持指定输出格式、编码器、比特率,也可以搭配 slurp 框选录制区域。
安装:
sudo pacman -S wf-recorder典型用法:
# 录制全屏,输出到 recording.mp4,Ctrl+C 停止
wf-recorder
# 指定输出文件名
wf-recorder -f ~/Videos/$(date +'%Y%m%d_%H%M%S').mp4
# 结合 slurp 框选区域录制
wf-recorder -g "$(slurp)"
# 同时录制音频(默认 PulseAudio/PipeWire 源)
wf-recorder --audio
# 使用 VAAPI GPU 加速编码(大幅降低 CPU 占用)
wf-recorder -f output.mkv -c h264_vaapi -d /dev/dri/renderD128
# 录制到 v4l2 虚拟摄像头(用于视频会议共享屏幕)
wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2wf-recorder 依赖合成器实现
wlr-screencopy-v1 协议,因此支持 Sway、Hyprland、River、Wayfire 等 wlroots based 合成器,不支持 GNOME 或 KDE(它们有自己的截图/录屏 API)。默认编码器是 libx264,可通过 -c 切换为 hevc_vaapi、av1_vaapi 等 GPU 编码器。5 6正在加载内容卡片…
satty — 现代截图标注工具(GTK4)
satty 是 swappy 的现代替代,2.1k Star,Rust 编写,基于 GTK4 + Adwaita,OpenGL 加速渲染,最新版 0.20.1 已进 Arch 官方 Extra 仓库。

与 swappy 相比,satty 多了几个实用特性:全屏标注模式(截图后整张铺满屏幕再画,比小窗口更精准)、后期裁剪工具(截图后还可以二次裁剪区域)、数字标记工具(自动递增的圆圈数字,适合步骤标注)、高亮工具(矩形高亮块或自由手绘高亮)。
安装:
sudo pacman -S satty典型用法(搭配 grim + slurp):
# wlroots 合成器(Sway)
grim -g "$(slurp -o -r -c '#ff0000ff')" -t ppm - \
| satty --filename - --fullscreen \
--output-filename ~/Pictures/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png
# Hyprland(# 需要转义)
grim -g "$(slurp -o -r -c '##ff0000ff')" -t ppm - \
| satty --filename - --fullscreen \
--output-filename ~/Pictures/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png传
-t ppm 给 grim 而非 -t png 是刻意的:PPM 是无压缩格式,省去编码/解码往返,管道传输更快。hyprshot — Hyprland 一键截图脚本
hyprshot 是专门为 Hyprland 打包的 bash 脚本,封装了 grim + slurp + wl-copy 的常见调用组合,让绑定快捷键只需一行命令。
安装:
sudo pacman -S hyprshot典型用法:
# 截选区并复制到剪贴板
hyprshot -m region
# 截当前活动窗口
hyprshot -m window
# 截整个显示器
hyprshot -m output
# 截图后同时保存文件(默认存到 ~/Pictures)
hyprshot -m region --output-folder ~/Pictures/Screenshots
# 静默模式(不显示通知)
hyprshot -m region -s在
~/.config/hypr/hyprland.conf 中绑定快捷键:# PrintScreen 键:框选截图
bind = , Print, exec, hyprshot -m region
# Super+Print:截当前窗口
bind = $mainMod, Print, exec, hyprshot -m window
# Super+Shift+Print:截全屏
bind = $mainMod SHIFT, Print, exec, hyprshot -m outputhyprshot 依赖
grim、slurp、jq、wl-clipboard、libnotify,安装 hyprshot 时这些依赖会一并拉进来。可选依赖 hyprpicker——安装后截图前会先冻结画面,让选区更准确。9工具链组合建议
这 6 款工具不是独立的,而是几条流水线的不同环节:
日常截图 + 快速标注(Hyprland 用户):
hyprshot -m region --output-folder ~/Pictures/Screenshots \
&& satty -f ~/Pictures/Screenshots/$(ls -t ~/Pictures/Screenshots | head -1)日常截图 + 快速标注(通用 wlroots):
grim -g "$(slurp)" - | satty --filename - --fullscreen \
--output-filename ~/Pictures/Screenshots/$(date '+%Y%m%d-%H%M%S').png录屏 + 区域选择:
wf-recorder -g "$(slurp)" -f ~/Videos/$(date '+%Y%m%d_%H%M%S').mp4取色(颜色选取器):
grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:-swappy 和 satty 可以共存,前者适合轻量快注(GTK3,更轻),后者适合需要全屏模式或步骤标注的场景(GTK4,功能更全)。
围绕这条内容继续补充观点或上下文。