Files
qemby/README.md
2026-06-10 17:40:51 +08:00

233 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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 | 不维护 |
## 安装
从 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)