无头服务器、远程终端、批量脚本里,命令行是最稳定的截屏入口。
scrot:轻量 X11 截屏
scrot 基于 imlib2,适合纯 X11 环境或无桌面时抓取整个屏幕、指定窗口或交互选区[1]。
sudo apt-get install scrot
scrot ~/Pictures/screenshot.png
scrot -s ~/Pictures/selection.png
scrot -d 3 ~/Pictures/delayed.png
-s:交互框选区域-d SEC:延迟秒数,给窗口切换留时间-u:截当前焦点窗口
gnome-screenshot:GNOME 桌面截屏
GNOME 自带工具,支持延时、窗口、区域和剪贴板[2]。
sudo apt-get install gnome-screenshot
gnome-screenshot -f ~/Pictures/screenshot.png
gnome-screenshot -w -f ~/Pictures/window.png
gnome-screenshot -a -d 2 -f ~/Pictures/area.png
-w:当前活跃窗口-a:交互选择区域-d SECONDS:延迟截取-c:直接复制到剪贴板
import:ImageMagick 套件截屏
ImageMagick 的 import 命令面向 X11,可精确框选或按窗口抓取[3]。
sudo apt-get install imagemagick
import ~/Pictures/x11.png
import -window root ~/Pictures/full.png
- 不指定窗口时,点击选择目标区域
-window root:抓取整个屏幕-delay N:等待 N 秒再抓取
grim + slurp:Wayland 截屏
Wayland 下推荐 grim 抓取、slurp 选区域,二者配合完成截屏[4][5]。
sudo apt-get install grim slurp
grim ~/Pictures/wayland.png
grim -g "$(slurp)" ~/Pictures/selection.png
grim -o DP-1:指定输出slurp退出码非 0 时表示取消
脚本化时四条命令都支持非交互调用,适合 cron 或系统钩子。例如每 5 分钟自动截屏:
while true; do
scrot "$(date +%Y%m%d_%H%M%S).png"
sleep 300
done
脚本化时注意目录存在性和权限;scrot 与 import 只依赖 X11,gnome-screenshot 需要会话总线。
回滚与排错
- 截屏失败先确认
DISPLAY(X11)或WAYLAND_DISPLAY(Wayland)环境变量。 - scrot 报 “No display”:确认 X11 服务正常,或改用 Wayland 工具链。
- import 报 “no decode delegate”:ImageMagick 策略文件限制,需检查
/etc/ImageMagick-6/policy.xml。 - gnome-screenshot 报 “Failed to load module”:
sudo apt-get install --reinstall gnome-screenshot。
实测与局限性
- 本机 WSL2 Ubuntu 24.04 因 NAT 不可用,无法实际启动并验证上述命令;全部命令基于文档核查,尚未实际执行。
- X11 与 Wayland 工具不能混用;WSL 默认带 X11 转发,若使用 Wayland 需确认合成器支持。
- 无桌面环境时,scrot 与 import 仍可工作,但部分窗口选择功能依赖窗口管理器。
参考资料
- [1] scrot(1) — Arch manual pages(scrot-man)
- [2] gnome-screenshot(1) — Debian trixie(gnome-man)
- [3] ImageMagick | Command-line Tools: Import(import-doc)
- [4] grim — Grab images from a Wayland compositor(grim-doc)
- [5] slurp(1) — select a region in a Wayland compositor(slurp-man)
文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。