GUI packages, examples, and documentation for building desktop applications with Go and web technologies. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.1 KiB
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,TitleWidth,HeightURLAlwaysOnTop,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.