# ukui-menu-extensions

UKUI 桌面菜单的插件扩展集合，为 UKUI 菜单提供额外功能模块。

## 扩展模块

| 扩展 | 包名 | 说明 |
|------|------|------|
| **ernie-bot** | `ukui-menu-ernie-bot` | AI 智能助手，集成文心一言对话能力，提供会话管理与消息交互 |
| **recent-file** | `ukui-menu-recent-file` | 最近文件，展示用户近期访问的文件，支持快速打开和右键操作 |

## 依赖

- CMake >= 3.16
- Qt 6（Core, Gui, Quick, Widgets, Network, DBus, LinguistTools）或 Qt 5
- libukui-menu-dev（UKUI 菜单插件框架）
- libukui-quick-dev (>= 4.20.8.0)
- libglib2.0-dev
- libkysdk-base-dev、libkysdk-system-dev
- libqt6xdg-dev（Qt6 XDG 工具库）
- pkgconf

## 构建

```bash
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
```

仅构建单个扩展：

```bash
cmake -DBUILD_TEST=OFF ..
make -j$(nproc) ernie-bot
# 或
make -j$(nproc) recent-file
```

### 构建测试

```bash
cmake -DBUILD_TEST=ON ..
make -j$(nproc)
```

## 安装路径

构建产物安装到以下位置：

| 文件 | 路径 |
|------|------|
| 插件库 | `/usr/lib/<arch>/ukui-menu/extensions/` |
| 翻译文件 | `/usr/share/ukui-menu/extensions/translations/` |

## 国际化

项目通过 Qt Linguist 支持多语言翻译，每个扩展均包含独立的翻译文件。

支持的语言：简体中文、繁体中文（香港）、繁体中文、阿拉伯语、藏语、德语、西班牙语、法语、哈萨克语、吉尔吉斯语、蒙古语、维吾尔语、越南语。

## 项目结构

```
ukui-menu-extensions/
├── CMakeLists.txt              # 顶层构建配置
├── LICENSE                     # GPL-3.0 许可证
├── README.md
├── debian/                     # Debian 打包文件
├── ernie-bot/                  # AI 智能助手扩展
│   ├── CMakeLists.txt
│   ├── content/                # QML 界面与图标资源
│   │   ├── icon/
│   │   └── ui/                 # QML 界面文件
│   ├── src/                    # C++ 源码
│   │   ├── ernie-bot.h/cpp     # 插件入口
│   │   ├── chat.h/cpp          # 对话管理
│   │   ├── session.h/cpp       # 会话
│   │   ├── session-manager.h/cpp
│   │   ├── message*.h/cpp      # 消息模型与操作
│   │   └── metadata.json       # 插件元数据
│   ├── test/                   # 测试代码
│   └── translations/           # 国际化翻译文件
└── recent-file/                # 最近文件扩展
    ├── CMakeLists.txt
    ├── recent-file-extension.h/cpp
    ├── event-track.h/cpp       # 事件追踪
    ├── metadata.json           # 插件元数据
    └── translations/           # 国际化翻译文件
```

## 开发接口

扩展基于 UKUI 菜单插件框架（`libukui-menu-dev`）开发，需实现以下接口：

- `UkuiMenu::MenuExtensionPlugin` — 插件注册入口，通过 `Q_PLUGIN_METADATA` 注册
- `UkuiMenu::WidgetExtension` — 提供 UI 组件与数据交互
- `UkuiMenu::ContextMenuExtension` — 提供右键菜单扩展

## 许可证

[GPL-3.0-or-later](LICENSE)
