ksnip the cross-platform screenshot and annotation tool
ksnip
版本 v1.11.0
Ksnip 是一款基于 Qt 的跨平台截图工具,为您的截图提供丰富的标注功能。
寻找联合维护者
多年来,我一直独自维护 ksnip 项目。如今,我已无法投入该项目应得的时间和精力。ksnip 对我而言依然意义重大,我希望通过吸纳一位或多位联合维护者,确保项目的持续发展和长期稳定。
我正在寻找有兴趣更积极参与项目开发的贡献者,协助进行功能开发、错误修复、版本发布以及整体项目方向的规划。虽然我可能无法像过去那样主导开发,但我不会完全退出。在过渡期间及以后,我仍将提供指导、参与讨论、进行代码审查并提供支持。
如果您对 ksnip 充满热情,并希望助力塑造其未来,请与我联系。

功能特性
最新版 ksnip 包含以下功能:
- 支持 Linux(X11、Plasma Wayland、GNOME Wayland 和 xdg-desktop-portal Wayland)、Windows 和 macOS 系统。
- 可通过鼠标绘制自定义矩形区域进行截图。
- 无需重新选择,即可对上次选定的矩形区域进行截图。
- 截取鼠标光标当前所在屏幕/显示器的画面。
- 截取全屏画面,包括所有屏幕/显示器。
- 截取当前获得焦点的窗口。
- 截取鼠标光标下方的窗口。
- 可选择是否包含鼠标光标进行截图。
- 将鼠标光标捕获为可移动和删除的标注项。
- 所有捕获选项均支持自定义捕获延迟。
- 直接以匿名或用户模式将截图上传至 imgur.com。
- 以匿名或用户模式通过 FTP 上传截图。
- 通过用户自定义脚本上传截图。
- 命令行支持,用于捕获截图并保存到默认位置、使用默认文件名和格式。
- 文件名通配符,支持年份(Y)、月份(Y)、月份(M)、日期(D)、时间(D)、时间(T)和计数器(多个 # 字符表示带前导零填充的数字)。
- 打印截图或将其保存为 PDF/PS 格式。
- 使用钢笔、马克笔、矩形、椭圆、文本及其他工具对截图进行标注。
- 使用贴纸对截图进行标注,并支持添加自定义贴纸。
- 裁剪图像或切除图像的垂直/水平切片。
- 通过模糊和像素化处理对图像区域进行模糊处理。
- 为图像添加效果(投影、灰度、颜色反转或边框)。
- 为捕获的图像添加水印。
- 用于捕获截图的全局热键(目前仅支持 Windows 和 X11)。
- 截图和图像的标签页功能。
- 通过对话框、拖放或从剪贴板粘贴打开现有图像。
- 作为单实例应用程序运行(次要实例将命令行参数发送给主实例)。
- 将截图固定在无框窗口中,使其始终保持在其他窗口之上。
- 用户定义的截图和后期处理操作。
- 通过插件支持 OCR(Windows 和 Linux/Unix)。
- 众多配置选项。
支持的截图类型
| 矩形区域 | 上次矩形区域 | 全屏 | 当前屏幕 | 活动窗口 | 光标下窗口 | 不含鼠标光标 | 截图门户 | |
|---|---|---|---|---|---|---|---|---|
| X11 | X | X | X | X | X | X | ||
| Plasma Wayland | X | X | X | |||||
Gnome Wayland < 41 |
X | X | X | X | X | X | ||
| xdg-desktop-portal* | X | |||||||
| Windows | X | X | X | X | X | X | ||
| macOS | X | X | X | X |
* xdg-desktop-portal 截图是由合成器拍摄并传递给 ksnip 的截图,您会看到一个需要额外确认的弹出对话框,其实现方式可能因合成器而异。目前,Snaps 和 Gnome Wayland >= 41 仅支持 xdg-desktop-portal 截图,这是 Gnome 和 Snaps 的限制,非原生截图工具不允许通过 xdg-desktop-portal 以外的任何方式进行截图。
安装二进制文件
可从 发布页面 下载二进制文件。 目前提供适用于 Linux 的 RPM、DEB、APT、Snap、Flatpak 和 AppImage,适用于 Windows 的压缩 EXE,以及 DMG 包中适用于 macOS 的 APP。
持续构建
每次推送提交后,所有受支持的二进制文件都会进行构建,可在发布页面顶部找到。持续构建的产物未经全面测试,且多数情况下仍处于开发阶段,因此请谨慎使用。
Linux
点击项目可展开详细信息。
AppImage
使用 AppImage 时,只需将其设置为可执行文件并运行即可,无需安装。
$ chmod a+x ksnip*.AppImage
$ ./ksnip*.AppImage
更多关于设置可执行文件的信息可以在这里找到。
RPM
只需通过 RPM 安装即可使用。
$ rpm -Uvh ksnip*.rpm
$ ksnip
DEB
只需通过 apt 安装即可开始使用。
$ sudo apt install ./ksnip*.deb
$ ksnip
APT
从 Ubuntu 21.04 Hirsute Hippo 版本开始,您可以通过 官方软件包 进行安装:
$ sudo apt install ksnip
对于较旧的 Ubuntu 版本,你可以使用 @nemonein 的非官方 PPA:
sudo add-apt-repository ppa:nemonein/ksnip
sudo apt update
sudo apt install ksnip
对于 Debian 11 及更高版本,您可以通过 official package 进行安装:
$ sudo apt install ksnip
对于 Debian 10 和 Debian 9,ksnip 可通过 Debian Backports 获取。
安装前,请分别为 Debian 10 和 Debian 9 启用 bullseye-backports 和 buster-backports 仓库,然后使用 sudo apt install ksnip 进行安装。
ArchLinux
Ksnip 位于 Extra 仓库 中,因此你可以通过 pacman 直接安装它。
$ sudo pacman -S ksnip
如果您希望从 GIT 仓库构建,可以使用 AUR 包(确保您也构建了必要的依赖项)。
$ yay -S ksnip-git kimageannotator-git kcolorpicker-git
Snap
Snap 的常规安装方法,将安装最新版本:
$ sudo snap install ksnip
持续构建版本也可作为 edge 版本获取,要安装此版本,您需要提供 edge 标志:
$ sudo snap install ksnip --edge
通过运行以下命令,可以加快 Snap 的启动时间,并清除控制台输出中 Could not create AF_NETLINK socket (Permission denied) 这一错误信息:
$ snap connect ksnip:network-observe
$ snap connect ksnip:network-manager-observe
如果您需要将截图保存到可移动媒体,还需进行以下额外连接:
$ snap connect ksnip:removable-media
这只需执行一次,它会连接一些目前无法自动连接的 Snap 接口。
Flatpak
Flatpak 的常规安装方法会安装最新版本:
$ flatpak install flathub org.ksnip.ksnip
然后启动它即可:
$ flatpak run org.ksnip.ksnip
Windows
MSI
MSI 安装程序会将 ksnip 安装到您的系统中,是在 Windows 下安装 ksnip 的首选方式。
EXE
包含所有必要依赖项的 EXE 文件会打包成一个压缩包,您只需使用常用的解压工具将其解压缩即可。之后,双击 ksnip.exe 就能启动 Ksnip。
macOS
APP
应用文件封装在 DMG 包中,您需要先打开该 DMG 包,然后将 ksnip.app 文件拖放到“应用程序”文件夹。完成后,双击 ksnip.app 即可启动应用程序。
Homebrew Cask
只需通过 Homebrew 进行安装,然后就可以从您的“应用程序”文件夹中开始使用了。
$ brew install --cask ksnip
插件
ksnip 的功能可以通过使用插件来扩展,这些插件需要单独下载并根据环境进行安装或解压缩。目前,在“选项 > 设置 > 插件”下,可以触发插件检测,检测位置可以是默认位置,也可以通过提供搜索路径来指定查找插件的位置。点击“检测”后,ksnip 会搜索已知插件,找到后将列出插件名称和版本。
默认搜索位置
Windows:plugins 目录,与 ksnip.exe 位于同一目录
Linux/Unix:/usr/local/lib、/usr/local/lib64、/usr/lib、/usr/lib64
版本选择
插件必须与 ksnip 的 Qt 版本和构建类型相匹配。如果您的 ksnip 版本使用 Qt 15.5.X 并以 DEBUG 模式构建,那么插件也必须满足相同条件。在大多数情况下,最新的 ksnip 和插件版本会使用相同的 Qt 版本,您只需注意不要混合使用 DEBUG 和 RELEASE 构建版本即可。
OCR(Windows 和 Linux/Unix)
ksnip 通过使用 ksnip-plugin-ocr 支持 OCR 功能,该插件利用 Tesseract 将图像转换为文本。当 OCR 插件加载后,“OCR”选项将在“选项 > OCR”下可用。最新的插件版本可在 此处 找到。
依赖项
ksnip 依赖于 kImageAnnotator 和 kColorPicker,从源代码构建 ksnip 之前需要先安装这些依赖项。安装说明可在各自的 Github 页面上找到。
从源代码构建
Linux/Unix
默认构建需要系统已安装 kImageAnnotator 和 kColorPicker。
依赖项
构建前请安装以下依赖:
- CMake
- C++17 编译器工具链(GCC 或 Clang)
- Qt5 或 Qt6(包含 Widgets、Network、Xml、PrintSupport、Svg、DBus 模块)
- kImageAnnotator(与您的 Qt 版本匹配)
- kColorPicker(与您的 Qt 版本匹配)
构建步骤
git clone https://github.com/ksnip/ksnip
cd ksnip
mkdir build && cd build
cmake ..
cmake --build .
Qt5 构建
cmake .. -DBUILD_WITH_QT6=OFF
cmake --build .
Qt6 构建
cmake .. -DBUILD_WITH_QT6=ON
cmake --build .
如果您使用的是 Archlinux,您可能更愿意通过 AUR 构建 ksnip。
macOS
在 macOS 上,默认构建需要系统安装的 kImageAnnotator 和 kColorPicker。要基于子模块进行构建,请在初始化子模块后启用以下标志:
git submodule update --init --recursive
cmake .. -DBUILD_WITH_QT6=ON -DUSE_SUBMODULE_KCOLORPICKER=ON -DUSE_SUBMODULE_KIMAGEANNOTATOR=ON
cmake --build .
Homebrew 依赖项
brew install cmake qt@5
对于 Qt6 构建:
brew install cmake qt
Qt5 构建
cmake .. -DBUILD_WITH_QT6=OFF
cmake --build .
Qt6 构建
cmake .. -DBUILD_WITH_QT6=ON
cmake --build .
Windows
默认构建需要系统已安装 kImageAnnotator 和 kColorPicker。
依赖项
构建前请安装以下组件:
- CMake
- Visual Studio(MSVC 工具链)
- Qt5 或 Qt6(包含 Widgets、Network、Xml、PrintSupport、Svg、DBus 模块)
- kImageAnnotator(需与您的 Qt 版本匹配)
- kColorPicker(需与您的 Qt 版本匹配)
构建步骤(Visual Studio)
git clone https://github.com/ksnip/ksnip
cd ksnip
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
Qt5 构建
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_WITH_QT6=OFF
cmake --build build --config Release
Qt6 构建
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DBUILD_WITH_QT6=ON
cmake --build build --config Release
已知问题
展开
X11
- 当合成器关闭时,带有透明背景的截图区域无法正常工作,此时会使用冻结背景。
macOS
Wayland
- 在 KDE Plasma
>= 5.80版本下,Portal 和原生截图功能无法正常工作。此问题源于 KDE Plasma 最近的一项更改,该更改阻止了对负责截图的 DBUS 接口的访问。未来的 Plasma 版本将修复 Portal 截图的此问题。使 Portal 截图工作的解决方法是将字符串X-KDE-DBUS-Restricted-Interfaces=org.kde.kwin.Screenshot添加到/usr/share/applications/org.freedesktop.impl.portal.desktop.kde.desktop文件中,然后重启。不要忘记在设置中强制启用 Portal 截图。问题 #424 - 在 Gnome Wayland 下,将图像复制到剪贴板然后粘贴到其他地方可能无法正常工作。目前原生 Wayland 存在此问题。一种解决方法是使用 XWayland,通过
QT_QPA_PLATFORM=xcb /usr/bin/ksnip命令启动 ksnip,或者通过导出该变量export QT_QPA_PLATFORM=xcb完全切换到 XWayland。问题 #416 - 在 Gnome
>= 41版本下,原生 Wayland 截图不再可行。Gnome 开发人员已禁止访问在 Wayland 下提供截图功能的 DBus 接口,仅允许非 Gnome 应用程序使用 xdg-desktop-portal 截图。对于 Gnome 开发人员而言,安全性优先于可用性。有一个开放的功能请求,希望只需授予一次截图权限,而不是每次截图都授予,帮助我们在此处提高对此类功能的关注度 here。 - 全局热键在 Wayland 下无法工作,这是由于 Wayland 的安全特性所致。除非合成器开发人员为我们提供处理全局热键的接口,否则此功能将不被支持。
屏幕缩放(HiDPI)
- Qt 在屏幕缩放方面存在问题,可能导致截图区域定位不正确。作为解决方法,可以配置截图区域的位置或偏移量,使其正确放置。问题 [#276]
Snap 版本
- 当 ksnip 或您进行拖放操作的应用程序以 snap 方式安装时,拖放功能可能无法正常工作。原因是图像通过临时目录共享,而在 snap 环境中,临时目录受到限制,每个应用程序只能看到自己的文件或用户的文件。解决此问题的方法是通过
选项 > 设置 > 应用程序 > 临时目录将临时目录位置更改为用户拥有的目录,如主目录、文档目录或下载目录。
讨论与社区
如果您有一般性问题、想法,或者只是想聊聊 ksnip,请加入我们的 Discord 或 IRC 服务器。
贡献
欢迎任何形式的贡献,无论是代码、翻译还是其他方面。目前,我们需要:
- 开发人员,负责为 Linux、Windows 和 macOS 编写代码和修复错误。我们只有一名开发人员,而功能请求和错误却在不断堆积。
- 测试人员,负责在不同的操作系统和发行版上测试版本。
- 文档撰写者,有许多功能普通用户并不了解。
- 错误报告:有关注释编辑器的任何错误或功能请求,请在 kImageAnnotator GitHub 页面的“Issue”部分报告。所有其他错误或功能请求可以在 ksnip GitHub 页面的“Issue”部分报告。
- 翻译 - 翻译使用 Weblate。有关注释器相关文本的翻译,请参考 kImageAnnotator
捐赠
ksnip 是一个非盈利的 copyleft 自由软件项目,但仍有一些成本需要承担,例如域名费用或用于跨平台支持的硬件费用。
如果您想提供帮助,或者只是想通过请开发者喝杯啤酒或咖啡来表达对他们工作的认可,您可以通过 这里 进行捐赠,我们始终欢迎您的支持 😃
为了改善我们对 macOS 的支持,我们正努力筹集资金购买一台 MacBook,您可以通过 这里 进行捐赠。
也接受加密货币捐赠:
BTC: bc1q6cke457fk8qhxxacl4nu5q2keudtdukrqe2gx0
ETH: 0xbde87a83427D61072055596e7a746CeC5316253C
BNB: bnb1fmy0vupsv23s36sejp07jetj6exj3hqeewkj6d
