www/docs/development/architecture.md
This document provides an overview of the Wox project architecture, explaining how different components interact with each other.
Wox is a cross-platform launcher built with a microservices architecture. The application consists of several key components:
┌─────────────────┐ ┌─────────────────┐
│ │ │ │
│ wox.ui.flutter │◄─────────►│ wox.core │
│ (Flutter UI) │ WebSocket│ (Go Backend) │
│ │ & HTTP │ │
└─────────────────┘ └────────┬────────┘
│
│ WebSocket
│
┌────────▼────────┐
│ │
│ Plugin Hosts │
│ │
└────────┬────────┘
│
│
┌────────▼────────┐
│ │
│ Plugins │
│ │
└─────────────────┘
The Go backend that serves as the central component of the application. It handles:
Key directories:
wox.core/setting: Contains settings-related definitionswox.core/plugin: Contains API definitions and implementationsThe Flutter-based user interface that provides:
Wox supports plugins written in multiple languages:
wox.plugin.host.pythonwox.plugin.host.nodejsPlugin hosts are responsible for:
The development workflow for Wox is managed through the Makefile:
make dev: Sets up the development environmentmake test: Runs testsmake publish: Builds and publishes all componentsmake plugins: Updates the plugin storeWox is designed to be cross-platform, with specific considerations for:
make publish (no UPX compression)make publish (no UPX compression)All user data, including settings and plugin data, is stored in the .wox directory in the user's home directory:
C:\Users\<username>\.wox~/.woxLogs are stored in the .wox/log directory and can be accessed for debugging purposes.