55 lines
2.1 KiB
Markdown
55 lines
2.1 KiB
Markdown
|
|
# Backend Documentation
|
||
|
|
|
||
|
|
The backend is written in Go and uses the `github.com/Snider/display` package. It utilizes the Wails v3 framework to bridge Go and the web frontend.
|
||
|
|
|
||
|
|
## Core Types
|
||
|
|
|
||
|
|
### `Service`
|
||
|
|
The `Service` struct is the main entry point for the display logic.
|
||
|
|
|
||
|
|
- **Initialization:**
|
||
|
|
- `New() (*Service, error)`: Creates a new instance of the service.
|
||
|
|
- `Startup(ctx context.Context) error`: Initializes the Wails application, builds the menu, sets up the system tray, and opens the main window.
|
||
|
|
|
||
|
|
- **Window Management:**
|
||
|
|
- `OpenWindow(opts ...WindowOption) error`: Opens a new window with the specified options.
|
||
|
|
|
||
|
|
- **Dialogs:**
|
||
|
|
- `ShowEnvironmentDialog()`: Displays a native dialog containing information about the runtime environment (OS, Arch, Debug mode, etc.).
|
||
|
|
|
||
|
|
### `WindowConfig` & `WindowOption`
|
||
|
|
Window configuration is handled using the Functional Options pattern. The `WindowConfig` struct holds parameters like:
|
||
|
|
- `Name`, `Title`
|
||
|
|
- `Width`, `Height`
|
||
|
|
- `URL`
|
||
|
|
- `AlwaysOnTop`, `Hidden`, `Frameless`
|
||
|
|
- Window button states (`MinimiseButtonState`, `MaximiseButtonState`, `CloseButtonState`)
|
||
|
|
|
||
|
|
**Available Options:**
|
||
|
|
- `WithName(name string)`
|
||
|
|
- `WithTitle(title string)`
|
||
|
|
- `WithWidth(width int)`
|
||
|
|
- `WithHeight(height int)`
|
||
|
|
- `WithURL(url string)`
|
||
|
|
- `WithAlwaysOnTop(bool)`
|
||
|
|
- `WithHidden(bool)`
|
||
|
|
- `WithFrameless(bool)`
|
||
|
|
- `WithMinimiseButtonState(state)`
|
||
|
|
- `WithMaximiseButtonState(state)`
|
||
|
|
- `WithCloseButtonState(state)`
|
||
|
|
|
||
|
|
## Subsystems
|
||
|
|
|
||
|
|
### Menu (`menu.go`)
|
||
|
|
The `buildMenu` method constructs the application's main menu, adding standard roles like File, Edit, Window, and Help. It allows for platform-specific adjustments (e.g., AppMenu on macOS).
|
||
|
|
|
||
|
|
### System Tray (`tray.go`)
|
||
|
|
The `systemTray` method initializes the system tray icon and its context menu. It supports:
|
||
|
|
- Showing/Hiding all windows.
|
||
|
|
- Displaying environment info.
|
||
|
|
- Quitting the application.
|
||
|
|
- Attaching a hidden window for advanced tray interactions.
|
||
|
|
|
||
|
|
### Actions (`actions.go`)
|
||
|
|
Defines structured messages for Inter-Process Communication (IPC) or internal event handling, such as `ActionOpenWindow` which wraps `application.WebviewWindowOptions`.
|