本文是 README.md 安装一节的展开:依赖、各发行版说明、install.sh 全部开关、手动编译与安装,
以及 Wayland 下为什么必须用安装脚本装。
./install.sh # 装依赖 → 构建 → 安装到当前用户
./install.sh --autostart # 同上,并添加登录自启
./install.sh --skip-deps # 依赖已就绪:只构建 + 安装
./install.sh --deps-only # 只装依赖
./install.sh --no-build # 不构建,安装已有产物- 脚本只用用户级目录(
~/.local),但装系统依赖时需要 sudo;不要用 sudo 运行整个脚本。 - 支持自动装依赖的发行版:Fedora、Arch Linux、Debian / Ubuntu 及声明兼容这些发行版的衍生系统
(通过
os-release识别,用对应包管理器)。 - 软件源需提供 Qt ≥ 6.5、KF6、LayerShellQt 6;旧发行版缺包时请先升级系统,或自行准备依赖后
用
--skip-deps。 - 不可变 Fedora(Silverblue/Kinoite)请先用系统对应方式准备依赖,再用
--skip-deps。 - Fedora 默认装
ffmpeg-free(已有ffmpeg时保留);若检测到缺libx264会提示 MP4 / H.264 不可用,GIF 与默认的 FFV1 录制仍然可用。
| 开关 | 作用 |
|---|---|
--skip-deps |
跳过系统依赖安装(依赖已准备好时用) |
--deps-only |
仅安装依赖,不构建也不安装程序(与 --skip-deps 互斥) |
--no-build |
跳过构建,安装 build/ 里已有的产物 |
--autostart |
添加当前用户的登录自启(写 ~/.config/autostart/seashot.desktop) |
-y / --yes |
自动确认包管理器的安装提示 |
-h / --help |
显示用法 |
手动准备依赖或使用其他发行版时,按需安装后传 --skip-deps:
| 类型 | 依赖 |
|---|---|
| 🏗️ 构建工具 | 支持 C++20 的编译器、CMake ≥ 3.21、Ninja、pkg-config |
| 🪟 界面与桌面 | Qt ≥ 6.5:Core、Gui、Widgets、DBus、Network、Test;KF6 GlobalAccel、KF6 StatusNotifierItem;LayerShellQt |
| 🔌 X11 后端(可选) | xcb、xcb-shm、xcb-ewmh;缺失时自动关闭 X11 后端 |
| 📡 PipeWire 帧源(可选) | libpipewire-0.3;缺失或不可用时回退到截图轮询录制 |
| 🎞️ 录制与导出 | ffmpeg,含 FFV1、libx264 与 GIF 调色板滤镜;部分测试还需要 ffprobe |
| 📋 Wayland 剪贴板 | 推荐 wl-clipboard(wl-copy 负责让复制内容在进程退出后仍然可用) |
| 🔤 OCR(可选) | tesseract 及所需语言包,例如 chi_sim(中文简体)、eng(英文) |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j 2
# 依赖已就绪,只安装刚才构建的版本(无需 sudo)
./install.sh --skip-deps --no-build安装结果:
- 二进制:
~/.local/bin/seashot - 应用菜单入口:
~/.local/share/applications/seashot.desktop - 图标:
resources/icons/seashot.png→~/.local/share/icons/hicolor/512x512/apps/seashot.png(菜单和登录自启入口直接引用安装后的图片路径,使用同一张透明圆角图标) - 登录自启(仅
--autostart):~/.config/autostart/seashot.desktop
更新图标后,请运行 ./install.sh --skip-deps 并重新启动 SeaShot;已有登录自启入口时可加上
--autostart 一起更新。图标也内嵌在程序中,--no-build 不会更新旧二进制里的图标。
KWin 判定"谁可以调用 org.kde.KWin.ScreenShot2"的依据是:
调用方 PID → /proc/<pid>/exe → 匹配到的 desktop 文件 → X-KDE-DBUS-Restricted-Interfaces
所以:
- 二进制必须装在固定路径(默认
~/.local/bin/seashot); - desktop 文件里的
Exec=必须与该路径逐字一致; - 脚本写完还会刷新 KService 缓存(
kbuildsycoca6 --noincremental),KWin 才能找到它。
直接从 build/ 目录运行可能报 Error.NoAuthorized。 装好后如果菜单/授权仍不生效,
注销重登一次即可(KService 缓存刷新后通常立刻生效)。
多数发行版的 PATH 默认不含 ~/.local/bin。三种处理:
~/.local/bin/seashot --capture # 1) 用完整路径
export PATH="$HOME/.local/bin:$PATH" # 2) 加进 shell 配置(当前会话生效)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile # 3) 写进登录环境KDE 的快捷键/自启配置里建议直接写完整路径,避免继承到不含 ~/.local/bin 的 PATH。