flameshot-org/flameshot
GitHub: flameshot-org/flameshot
一款跨平台的开源截图软件,提供截屏标注、CLI 自动化和 Imgur 上传等功能,适合安全评估、运维记录和日常截图需求。
Stars: 29756 | Forks: 1898
## 预览

## 目录
- [功能](#features)
- [用法](#usage)
- [CLI 配置](#cli-configuration)
- [配置文件](#config-file)
- [键盘快捷键](#keyboard-shortcuts)
- [局部](#local)
- [全局](#global)
- [在 KDE Plasma 桌面上](#on-kde-plasma-desktop)
- [在 Gnome 上 (Ubuntu、Fedora 等)](#on-gnome-ubuntu-fedora-and-more)
- [在 XFCE 4 上](#on-xfce-4)
- [在 Fluxbox 上](#on-fluxbox)
- [注意事项](#considerations)
- [安装](#installation)
- [预编译包](#prebuilt-packages)
- [软件源中的包](#packages-from-repository)
- [macOS](#macos)
- [Windows](#windows)
- [编译](#compilation)
- [依赖项](#dependencies)
- [编译时](#compile-time)
- [运行时](#run-time)
- [可选](#optional)
- [Debian](#debian)
- [Fedora](#fedora)
- [Arch](#arch)
- [构建](#build)
- [安装](#install)
- [许可证](#license)
- [隐私政策](#privacy-policy)
- [代码签名政策](#code-signing-policy)
- [贡献](#contribute)
- [致谢](#acknowledgment)
## 功能
- 可自定义外观。
- 易于使用。
- 应用内截图编辑。
- DBus 接口。
- 上传到 Imgur。
## 用法
执行不带参数的 `flameshot` 命令将在后台启动一个运行的程序实例,而不采取任何操作。
如果你的桌面环境提供托盘区域,托盘中也会出现一个托盘图标,供用户进行配置和管理。
示例命令:
- 使用 GUI 截图:
flameshot gui
- 使用 GUI 截图并自定义保存路径:
flameshot gui -p ~/myStuff/captures
- 延迟 2 秒后使用 GUI 截图(可用于截取鼠标悬停工具提示等):
flameshot gui -d 2000
- 延迟并自定义保存路径的全屏截图(无 GUI):
flameshot full -p ~/myStuff/captures -d 5000
- 自定义保存路径并复制到剪贴板的全屏截图:
flameshot full -c -p ~/myStuff/captures
- 截取包含鼠标的屏幕并以 PNG 格式打印图像(字节):
flameshot screen -r
- 截取屏幕编号 1 并将其复制到剪贴板:
flameshot screen -n 1 -c
如果有疑问,请在您喜欢的桌面环境中选择第一个或第二个命令作为快捷方式。
在 Flameshot 运行时,系统面板中会出现一个系统托盘图标。
右键单击托盘图标,您将看到一些菜单项,用于打开配置窗口和信息窗口。
查看“关于”窗口,了解图形截图模式下所有可用的快捷方式。
### Windows 上的用法
在 Windows 上,`flameshot.exe` 将按预期支持所有命令行参数,
但它不会在控制台输出任何文本。例如,当您运行
`flameshot.exe -h` 时,这会是个问题。
如果您需要控制台输出,请改用运行 `flameshot-cli.exe`。`flameshot-cli.exe` 是一个 `flameshot.exe` 的最小包装器,可确保所有 stdout 被捕获并输出到控制台。
### CLI 配置
您可以使用图形菜单来配置 Flameshot,但您也可以选择使用终端或脚本来完成。
- 打开配置菜单:
flameshot config
- 在截图模式下显示初始帮助信息:
flameshot config --showhelp true
- 有关可用选项的更多信息,请使用 help 标志:
flameshot config -h
### 配置文件
您还可以在配置文件中编辑某些设置(例如覆盖默认颜色)。\
Linux 路径:`~/.config/flameshot/flameshot.ini`。\
Windows 路径:`C:\Users\{YOURNAME}\AppData\Roaming\flameshot\flameshot.ini`。
在将配置文件从 Linux 复制到 Windows 或反之亦然时,
请确保更正 `savePath` 变量,\
以便屏幕截图保存在您所需文件系统的正确目录中。
## 键盘快捷键
### 局部
这些快捷键在 GUI 模式下可用:
| 按键 | 描述 |
|--- |--- |
| P | 将铅笔设置为绘画工具 |
| D | 将直线设置为绘画工具 |
| A | 将箭头设置为绘画工具 |
| S | 将选择设置为绘画工具 |
| R | 将矩形设置为绘画工具 |
| C | 将圆形设置为绘画工具 |
| M | 将标记设置为绘画工具 |
| T | 为截图添加文本 |
| B | 将像素化设置为绘画工具 |
| ←, ↓, ↑, → | 移动选区 1px |
| Shift + ←, ↓, ↑, → | 调整选区大小 1px |
| Ctrl + Shift + ←, ↓, ↑, → | 对称调整选区大小 2px |
| Esc | 退出截图 |
| Ctrl + M | 移动选区 |
| Ctrl + C | 复制到剪贴板 |
| Ctrl + S | 将选区保存为文件 |
| Ctrl + Z | 撤销上次修改 |
| Ctrl + Shift + Z | 重做下次修改 |
| Ctrl + Q | 离开截屏 |
| Ctrl + O | 选择应用以打开截图 |
| Ctrl + Return | 在文本区域提交文本|
| Ctrl + Backspace | 取消当前选区 |
| Return | 将选区上传到 Imgur |
| Spacebar | 切换侧边栏的可见性(包含所选工具的选项、绘画颜色的颜色选择器以及历史菜单) |
| G | 启动颜色选择器 |
| 右键单击 | 显示色轮 |
| 鼠标滚轮 | 更改工具的粗细 |
| Print screen | 截取屏幕 |
| Shift + Print | 截图历史 |
| Ctrl + 绘制 *线条*、*箭头* 或 *标记* | 仅水平、垂直或对角线绘制 |
| Ctrl + 绘制 *矩形* 或 *圆形* | 保持宽高比 |
Shift + 拖动选区的某个控制点:在相对的控制点进行镜像缩放。
### 全局
- Windows:Prt Sc(固定,无法更改)和 Win + Shift + X(可在设置中更改)
- macOS:cmd + Shift + X(可在设置中更改)
- Linux:Flameshot 尚未开箱即用地支持 Prt Sc,但您可以通过一些配置来设置:
#### 在 KDE Plasma 桌面上
为了简化配置,仓库中有一个[文件](docs/shortcuts-config/flameshot-shortcuts-kde.kksrc),或多或少能自动化此过程。默认情况下,此文件将分配以下热键:
| 按键 | 描述 |
|--- |--- |
| Prt Sc | 启动 Flameshot 截图工具并截取屏幕截图 |
| Ctrl + Prt Sc | 等待 3 秒,然后启动 Flameshot 截图工具并截取屏幕截图 |
| Shift + Prt Sc | 截取全屏(所有显示器)截图并保存 |
| Ctrl + Shift + Prt Sc | 截取全屏(所有显示器)截图并将其复制到剪贴板 |
如果您不喜欢默认设置,可以稍后更改它们。
使用配置的步骤:
1. 配置文件会让 Flameshot 自动将屏幕截图保存到 `~/Pictures/Screenshots`,而不会打开保存对话框。请运行以下命令确保该文件夹存在:
mkdir -p ~/Pictures/Screenshots
(如果您不喜欢默认位置,可以跳过此步骤并在稍后配置您首选的目录。)
2. 下载配置文件:
cd ~/Desktop
wget https://raw.githubusercontent.com/flameshot-org/flameshot/master/docs/shortcuts-config/flameshot-shortcuts-kde.khotkeys
3. 确保您已使用包管理器安装了 `khotkeys`,以便在 KDE Plasma 中启用自定义快捷方式。
4. 转到 _系统设置_ → _快捷键_ → _自定义快捷键_。
5. 如果存在 Spectacle(默认的 KDE 截图工具)条目,则需要将其禁用,因为它的快捷方式可能会与 Flameshot 的冲突。通过取消勾选 _Spectacle_ 条目来实现。
6. 点击 _编辑_ → _导入..._,导航到配置文件并将其打开。
7. 现在 Flameshot 条目应该会出现在列表中。点击 _应用_ 以应用更改。
8. 如果要更改默认热键,可以展开条目,选择相应的操作并根据需要进行修改;该过程不言自明。
9. 如果您将 Flameshot 作为 Flatpak 安装,则需要创建一个指向该命令的符号链接:
ln -s /var/lib/flatpak/exports/bin/org.flameshot.Flameshot ~/.local/bin/flameshot
#### 在 Gnome 上 (Ubuntu、Fedora 等)
要在 Gnome 中使用 Flameshot 而不是默认的截图应用程序,我们需要移除 Prt Sc 键上的绑定,然后为 `flameshot gui` 创建一个新绑定([改编自](https://askubuntu.com/posts/1039949/revisions) [Pavel 在 AskUbuntu 上的回答](https://askubuntu.com/revisions/1036473/1))。
1. 移除 Prt Sc 上的绑定:
转到 _设置_ > _键盘_ > _查看和自定义快捷键_ > _截图_ > _交互式截图_ 并按下 `backspace`
2. 在 Prt Sc 上添加自定义绑定:
转到 _设置_ > _键盘_ > _查看和自定义快捷键_ > _自定义快捷键_ 并按下底部的 '+' 按钮。
3. 按您的喜好命名命令,例如 `flameshot`。并在命令中插入 `/usr/bin/flameshot gui`;如果通过 flatpak 安装,则使用 `flatpak run org.flameshot.Flameshot gui`。
4. 然后点击 "_设置快捷键.._" 并按下 Prt Sc。这将显示为 "_print_"。
现在每次按下 Prt Sc 时,它将启动 Flameshot GUI 而不是默认应用程序。
#### 在 XFCE 4 上
1. 转到 `键盘` 设置
2. 切换到 `应用程序快捷键` 选项卡
3. 找到条目
命令 快捷键
xfce4-screenshooter -fd 1 Print
4. 将 `xfce4-screenshooter -fd 1` 替换为 `flameshot gui`
现在每次按下 Prt Sc 时,它将启动 Flameshot GUI 而不是默认应用程序。
#### 在 Fluxbox 上
1. 编辑您的 `~/.fluxbox/keys` 文件
2. 添加一个新条目。`Print` 是按键名称,`flameshot gui` 是 shell 命令;更多选项请参见 [fluxbox](https://sillyslux.github.io/fluxbox-wiki/en/wiki/Keyboard-Shortcuts/)。
Print :Exec flameshot gui
3. 使用菜单中的 **Reconfigure** 选项刷新 Fluxbox 配置。
## 注意事项
- 实验性的 Gnome Wayland 和 Plasma Wayland 支持。
- 如果您使用的是 Gnome,则需要安装 [AppIndicator 和 KStatusNotifierItem 支持](https://extensions.gnome.org/extension/615/appindicator-support/) 扩展,才能看到系统托盘图标。
- 当您处于截图模式且没有活动选区时,按下 Enter 或 Ctrl + C,整个桌面将被复制到剪贴板。按下 Ctrl + S 会将您的截图保存到文件中。查看 [快捷键](#keyboard-shortcuts) 获取更多信息。
- Flameshot 在包含 D-Bus 的桌面环境中效果最佳。有关在最小化窗口管理器(dwm、i3、xmonad 等)中使用 Flameshot 的提示,请参阅这篇[文章](https://wiki.archlinux.org/index.php/Flameshot#Troubleshooting)。
- 为了加快 Flameshot 的首次启动速度(应用的 D-Bus 初始化可能很慢),请考虑在开机时自动启动应用程序。
- 快速提示:如果您没有将 Flameshot 设置为开机自动启动,并且想要设置键盘快捷键,请使用以下内容作为键绑定的命令:
( flameshot &; ) && ( sleep 0.5s && flameshot gui )
## 安装
Flameshot 可以安装在 Linux、Microsoft Windows 和 macOS 上。
### 预编译包
[GitHub 项目仓库的发布页面](https://github.com/flameshot-org/flameshot/releases)提供了一些预编译包。
### 软件源中的包
某些 Linux 发行版的软件源中提供了相应的包:
- [Arch](https://archlinux.org/packages/extra/x86_64/flameshot/):`pacman -S flameshot`
+ 快照版也可通过 AUR 获取:[flameshot-git](https://aur.archlinux.org/packages/flameshot-git)。
- [Debian 10+](https://tracker.debian.org/pkg/flameshot):`apt install flameshot`
+ 适用于 Debian 9 ("Stretch") 的包也可[通过 stretch-backports 获取](https://backports.debian.org/)。
- [Ubuntu](https://launchpad.net/ubuntu/+source/flameshot):`apt install flameshot`
- [openSUSE](https://software.opensuse.org/package/flameshot):`zypper install flameshot`
- [Void Linux](https://github.com/void-linux/void-packages/tree/master/srcpkgs/flameshot):`xbps-install flameshot`
- [Solus](https://dev.getsol.us/source/flameshot/):`eopkg it flameshot`
- [Fedora](https://src.fedoraproject.org/rpms/flameshot):`dnf install flameshot`
- [NixOS](https://search.nixos.org/packages?query=flameshot):`nix-env -iA nixos.flameshot`
- [ALT](https://packages.altlinux.org/en/sisyphus/srpms/flameshot/):`su - -c "apt-get install flameshot"`
- [Snap/Flatpak/AppImage](https://github.com/flameshotapp/packages)
- [Docker](https://github.com/ManuelLR/docker-flameshot)
- [Windows](https://github.com/majkinetor/au-packages/tree/master/flameshot)
### macOS
- [MacPorts](https://www.macports.org):`sudo port selfupdate && sudo port install flameshot`
- [Homebrew](https://brew.sh):`brew install --cask flameshot`
**请注意**,由于 macOS 安全功能,您可能无法打开使用 brew 安装的 flameshot。
如果您看到消息 `“flameshot”无法打开,因为无法验证开发者。`,您将需要
按照以下步骤操作:
1. 转到“应用程序”文件夹(Finder > 前往 > 应用程序,或 Shift+Command+A)
2. 右键点击“flameshot.app”并从上下文菜单中选择“打开”
3. 在对话框中点击“打开”
在 macOS 15 及更高版本上,执行此操作后您必须转到“系统设置”->“隐私与安全性”并点击“仍然允许”,或者您可以在第一次使用以下命令打开 flameshot。
```sudo xattr -rd com.apple.quarantine /Applications/flameshot.app```
完成上述所有步骤后,`flameshot` 将可以在您的 Mac 上正常打开。
### Windows
- [Scoop](https://github.com/ScoopInstaller/Extras/blob/master/bucket/flameshot.json):`scoop install flameshot`
### 托盘图标
**请注意**,要让 Flameshot 图标出现在您的托盘区域,您应该安装系统托盘软件。对于使用诸如 [dwm](https://dwm.suckless.org/) 之类最小化[窗口管理器](https://wiki.archlinux.org/index.php/window_manager)的用户来说尤其如此。在某些[桌面环境](https://wiki.archlinux.org/index.php/Desktop_environment)安装(例如 Gnome)中,系统托盘可能缺失,您可以安装应用程序或插件(例如 [Gnome shell 扩展](https://extensions.gnome.org/extension/1503/tray-icons/))以向您的设置中添加系统托盘。已有[报告](https://github.com/flameshot-org/flameshot/issues/1009#issuecomment-700781081)) 称包括 Flameshot 在内的某些软件的图标不会显示在 [gnome-shell-extension-appindicator](https://github.com/ubuntu/gnome-shell-extension-appindicator) 中。
或者,如果您不想使用系统托盘,可以随时从终端调用 Flameshot。参见[用法部分](#usage)。
## 编译
要在您的系统中构建应用程序,您需要安装它所需的依赖项,并且不同发行版的包名称可能会有所不同,请参阅下面的[依赖项](#dependencies)获取更多信息。您也可以通过[其安装程序](https://www.qt.io/download-qt-installer)安装大部分 Qt 依赖项。如果您之前开发过 Qt 应用程序,您可能已经拥有它们了。
本项目使用 [CMake](https://cmake.org/) 构建系统,因此您需要安装它才能构建项目(在大多数 Linux 发行版中,它作为一个名为 `cmake` 的包在标准存储库中提供)。如果您的发行版提供的 CMake 版本太旧(例如 Ubuntu 或 Debian),您可以[在官方网站上下载它](https://cmake.org/download/)。
您也可以在 C++ IDE 中打开并构建/调试项目。例如,在 Qt Creator 中,您只需在将 CMake 安装到系统后,通过菜单中的 `打开文件或项目` 来打开 `CMakeLists.txt`。[关于 Qt Creator 中 CMake 项目的更多信息](https://doc.qt.io/qtcreator/creator-project-cmake.html)。
### 依赖项
#### 编译时
- Qt >= 6.2.4(在 Ubuntu Jammy 上默认可用)
+ 开发工具
- GCC >= 11
- CMake >= 3.22
#### 运行时
- Qt
+ SVG
#### 可选
- Git
- OpenSSL
- CA Certificates
- Qt Image Formats - 用于提供额外的导出图像格式(例如 tiff、webp 等)
#### Debian
```
# Compile-time
apt install g++ cmake build-essential qt6-base-dev qt6-tools-dev-tools qt6-svg-dev qt6-tools-dev
# Run-time
apt install libkf6guiaddons-dev libqt6dbus6 libqt6network6 libqt6core6 libqt6widgets6 libqt6gui6 libqt6svg6 qt6-qpa-plugins
# 可选
apt install git openssl ca-certificates qt6-image-formats-plugins
```
#### Fedora
```
# Compile-time
dnf install gcc-c++ cmake qt6-qtbase-devel qt6-qtsvg-devel qt6-qttools qt6-linguist qt6-qttools-devel kf6-kguiaddons-devel
# Run-time
dnf install qt6-qtbase qt6-qtsvg kf6-kguiaddons
# 可选
dnf install git openssl ca-certificates qt6-qtimageformats
```
#### Arch
```
# Compile-time
pacman -S cmake base-devel git qt6-base qt6-tools kguiaddons
# Run-time
pacman -S qt6-svg
# 可选
pacman -S openssl ca-certificates qt6-imageformats
```
#### Nix
开发 Shell:
```
# 不使用 flakes:
nix-shell
# 使用 flakes:
nix develop
```
```
# 构建 flameshot
nix build
# 构建并运行 flameshot
nix run
```
#### macOS
首先,您需要安装 [brew](https://brew.sh),然后安装依赖项
```
brew install qt6
brew install cmake
```
### 构建
安装所有依赖项后,即可构建 Flameshot。
#### 安装/构建目录
为了能正确加载翻译,构建过程需要知道您要将 Flameshot 安装到哪里。
```
# 构建文件将放置的目录,可以是相对路径
export BUILD_DIR=build
# 安装 Flameshot 的目录前缀。如果您只是构建而不想
# 安装,请注释掉此环境变量。
# 这不包括安装路径的 bin/flameshot 部分,
# 例如,在 /opt/flameshot/bin/flameshot 中,CMAKE_INSTALL_PREFIX 为 /opt/flameshot
# 这必须是绝对路径。要求 CMAKE 3.29。
export CMAKE_INSTALL_PREFIX=/opt/flameshot
# Linux
cmake -S . -B "$BUILD_DIR" \
&& cmake --build "$BUILD_DIR"
#MacOS
cmake -S . -B "$BUILD_DIR" \
-DQt6_DIR="$(brew --prefix qt6)/lib/cmake/Qt6" \
&& cmake --build "$BUILD_DIR"
```
当 `cmake --build` 命令完成后,您可以从 `project_folder/build/src` 文件夹启动 Flameshot。
### 安装
请注意,如果您从源代码安装,_没有_ 卸载程序,因此请考虑安装到自定义目录。
#### 安装到自定义目录
确保您使用的是 `>= 3.29` 的 cmake,并在构建 Flameshot 时将 `$CMAKE_INSTALL_PREFIX` 设置为安装目录。如果不这样做,在使用自定义目录时将无法找到翻译。
然后,运行以下命令:
```
# !请使用 CMAKE_INSTALL_PREFIX 构建并使用 cmake >= 3.29!使用旧版 cmake 将导致
# 安装到默认的 /usr/local 目录中。
# 您可能需要使用特权运行此命令
cmake --install "$BUILD_DIR"
```
#### 安装到默认安装目录
```
# 您可能需要使用特权运行此命令
cmake --install "$BUILD_DIR"
```
### 常见问题解答
## 许可证
- 主要代码在 [GPLv3](LICENSE) 下授权
- Flameshot 的标志在 [Free Art License v1.3](data/img/app/flameshotLogoLicense.txt) 下授权
- 按钮图标在 Apache License 2.0 下授权。参见:https://github.com/google/material-design-icons
- capture/capturewidget.cpp 的代码基于 https://github.com/ckaiser/Lightscreen/blob/master/dialogs/areadialog.cpp (GPLv2)
- capture/capturewidget.h 的代码基于 https://github.com/ckaiser/Lightscreen/blob/master/dialogs/areadialog.h (GPLv2)
- 我从 KSnapshot regiongrabber.cpp 的 `796531` 修订版中复制了几行代码 (LGPL)
- Qt-Color-Widgets 取自并修改自 https://github.com/mbasaglia/Qt-Color-Widgets(参见项目中的许可证和例外情况)(LGPL/GPL)
信息:如果我获取了您项目的代码,并暗示重新授权为 GPLv3,您可以在应用项目原有先前许可证的情况下重用我的更改。
## 隐私政策
除非用户或安装/操作人员特别要求,否则本程序不会将任何信息传输到其他网络系统。
## 代码签名政策
对于 Windows 二进制文件,本程序使用由 [SignPath.io](https://signpath.io?utm_source=foundation&utm_medium=github&utm_campaign=flameshot) 提供的免费代码签名,以及由 [SignPath Foundation](https://signpath.org?utm_source=foundation&utm_medium=github&utm_campaign=flameshot) 提供的证书。
代码签名目前是一个手动过程,因此并非每个补丁版本都会被签名。
## 贡献
如果您想要贡献,请查看 [CONTRIBUTING.md](docs/CONTRIBUTING.md)
## 致谢
感谢那些在早期开发过程中表现出浓厚兴趣的人:
- [lupoDharkael](https://github.com/lupoDharkael)
- [Cosmo](https://github.com/philpem)
- [XerTheSquirrel](https://github.com/XerTheSquirrel)
- [Sugus GNU/Linux 的成员们](https://github.com/SUGUS-GNULinux)
- ismatori
感谢赞助商:
- [Namecheap](https://www.namecheap.com/)
- [JetBrains](https://www.jetbrains.com/)
- [SignPath](https://signpath.io/)
- [addy.io](https://addy.io/)
标签:Bash脚本, C++, Flameshot, 图像标注, 图像编辑, 屏幕截图, 截图软件, 截屏工具, 效率工具, 数据擦除, 桌面应用