新装好Ubuntu 24.04之后,我最先做的事情不是换主题,也不是配输入法,而是先把截图工具这摊事收拾利索。作为一个每天要截几十张图、写文档、做教程、报bug都离不开截图的人,系统自带的那种按一下Print弹出交互界面、选个区域保存到图片目录的做法,基本能满足最低需求,但真的只够最低需求。后来我陆续试过Flameshot、Shutter、Spectacle、Snipaste在Linux上的各种替代方案,最后确定了一套很适合日常使用的组合:系统自带截图兜底、Flameshot负责标注和贴图、再配合一组自定义快捷键。这篇文章就是把这一整套流程整理出来,包括一键安装脚本、GNOME桌面下的快捷键设置方法,以及我在实际使用中踩过的坑。如果你刚装好Ubuntu 24,或者从Windows切换过来希望快速拥有一套顺手截图方案,这篇内容可以直接照着抄。
1. 为什么系统截图键在Ubuntu 24上越用越憋屈
1.1 系统自带截图能做什么、不能做什么
Ubuntu 24.04自带GNOME 46桌面,桌面环境内置了一套截图模块。按下Print Screen键,屏幕中央会弹出一个精致的截图工具条,顶部有“选择区域”“选择窗口”“选择屏幕”三个选项,底部还能切换录制视频模式。选中区域后可以直接保存到~/Pictures/Screenshots目录,也可以复制到剪贴板,甚至还能在截图后拖动画框选个范围再保存。
这套方案单看基础体验是合格的,尤其是GNOME 46的截图交互比之前版本流畅了不少,录屏功能也内置了,省得再去装第三方录屏工具。但问题在于,它只解决“快速抓一张图”这件事,一旦涉及“抓完图要圈重点”,它就完全帮不上忙了。系统截图没有标注工具,没有马赛克,没有箭头,没有文字批注。你截完图只能先切到图片查看器,再打开某个绘图软件手动画线标框,效率非常低。
1.2 我对截图工具有四个硬性要求
如果你只是偶尔截个图发给朋友,那系统自带功能完全够用。但如果和我一样属于每天截图高频用户,我建议先梳理一下自己的核心需求,再决定装什么工具。
四个硬性要求:
- 全屏截图、区域截图、窗口截图三种模式都要有,且能通过快捷键直接触发,不要每次在界面上点点点。
- 截图后能立刻进入编辑状态,支持箭头、方框、马赛克、文字标注,这是写教程和报bug时最核心的需求。
- 要能“贴图”,也就是将要截图钉在屏幕上置顶显示,方便照着图片参考输入、核对数据或临时对比内容。
- 截图要能自动保存到固定目录,同时复制到剪贴板,方便直接粘贴到聊天软件或文档里。
系统自带的第一条勉强满足,第二条完全缺失,第三条完全没有,第四条需要手动操作。所以结论很明确:要提升日常截图效率,必须加装第三方工具。
1.3 “一键安装脚本”要解决的真正问题
新装一台Ubuntu机器,截图相关的配置其实是散的。要装软件,要设置快捷键,要创建目录,可能要改默认保存路径。这些步骤单独执行不复杂,但每台新机器都手动来一遍就烦了。
一键安装脚本的核心价值不是“省去敲几条命令”,而是把整个配置流程固化下来,保证每次装完的结果一致。我在虚拟机上测试过,从零开始手动配置截图环境,包括apt update、装Flameshot、设置gsettings快捷键、创建保存目录,大概要敲十几条命令,中途还经常忘记设置快捷键数组导致快捷键不生效。脚本化之后,一条命令跑完,干净利落。这也是很多系统初始化脚本会把截图工具配置纳入其中的原因。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 截图工具选型:我最后留下这两个,弃了那几个
2.1 Flameshot:社区活跃度最高、性价比最高的截图编辑工具
Flameshot是Linux生态里目前用得最多、也最被推荐的截图工具,没有之一。它开源免费,功能覆盖面非常广:支持区域截图、全屏截图、窗口截图,截图后有完整的标注工具栏,包括画笔、箭头、线条、方框、圆框、文字、数字序号、马赛克、模糊,几乎能满足日常所有标注需求。它还有一个“Pin”功能,可以把当前截图钉在屏幕上置顶显示,这个功能对标的是Windows上Snipaste的“贴图”,写文档的时候特别实用。
安装方式也比较灵活:
- apt仓库:Ubuntu 24.04源里直接有Flameshot,一条
sudo apt install flameshot搞定。 - Snap Store:Ubuntu自带Snap,可以
sudo snap install flameshot,但我在Wayland会话下实测Snap版有权限和字体问题,不推荐。 - Flatpak:需要先装Flatpak框架,再从Flathub装,适合喜欢沙箱环境的用户。
- 源码编译:依赖Qt环境,非特殊情况不建议自己编译。
2.2 gnome-screenshot:系统自带模块之外的命令行备胎
也许有人会问,系统不是自带截图UI了吗,为什么还要单独装一个gnome-screenshot?这里要区分两个概念:GNOME 46按Print弹出的截图工具条是桌面内置的交互界面,而gnome-screenshot是一个独立的命令行小工具,虽然它在GNOME 42之后被标记为“Deprecated”,但在Ubuntu 24.04的仓库里依然能装、能正常用。
我保留它的理由是,它能通过命令行参数完成一些系统交互截图做不到的场景,比如延迟5秒截图,适合截菜单悬停状态、下拉框展开状态这类需要提前准备的画面。举个例子:
bash复制gnome-screenshot --delay=5
这条命令执行后,屏幕右上角会闪烁倒计时提示,5秒后自动截取当前屏幕,不需要你瞬发反应。这在写软件操作教程时非常有用,因为很多菜单在你按下快捷键的瞬间就会消失,只有延迟截图能抓到。
2.3 其他候选工具速览:Shutter、Spectacle、Snipaste、Deepin Screenshot
选型时我也顺带试过其他几个工具,简单说下看法。
Shutter是Linux截图工具里的老前辈,功能非常多,支持选区截图、编辑、上传图床,菜单栏功能也很丰富。但它的发布时间线不太乐观,在Ubuntu 24.04上依赖问题很麻烦,我尝试安装时遇到一堆Perl模块和libgoocanvas相关的依赖报错,后来虽然能装上,但启动速度偏慢,界面风格也明显落后。既然有Flameshot这种更现代的选择,Shutter对新用户来说就没有太大必要。
Spectacle是KDE桌面默认的截图工具,如果用的是GNOME桌面,Spectacle的体验会打折扣,虽然它能独立安装运行,但很多快捷键和系统集成都是围绕KDE设计的,强行在GNOME下用没有优势。
Snipaste在Windows上确实是神器,贴图功能尤其好用,但Linux原生版一直没有正式推出。有人通过Wine运行Windows版,我也试过,能启动但截图区域选择会出现坐标偏移,剪贴板互通也有问题,日常使用很别扭。若真心喜欢Snipaste的交互,不如直接用Flameshot的Pin功能,体验已经非常接近。
Deepin Screenshot是深度系统的截图工具,界面美观,标注功能也不错,但它依赖深度桌面环境的一堆库,在标准Ubuntu上安装容易引入不必要的依赖,而且需要手动处理各种依赖问题,性价比不高。
2.4 我最终采用的组合方案
考虑稳定性、功能覆盖、安装便捷度之后,我的最终方案如下:
| 场景 | 工具 | 触发方式 |
|---|---|---|
| 常规快速截图 | 系统自带截图UI | Print Screen |
| 截图后标注/编辑/贴图 | Flameshot | Ctrl + Shift + A |
| 延迟截图(菜单、下拉框) | gnome-screenshot | Ctrl + Shift + 6 |
这套组合的好处是:每个工具做自己最擅长的事,不强行用Flameshot替代系统截图,也不指望系统截图能完成标注。日常80%的情况下按Print就能搞定,需要编辑或贴图时再按Flameshot快捷键,写教程时用延迟截图抓菜单状态,分工明确。
3. 一键安装脚本:从装软件到配快捷键一次跑完
3.1 脚本设计思路
写这个脚本我定了几条原则:
- 脚本必须在普通用户下执行,不能以root身份运行。安装软件部分需要sudo权限时自动提示输入密码,而gsettings配置快捷键、创建目录这些操作必须写入当前用户配置,所以不能用sudo整体执行。
- 脚本要幂等,重复执行不报错。已经安装过的包apt会自动跳过,目录已存在就不重复创建。
- 需要判断执行用户身份,如果是root直接退出并提示,避免误操作把配置写进root家目录。
脚本只负责三件事:更新软件源并安装工具、创建截图保存目录、注册自定义快捷键。
3.2 完整脚本内容
bash复制#!/bin/bash
# 常用截图工具一键安装与快捷键配置脚本
# 适用环境:Ubuntu 24.04 GNOME桌面
# 执行方式:普通用户直接运行,安装部分会提示输入sudo密码
set -e
# 防止以root身份执行,gsettings配置需要写入当前用户桌面配置
if [ "$EUID" -eq 0 ]; then
echo "请不要用root执行此脚本,请用普通用户执行。安装部分会自动调用sudo。"
exit 1
fi
echo "=== 1/4 更新软件源索引 ==="
sudo apt update
echo "=== 2/4 安装截图工具 gnome-screenshot、flameshot、xclip ==="
sudo apt install -y gnome-screenshot flameshot xclip
echo "=== 3/4 创建截图保存目录 ==="
SCREENSHOT_DIR="$HOME/Pictures/Screenshots"
if [ ! -d "$SCREENSHOT_DIR" ]; then
mkdir -p "$SCREENSHOT_DIR"
echo "已创建目录: $SCREENSHOT_DIR"
else
echo "目录已存在: $SCREENSHOT_DIR"
fi
echo "=== 4/4 注册自定义快捷键 ==="
# 使用gsettings写入GNOME自定义快捷键配置
KEY_PATH="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
# 这一步很关键,先注册自定义快捷键数组,后面的name/command/binding才会生效
gsettings set org.gnome.settings-daemon.plugins.media-keys \
custom-keybindings "['${KEY_PATH}']"
# 给Flameshot区域截图绑定 Ctrl+Shift+A
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
name "Flameshot 区域截图"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
command "/usr/bin/flameshot gui"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
binding "<Control><Shift>a"
# 再注册第二个快捷键,给gnome-screenshot绑定延迟截图 Ctrl+Shift+6
KEY_PATH2="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
gsettings set org.gnome.settings-daemon.plugins.media-keys \
custom-keybindings "['${KEY_PATH}', '${KEY_PATH2}']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH2} \
name "延迟5秒截图"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH2} \
command "gnome-screenshot --delay=5"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH2} \
binding "<Control><Shift>6"
echo "=== 安装完成 ==="
echo "快捷键说明:"
echo " Print 系统自带截图"
echo " Ctrl+Shift+A Flameshot 区域截图 + 标注"
echo " Ctrl+Shift+6 延迟5秒截图"
echo "设置完成后建议注销重新登录,或重启桌面环境使快捷键生效。"
把上面内容保存为install-screenshot-tools.sh,执行:
bash复制chmod +x install-screenshot-tools.sh
./install-screenshot-tools.sh
运行过程中sudo会要求输入密码,输入当前用户的密码即可。如果后续想要彻底移除这几个工具,可以执行sudo apt remove --purge gnome-screenshot flameshot xclip再把gsettings自定义快捷键数组清空,不过日常使用基本不需要卸载。
3.3 为什么用apt而不是Snap装Flameshot
Ubuntu 24.04默认带着Snap框架,很多软件直接用snap install更省事。但Flameshot这个工具我强烈建议用apt版,因为Snap版的Flameshot在Wayland会话下问题特别多,我实测遇到过的就有:启动后字体渲染异常、截图区域选择时画面卡顿、某些版本在Wayland下根本无法选取区域,只能截到黑屏。
apt版Flameshot走的是传统X11兼容链路,虽然本身对Wayland的支持也不算完美,但在XOrg会话下非常稳定,启动速度也比Snap版快不少。再加上apt版是系统源维护的版本,依赖管理更干净,做一键安装脚本时不用额外处理Snap相关权限,所以我最终选择apt作为默认安装方式。
如果你用的是NVIDIA显卡驱动,更不建议用Snap版。NVIDIA闭源驱动在Wayland的兼容性本来就有不少历史问题,叠加Flameshot的X11截图链路,出现问题的概率会更高。
3.4 脚本还能怎么扩展
这个脚本的核心是“安装工具 + 注册快捷键”,实际使用时可以往里追加更多内容。比如把输入法、常用开发工具、Codex CLI这些一起装掉;或者在安装完Flameshot之后顺便导入一份自己习惯的Flameshot配置文件;也可以把延迟截图快捷键改成<Control><Shift>s之类更好记的键位。
我个人建议不要把脚本写得过于臃肿,安装工具和配置快捷键各做各的事,后续维护起来更清晰。如果确实想做成“一条龙装机脚本”,可以单独写一个setup-all.sh,用函数封装各个模块再按顺序调用,这样截图脚本可以独立复用,不会被其他安装逻辑干扰。
4. GNOME快捷键配置:gsettings绑定命令的正确姿势
4.1 图形界面设置和命令行设置的区别
GNOME桌面的自定义快捷键有两种配置入口。
第一种是图形界面,路径是“设置 -> 键盘 -> 查看及自定义快捷键 -> 自定义快捷键”。打开后点右上角的“+”号,填入名称、命令,再按一下要绑定的组合键,保存即可。这种方式直观,适合手头正好开着设置面板、只配一两个键位的情况。
第二种是命令行方式,通过gsettings直接读写GNOME的配置数据库。这种方式适合批量修改、脚本化部署和远程操作,但是使用时有一个容易踩的大坑,后面会详细讲。我自己平时更多的其实是用命令行,因为改动可以精确控制,也方便写进初始化脚本。
4.2 gsettings配置自定义快捷键的正确顺序
写这个部分之前,我特意回忆了当初自己第一次折腾gsettings的场景。当时我把name、command、binding三条设置都填好了,然后信心满满去按快捷键,结果毫无反应。去设置面板一看,自定义快捷键列表是空的。查了半天资料才发现,GNOME的自定义快捷键机制要求先注册“键位数组”,再填写具体内容,顺序反了不会生效。
正确顺序如下:
- 先设置
custom-keybindings数组,告诉GNOME你要使用哪几个自定义槽位。 - 再分别设置每个槽位的名称、命令和键位绑定。
脚本中的写法:
bash复制KEY_PATH="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
# 第一步:注册数组
gsettings set org.gnome.settings-daemon.plugins.media-keys \
custom-keybindings "['${KEY_PATH}']"
# 第二步:填写具体配置
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
name "Flameshot 区域截图"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
command "/usr/bin/flameshot gui"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:${KEY_PATH} \
binding "<Control><Shift>a"
注意第一行设置数组时,路径要用单引号包住,整体是一个数组格式的字符串。如果之后要注册第二个快捷键,需要把数组重新设置成包含两个路径的形式,就像脚本里第二次set一样,而不是再单独运行一条set,否则会把第一个覆盖掉。
4.3 键位语法:Super、Control、Shift、Alt和特殊键怎么表示
gsettings里设置键位遵循一套固定的加速键语法,格式是<修饰键>字符。常用的修饰键名称如下:
<Super>表示Super键,也就是键盘上的Windows键或Command键。<Control>表示Ctrl键。<Shift>表示Shift键。<Alt>表示Alt键。- 特殊按键直接写名字,比如Print、Escape、F1、Home等。
组合键多个修饰键连在一起,再用加号连接最终按键。比如<Control><Shift>a表示Ctrl+Shift+A,<Super><Shift>s表示Super+Shift+S,<Control><Alt>t表示Ctrl+Alt+T。绑定方向上,GNOME不区分大小写,<Control><Shift>a和<Control><Shift>A是同一个意思,但实际触发时不能用大写锁定状态作为修饰条件。
另外要注意,Print这个键的准确写法是Print,有时候你在别的文档里会看到<Print>之类的写法,在gsettings里这是无效的,正确格式就是单独一个Print,不需要尖括号。如果你想把系统的Print键绑定到其他工具,用binding "Print"即可。
4.4 快捷键冲突:图形界面会提示,命令行不会
GNOME对快捷键冲突的处理有一个很隐晦的地方:如果你通过设置面板手动配置快捷键,当新键位和已有快捷键冲突时,设置面板会给出冲突提示。但如果你通过gsettings命令行写入,系统不会做任何冲突检测,写入后键位可能完全不生效,也不会报错。
所以我建议,在写入自定义快捷键之后,到“设置 -> 键盘”里翻一下“自定义快捷键”列表,确认自己定义的项没有显示冲突。尤其是Ctrl+Shift+A这个组合,它经常被终端模拟器、VS Code、输入法切换方案占用,如果发现Flameshot快捷键无响应,优先怀疑是不是冲突了。可以把键位换成<Super><Shift>a或<Control><Shift>F10这类不太容易撞车的组合。
还有一个细节:gsettings写入后有时需要注销重登才能生效。尤其是从XOrg切换到Wayland会话,或者从Wayland切回XOrg时,已注册的快捷键可能不会自动重新加载。遇到这种情况,注销一次就好了,不用重装任何软件。
5. 实测踩坑:Wayland黑屏、快捷键不生效、启动慢
5.1 最大的坑:Wayland会话下Flameshot区域黑屏
Ubuntu 24.04默认登录会话是Wayland,这本身没有问题,但Flameshot在这个环境下的表现非常不稳定。我实际遇到的情况是:点击Flameshot快捷键后,能弹出截图选择框,但选择框里的画面有时是纯黑,有时只显示桌面壁纸,窗口内容全部消失,无论怎么移动鼠标都看不到实际画面。
这个问题的根源在于Wayland的安全机制。Wayland为保护应用间数据,不允许X11应用直接抓取其他窗口的像素内容。Flameshot本质上还是基于X11的截屏方式,在Wayland下运行时走的是XWayland兼容层,它能创建自己的窗口,却拿不到桌面内容的像素数据,于是黑屏。
解决办法有三个:
- 最省事的办法是注销当前会话,在登录界面右下角齿轮选择“Ubuntu on Xorg”,进入XOrg会话后Flameshot完全正常。
- 不用Flameshot,遇到需要标注的截图场景时改用系统自带截图UI,缺点是没法标注。
- 改用专为Wayland设计的命令行截图工具,比如grim配合slurp选择区域,但需要自己写脚本封装,学习成本高一些。
我自己目前在虚拟机和办公机上用的是XOrg会话,Flameshot非常稳定。如果你有必须留在Wayland会话的理由,比如需要用HDR或依赖Wayland的触摸板手势,那建议直接放弃Flameshot,老老实实用系统自带的截图方案,或者等Flameshot对Wayland的支持进一步完善。
5.2 快捷键设置后不生效,可能是桌面会话没重载
gsettings写入快捷键之后,我遇到过几次按键毫无反应的情况。排查发现,有时候是设置面板里已经显示了这个快捷键,但按键就是触发不了。
这时候优先尝试注销重登。如果不想注销,在XOrg会话下可以按Alt+F2输入r重启GNOME Shell,在Wayland会话下只能注销。注意,重启GNOME Shell会关闭所有打开的GTK窗口,操作前做好保存。
另外还有一种情况,命令写错了但设置面板看不出来。比如Flameshot安装后,命令路径有时不是/usr/bin/flameshot,尤其用Snap安装时路径是/snap/bin/flameshot,如果脚本里写的是/usr/bin/flameshot,快捷键就会失效。可以用which flameshot确认完整路径,再填写到command字段。
5.3 Flameshot启动慢导致快捷键响应迟钝
Flameshot从启动到截图界面出现,正常情况下应该是瞬间完成。但我在某些机器上遇到过明显的延迟,按快捷键后要等一两秒甚至更久才有反应。
原因通常是几种。一是Flameshot首次启动需要加载大量图标字体资源,冷启动阶段会慢;二是安装的是Snap版,Snap服务首次挂载会有额外开销;三是机器本身配置较低,或CPU处于省电模式。
解决思路是让Flameshot常驻后台,而不是每次都冷启动。可以在系统启动项里添加Flameshot的托盘模式,比如设置里开启“启动时最小化到托盘”,这样快捷键触发时直接调用GUI窗口,省去冷启动过程。脚本中绑定快捷键时,也可以直接写flameshot gui而不要加多余的参数,减少解析负担。
5.4 中文用户名和截图保存路径的坑
国内很多朋友安装Ubuntu时习惯把用户名设置成中文,或者HOME目录里带中文路径。Flameshot和部分脚本在读取默认保存路径时,对中文路径支持并不好,可能出现保存失败或乱码问题。
我建议无论用户名是不是中文,都明确指定截图目录为英文路径。脚本里已经创建了~/Pictures/Screenshots,并在Flameshot配置里把保存路径固定下来即可。如果发现Flameshot的保存路径是空的或报错,去Flameshot设置界面把保存目录重新选一次,指向英文路径基本能解决。
5.5 双屏和虚拟机环境的屏幕坐标偏移
双屏场景下,Flameshot偶尔会出现选区坐标错乱的状况,尤其在两个显示器分辨率不一致、缩放比例不同的时候。比如副屏是4K缩放125%,主屏是1080p,选区时会发现鼠标坐标和实际位置对不上。
这个问题的根源和Wayland/XWayland的坐标换算有关,在XOrg会话下也会受混合缩放影响。我的建议是双屏用户尽量把两个显示器设成分辨率比例相近的缩放值,或者用Flameshot把截图范围限定在单屏内。虚拟机上则主要是分辨率太小导致选区界面被压缩,这个没有系统性解决办法,调高虚拟机分辨率能缓解。
6. 进阶玩法:自动保存、加水印和OCR识别
6.1 让Flameshot每次截图后自动保存并复制到剪贴板
Flameshot默认的交互逻辑是截图后先弹出编辑界面,等你手动保存或复制。对于不需要标注的截图,这个多出来的步骤挺浪费时间的。可以通过命令行参数让Flameshot直接完成保存和复制:
bash复制flameshot gui -p ~/Pictures/Screenshots -c
其中-p指定保存目录,-c表示把截图复制到剪贴板。如果你希望截图前有延迟,可以加-d参数,单位为毫秒:
bash复制flameshot gui -p ~/Pictures/Screenshots -c -d 2000
这条命令会在2秒延迟后进入选区界面,适合准备菜单展开状态。如果平时截图大多不需要标注,可以把快捷键绑定的命令直接换成带-p和-c的版本,省掉手动保存的步骤。
6.2 配置阴影与边框,让截图自带高级感
Flameshot的编辑界面里,如果你觉得截图默认样式太“素”,可以打开设置面板,在“图形”相关选项里调整边框和阴影。开启阴影后,截图边缘会出现一圈阴影效果,插入文档时视觉上更立体,很多写技术教程的人喜欢这个效果。
设置方法是:右键点击Flameshot托盘图标,选择“配置”,在图形选项卡里找到边框宽度和阴影选项进行调整。配置会写入~/.config/flameshot/flameshot.ini,改完需要重启Flameshot生效。注意不同版本的配置项名称略有差异,如果菜单里找不到某个选项,以实际界面为准。
6.3 用ImageMagick给截图自动加水印
如果你的截图经常要发到公开平台,加上水印是防止盗图的有效办法。Flameshot本身不带水印功能,但可以配合ImageMagick写一个小脚本处理,效果稳定。
先安装ImageMagick:
bash复制sudo apt install -y imagemagick
然后保存一个脚本:
bash复制#!/bin/bash
# 给截图添加右下角半透明文字水印
# 用法: ./add-watermark.sh <图片文件>
IMG="$1"
TEXT="YourName 2025"
if command -v magick >/dev/null 2>&1; then
magick "$IMG" -gravity southeast -pointsize 24 \
-fill "rgba(255,255,255,0.5)" -annotate +20+20 "$TEXT" "$IMG"
else
convert "$IMG" -gravity southeast -pointsize 24 \
-fill "rgba(255,255,255,0.5)" -annotate +20+20 "$TEXT" "$IMG"
fi
Ubuntu 24.04的ImageMagick默认是6.x版本,用convert命令即可;如果你装了7.x,就用magick。脚本里两个命令都判断了,哪种环境都能跑。
每次截图保存后,执行一次./add-watermark.sh ~/Pictures/Screenshots/xxx.png,图片右下角就会出现半透明水印。如果想全自动,可以把Flameshot的保存目录指向一个子目录,然后用inotifywait监听新文件自动加水印,但这涉及后台守护进程,日常使用有点大材小用。
6.4 截图后直接OCR识别文字
截图工具和OCR结合起来,效率能提升不少。Flameshot截图保存后,我可以直接用tesseract识别图片里的文字。安装:
bash复制sudo apt install -y tesseract-ocr tesseract-ocr-chi-sim
识别命令:
bash复制tesseract ~/Pictures/Screenshots/xxx.png stdout -l chi_sim+eng
chi_sim是简体中文语言包,eng是英文语言包,两种语言混排内容也能识别。命令执行后会把识别结果直接输出到终端。如果想复制到剪贴板,可以在命令后面接xclip -selection clipboard:
bash复制tesseract ~/Pictures/Screenshots/xxx.png stdout -l chi_sim+eng | xclip -selection clipboard
这个组合很适合从截图里提取验证码、抓取网页截图中的文字、整理会议记录里的图表文字等场景。要注意的是tesseract对拍摄质量要求不高,但对低分辨率截图识别率会有明显下降,识别前尽量保证图片文字清晰。
6.5 把截图配置并入“装机一条龙”脚本
到这里,截图工具从安装到快捷键、从自动保存到水印和OCR,已经形成一套完整方案。实际操作中,我的建议是把这些内容整理到自己的系统初始化脚本里,下次装新机器时不用再一篇篇翻教程。
最简单的做法是,把前面的一键安装脚本保存为install-screenshot-tools.sh,然后在一个总的setup-all.sh里依次调用:
bash复制#!/bin/bash
# 总装机脚本示例
set -e
./install-screenshot-tools.sh
./install-input-method.sh
./install-dev-tools.sh
echo "全部安装完成,建议注销重新登录。"
每个模块一个脚本,互不干扰,有问题时单独调试也方便。如果暂时不需要写总装机脚本,单独把截图脚本留在某个目录里,需要时随时执行也行。
我这段时间在虚拟机、办公机和笔记本上都跑过这套方案,最稳定的还是apt安装Flameshot配合XOrg会话,快捷键统一用Ctrl+Shift+A和Ctrl+Shift+6,基本不会再想折腾其它截图工具。顺手写这个小脚本花不了多少时间,但对平时截图体验的提升非常明显,这也是我把整个流程整理出来的原因。
