Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Onyx Desktop
A lightweight macOS desktop application for Onyx Cloud.
Built with Tauri for minimal bundle size (~10MB vs Electron's 150MB+).
Features
- 🪶 Lightweight - Native macOS WebKit, no bundled Chromium
- ⌨️ Keyboard Shortcuts - Quick navigation and actions
- 🪟 Native Feel - macOS-style title bar with traffic lights
- 💾 Window State - Remembers size/position between sessions
- 🔗 Multi-window - Open multiple Onyx windows
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
⌘ N |
New Chat |
⌘ ⇧ N |
New Window |
⌘ R |
Reload |
⌘ [ |
Go Back |
⌘ ] |
Go Forward |
⌘ , |
Open Config File |
⌘ W |
Close Window |
⌘ Q |
Quit |
Prerequisites
-
Rust (latest stable)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env -
Node.js (18+)
# Using homebrew brew install node # Or using nvm nvm install 18 -
Xcode Command Line Tools
xcode-select --install
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
Building
Build for current architecture
npm run build
Build Universal Binary (Intel + Apple Silicon)
# First, add the targets
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
# Build universal binary
npm run build:dmg
The built .dmg will be in src-tauri/target/release/bundle/dmg/.
Project Structure
onyx-desktop/
├── package.json # Node dependencies & scripts
├── src/
│ └── index.html # Fallback/loading page
└── src-tauri/
├── Cargo.toml # Rust dependencies
├── tauri.conf.json # Tauri configuration
├── build.rs # Build script
├── icons/ # App icons
└── src/
└── main.rs # Rust backend code
Icons
Before building, add your app icons to src-tauri/icons/:
32x32.png128x128.png128x128@2x.pngicon.icns(macOS)icon.ico(Windows, optional)
You can generate these from a 1024x1024 source image using:
# Using tauri's icon generator
npm run tauri icon path/to/your-icon.png
Customization
Self-Hosted / Custom Server URL
The app defaults to https://cloud.onyx.app but supports any Onyx instance.
Config file location:
- macOS:
~/Library/Application Support/app.onyx.desktop/config.json - Linux:
~/.config/app.onyx.desktop/config.json - Windows:
%APPDATA%/app.onyx.desktop/config.json
To use a self-hosted instance:
- Launch the app once (creates default config)
- Press
⌘ ,to open the config file, or edit it manually - Change the
server_url:
{
"server_url": "https://your-onyx-instance.company.com",
"window_title": "Onyx"
}
- Restart the app
Quick edit via terminal:
# macOS
open -t ~/Library/Application\ Support/app.onyx.desktop/config.json
# Or use any editor
code ~/Library/Application\ Support/app.onyx.desktop/config.json
Change the default URL in build
Edit src-tauri/tauri.conf.json:
{
"app": {
"windows": [
{
"url": "https://your-onyx-instance.com"
}
]
}
}
Add more shortcuts
Edit src-tauri/src/main.rs in the setup_shortcuts function.
Window appearance
Modify the window configuration in src-tauri/tauri.conf.json:
titleBarStyle:"Overlay"(macOS native) or"Visible"decorations: Window chrometransparent: For custom backgrounds
Troubleshooting
"Unable to resolve host"
Make sure you have an internet connection. The app loads content from cloud.onyx.app.
Build fails on M1/M2 Mac
# Ensure you have the right target
rustup target add aarch64-apple-darwin
Code signing for distribution
For distributing outside the App Store, you'll need to:
- Get an Apple Developer certificate
- Sign the app:
codesign --deep --force --sign "Developer ID" target/release/bundle/macos/Onyx.app - Notarize with Apple
License
MIT