Files
qemby/README.md
T

252 lines
5.8 KiB
Markdown

<p align="center">
<img src="src/qEmbyApp/resources/svg/qemby_logo.svg" width="120" alt="qEmby Logo"/>
</p>
<h1 align="center">qEmby</h1>
<p align="center">
<b>面向 Arch Linux 的 Emby / Jellyfin 桌面客户端</b>
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT"/></a>
<img src="https://img.shields.io/badge/Platform-Arch%20Linux-1793D1.svg" alt="Platform: Arch Linux"/>
<img src="https://img.shields.io/badge/Qt-6.x-41CD52.svg" alt="Qt 6"/>
<img src="https://img.shields.io/badge/C%2B%2B-20-orange.svg" alt="C++20"/>
</p>
qEmby 是一个使用 Qt 6 / C++20 编写的 Emby、Jellyfin 桌面客户端,内置基于 libmpv 的播放器,并针对 Arch Linux 桌面环境维护。
当前项目只维护 Arch Linux 版本。Windows 专属逻辑已经移除,macOS 和 Windows 不作为发布目标。
## 截图
<p align="center">
<img src="screenshots/2.png" width="45%" alt="首页"/>
<img src="screenshots/5.png" width="45%" alt="影片详情"/>
</p>
<p align="center">
<img src="screenshots/3.png" width="45%" alt="设置"/>
<img src="screenshots/4.png" width="45%" alt="管理仪表盘"/>
</p>
## 功能
- 浏览 Emby / Jellyfin 媒体库,支持电影和剧集视图。
- 内置 libmpv 播放器,支持 VAAPI、VDPAU、CUDA 和软件解码选项。
- 支持外部播放器:MPV、VLC、MPC-Qt。
- 支持播放进度同步、连续播放、上一集 / 下一集和播放完成画廊。
- 支持弹幕搜索、手动匹配、缓存、ASS 管线和原生弹幕渲染。
- 支持媒体详情、元数据编辑、媒体识别、图片更新和播放列表管理。
- 支持下载管理器、全局搜索、搜索历史、深色 / 浅色主题。
- 支持服务器管理仪表盘和 WebDAV 配置同步。
- 支持中文、英文、法语界面。
## 平台支持
| 平台 | 状态 |
| --- | --- |
| Arch Linux x86_64 | 维护中 |
| 其他 Linux 发行版 | 可自行编译,未作为发布目标 |
| Windows / macOS | 不维护 |
## 安装
推荐使用 pacman 仓库安装。先一键添加 qEmby 仓库:
```bash
grep -q '^\[qemby\]' /etc/pacman.conf || printf '\n[qemby]\nSigLevel = Optional TrustAll\nServer = https://gitea.mygoband.com/carrydela/qemby-repo/raw/branch/main/$arch\n' | sudo tee -a /etc/pacman.conf >/dev/null
```
刷新数据库并安装:
```bash
sudo pacman -Syy
sudo pacman -S qemby
```
确认仓库配置:
```bash
grep -A2 '^\[qemby\]' /etc/pacman.conf
```
也可以从 Gitea Releases 下载普通发布包后手动安装:
```bash
sudo pacman -U qemby-0.0.6-1-x86_64.pkg.tar.zst
```
启动:
```bash
qemby
```
卸载:
```bash
sudo pacman -R qemby
```
如果原生 Wayland 下遇到窗口或 OpenGL 兼容性问题,可以临时使用 XCB 后端:
```bash
QEMBY_FORCE_XCB=1 qemby
```
发布给普通用户时,应先按下文重新构建安装包,然后上传生成的普通包:
```text
packaging/arch/qemby-0.0.6-1-x86_64.pkg.tar.zst
```
不要把 `qemby-debug-*.pkg.tar.zst` 当作普通安装包分发;它体积更大,主要用于调试符号。
## 从源码构建
安装构建依赖:
```bash
sudo pacman -S --needed \
base-devel git cmake ninja pkgconf \
qt6-base qt6-tools qt6-svg qt6-websockets \
mpv qcoro spdlog fmt hicolor-icon-theme
```
克隆仓库:
```bash
git clone --recursive <你的 Gitea 仓库地址> qEmby
cd qEmby
```
配置并构建:
```bash
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DQEMBY_USE_SYSTEM_DEPS=ON \
-DQEMBY_FETCHCONTENT_FALLBACK=OFF
cmake --build build
```
直接运行开发构建:
```bash
./build/bin/qEmbyApp
```
## 构建 Arch 安装包
本仓库包含本地发布用的 PKGBUILD:
```bash
git archive --format=tar.gz --prefix=qEmby-0.0.6/ \
-o packaging/arch/qemby-0.0.6.tar.gz HEAD
cd packaging/arch
makepkg -f
```
安装刚生成的包:
```bash
sudo pacman -U qemby-0.0.6-1-x86_64.pkg.tar.zst
```
如果希望一边构建一边安装:
```bash
makepkg -fi
```
## 发布流程
1. 确认版本号:`CMakeLists.txt` 和 `packaging/arch/PKGBUILD` 中的版本应一致。
2. 从当前提交生成源码包并构建 Arch 安装包:
```bash
git archive --format=tar.gz --prefix=qEmby-0.0.6/ \
-o packaging/arch/qemby-0.0.6.tar.gz HEAD
cd packaging/arch
makepkg -f
```
3. 本地安装并启动测试:
```bash
sudo pacman -U qemby-0.0.6-1-x86_64.pkg.tar.zst
qemby
```
也可以直接测试开发构建:
```bash
cd ../..
cmake --build build
./build/bin/qEmbyApp
```
4. 在 Gitea 创建版本标签,例如 `v0.0.6`。
5. 上传 `qemby-0.0.6-1-x86_64.pkg.tar.zst` 作为 Release 附件。
6. 在 Release 说明中写清楚安装命令:
```bash
sudo pacman -U qemby-0.0.6-1-x86_64.pkg.tar.zst
```
## 项目结构
```text
qEmby/
├── CMakeLists.txt
├── cmake/
├── libs/
│ └── qwindowkit/
├── packaging/
│ └── arch/
│ ├── PKGBUILD
│ └── README.md
├── screenshots/
└── src/
├── qEmbyCore/ # API、模型、服务、配置
└── qEmbyApp/ # Qt Widgets 桌面应用
```
## 技术栈
| 组件 | 说明 |
| --- | --- |
| UI 框架 | Qt 6 Widgets |
| 语言 | C++20 |
| 播放器 | libmpv |
| 异步 | QCoro |
| 日志 | spdlog |
| 窗口框架 | QWindowKit |
| 构建系统 | CMake + Ninja |
| 打包 | Arch PKGBUILD |
## 反馈
请通过 Gitea Issues 反馈问题。提交问题时建议附上:
- qEmby 版本。
- 桌面环境和会话类型,例如 KDE Wayland、GNOME Wayland、X11。
- 复现步骤。
- 终端启动日志。
## 许可证
本项目基于 [MIT License](LICENSE) 开源。
## 致谢
- [Qt](https://www.qt.io/)
- [mpv](https://mpv.io/)
- [QWindowKit](https://github.com/stdware/qwindowkit)
- [QCoro](https://github.com/danvratil/qcoro)
- [spdlog](https://github.com/gabime/spdlog)