252 lines
5.8 KiB
Markdown
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)
|