No description
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| .vscode | ||
| gen/schemas | ||
| icons | ||
| js | ||
| src | ||
| ui/app-guides | ||
| .gitignore | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| PROMPT.md | ||
| README.md | ||
| tauri.conf.json | ||
BotApp - General Bots Desktop Application
BotApp is the Tauri-based desktop wrapper for General Bots, providing native desktop and mobile capabilities on top of the pure web UI from botui.
Architecture
botui (pure web) botapp (Tauri wrapper)
┌─────────────────┐ ┌─────────────────────────┐
│ suite/ │◄─────│ Loads botui's UI │
│ minimal/ │ │ + injects app-only │
│ shared/ │ │ features via JS │
│ │ │ │
│ No Tauri deps │ │ Tauri + native APIs │
└─────────────────┘ └─────────────────────────┘
Why Two Projects?
- botui: Pure web UI with zero native dependencies. Works in any browser.
- botapp: Wraps botui with Tauri for desktop/mobile native features.
This separation allows:
- Same UI code for web, desktop, and mobile
- Clean dependency management (web users don't need Tauri)
- App-specific features only in the native app
Features
BotApp adds these native capabilities to botui:
- Local File Access: Browse and manage files on your device
- System Tray: Minimize to tray, background operation
- Native Dialogs: File open/save dialogs
- Desktop Notifications: Native OS notifications
- App Settings: Desktop-specific configuration
Project Structure
botapp/
├── Cargo.toml # Rust dependencies (includes Tauri)
├── build.rs # Tauri build script
├── tauri.conf.json # Tauri configuration
├── src/
│ ├── main.rs # Tauri entry point
│ ├── lib.rs # Library exports
│ └── desktop/
│ ├── mod.rs # Desktop module
│ ├── drive.rs # File system commands
│ └── tray.rs # System tray functionality
├── ui/
│ └── app-guides/ # App-only HTML content
│ ├── local-files.html
│ └── native-settings.html
└── js/
└── app-extensions.js # Injected into botui's suite
Prerequisites
- Rust 1.70+
- Node.js 18+ (for Tauri CLI)
- Tauri CLI:
cargo install tauri-cli
Platform-specific
Linux:
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev
macOS:
xcode-select --install
Windows:
- Visual Studio Build Tools with C++ workload
Development
- Clone both repositories:
git clone https://github.com/GeneralBots/botui.git
git clone https://github.com/GeneralBots/botapp.git
- Start botui's web server (required for dev):
cd botui
cargo run
- Run botapp in development mode:
cd botapp
cargo tauri dev
Building
Debug Build
cargo tauri build --debug
Release Build
cargo tauri build
Binaries will be in target/release/bundle/.
How App Extensions Work
BotApp injects js/app-extensions.js into botui's suite at runtime. This script:
- Detects Tauri environment (
window.__TAURI__) - Injects app-only navigation items into the suite's
.app-grid - Exposes
window.BotAppAPI for native features
Example usage in suite:
if (window.BotApp?.isApp) {
// Running in desktop app
const files = await BotApp.fs.listFiles('/home/user');
await BotApp.notify('Title', 'Native notification!');
}
Tauri Commands
Available Tauri commands (invokable from JS):
| Command | Description |
|---|---|
list_files |
List directory contents |
upload_file |
Copy file with progress |
create_folder |
Create new directory |
delete_path |
Delete file or folder |
get_home_dir |
Get user's home directory |
Configuration
Edit tauri.conf.json to customize:
productName: Application nameidentifier: Unique app identifierbuild.devUrl: URL for development (default:http://localhost:3000)build.frontendDist: Path to botui's UI (default:../botui/ui/suite)
License
AGPL-3.0 - See LICENSE for details.