feat: 添加 Linux GUI 版本构建支持

新增文件:
- icons/icon.png: 应用图标(512x512 RGBA PNG 格式)

变更:
- build-linux-package.sh: 更新脚本支持 GUI 版本编译
  - 新增 cargo build --release --features gui
  - 复制 GUI 程序和图标到 dist 目录
  - 更新 README 包含 GUI 运行说明

构建结果:
- CLI: target/release/impress_asr (2.1MB)
- GUI: target/release/impress_asr_gui (9.8MB)
- 打包:dist/impress-asr-linux-x64-20260521_201229.tar.gz (4.7MB)

Linux 运行方式:
- GUI: ./impress_asr_gui
- CLI: ./impress_asr --help
This commit is contained in:
impressionyang 2026-05-21 20:17:37 +08:00
parent 87ad8b4576
commit 1a78e4e23f
3 changed files with 6296 additions and 9 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# Linux 编译并打包脚本 # Linux 编译并打包脚本
# 编译 impress_asr_input_rust 项目并打包 # 编译 impress_asr_input_rust 项目并打包(包含 CLI 和 GUI 版本)
set -e set -e
@ -19,13 +19,13 @@ echo "=============================================="
# 清理旧的 dist 目录 # 清理旧的 dist 目录
echo "" echo ""
echo "[1/5] 清理旧的 dist 目录..." echo "[1/6] 清理旧的 dist 目录..."
rm -rf "$DIST_DIR" rm -rf "$DIST_DIR"
mkdir -p "$DIST_DIR" mkdir -p "$DIST_DIR"
# 构建前端 # 构建前端
echo "" echo ""
echo "[2/5] 构建前端..." echo "[2/6] 构建前端..."
cd "$PROJECT_DIR/web" cd "$PROJECT_DIR/web"
npm run build npm run build
cd "$PROJECT_DIR" cd "$PROJECT_DIR"
@ -37,16 +37,24 @@ ls -lh "$PROJECT_DIR/web/dist/"
# 编译 CLI 程序 # 编译 CLI 程序
echo "" echo ""
echo "[3/5] 编译 CLI 程序..." echo "[3/6] 编译 CLI 程序..."
cargo build --release cargo build --release
# 编译 GUI 程序
echo ""
echo "[4/6] 编译 GUI 程序..."
cargo build --release --features gui
# 复制必要文件 # 复制必要文件
echo "" echo ""
echo "[4/5] 复制必要文件到 dist 目录..." echo "[5/6] 复制必要文件到 dist 目录..."
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/" cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
cp "$PROJECT_DIR/target/release/impress_asr_gui" "$DIST_DIR/"
cp -r "$PROJECT_DIR/web/dist" "$DIST_DIR/" cp -r "$PROJECT_DIR/web/dist" "$DIST_DIR/"
cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models" cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models"
cp "$PROJECT_DIR/resources/configs/default.toml" "$DIST_DIR/config.toml" 2>/dev/null || true cp "$PROJECT_DIR/resources/configs/default.toml" "$DIST_DIR/config.toml" 2>/dev/null || true
cp "$PROJECT_DIR/icons/icon.png" "$DIST_DIR/" 2>/dev/null || true
cp "$PROJECT_DIR/icons/tray-icon.png" "$DIST_DIR/" 2>/dev/null || true
# 创建 README.md # 创建 README.md
cat > "$DIST_DIR/README.md" << 'README_EOF' cat > "$DIST_DIR/README.md" << 'README_EOF'
@ -61,8 +69,14 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
``` ```
2. **运行程序** 2. **运行程序**
**GUI 版本(推荐)**
```bash
./impress_asr_gui
```
**CLI 版本**
```bash ```bash
# CLI 版本
./impress_asr --help ./impress_asr --help
# 录音 # 录音
@ -76,7 +90,10 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
| 文件 | 说明 | | 文件 | 说明 |
|------|------| |------|------|
| `impress_asr_gui` | GUI 桌面应用 |
| `impress_asr` | CLI 命令行工具 | | `impress_asr` | CLI 命令行工具 |
| `icon.png` | 应用图标 |
| `tray-icon.png` | 托盘图标 |
| `config.toml` | 配置文件(可选) | | `config.toml` | 配置文件(可选) |
| `models/` | 模型文件目录 | | `models/` | 模型文件目录 |
| `dist/` | 前端资源目录 | | `dist/` | 前端资源目录 |
@ -85,9 +102,11 @@ cat > "$DIST_DIR/README.md" << 'README_EOF'
- **操作系统**Linux x64 (glibc 2.28+) - **操作系统**Linux x64 (glibc 2.28+)
- **支持的系统**Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+ - **支持的系统**Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
- **可选依赖** - **依赖库**
- `libgtk-3-0` - GTK3 图形界面
- `libwebkit2gtk-4.1` - WebKit 浏览器引擎
- `libappindicator3-1` - 系统托盘支持
- `libasound2` - 音频支持 - `libasound2` - 音频支持
- `libonnxruntime` - ONNX 模型推理
## ❓ 常见问题 ## ❓ 常见问题
@ -105,9 +124,20 @@ sudo apt-get install libasound2
sudo yum install alsa-lib sudo yum install alsa-lib
``` ```
### GUI 版本无法启动
确保已安装 GTK3 和 WebKit2GTK 依赖:
```bash
# Ubuntu/Debian
sudo apt-get install libgtk-3-0 libwebkit2gtk-4.1-0 libappindicator3-1
# CentOS/RHEL
sudo yum install gtk3 webkit2gtk4.1 libappindicator
```
## 📝 获取帮助 ## 📝 获取帮助
```bash ```bash
# CLI 帮助
./impress_asr --help ./impress_asr --help
``` ```
@ -120,7 +150,7 @@ ls -lh "$DIST_DIR/"
# 打包成 tar.gz # 打包成 tar.gz
echo "" echo ""
echo "[5/5] 打包成 tar.gz 文件..." echo "[6/6] 打包成 tar.gz 文件..."
cd "$DIST_DIR/.." cd "$DIST_DIR/.."
tar -czf "$OUTPUT_TAR" linux-x64/ tar -czf "$OUTPUT_TAR" linux-x64/
@ -133,7 +163,10 @@ echo "文件大小:$(ls -lh "$OUTPUT_TAR" | awk '{print $5}')"
echo "==============================================" echo "=============================================="
echo "" echo ""
echo "Linux 运行所需文件清单:" echo "Linux 运行所需文件清单:"
echo " - impress_asr_gui (GUI 桌面应用)"
echo " - impress_asr (CLI 工具)" echo " - impress_asr (CLI 工具)"
echo " - icon.png (应用图标)"
echo " - tray-icon.png (托盘图标)"
echo " - config.toml (可选,配置文件)" echo " - config.toml (可选,配置文件)"
echo " - models/ (模型文件目录)" echo " - models/ (模型文件目录)"
echo " - dist/ (前端资源)" echo " - dist/ (前端资源)"

File diff suppressed because it is too large Load Diff

BIN
icons/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB