mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 00:43:14 +08:00
|
||
---|---|---|
.. | ||
assets | ||
main.go | ||
README.md |
Single Instance Example
This example demonstrates the single instance functionality in Wails v3. It shows how to:
- Ensure only one instance of your application can run at a time
- Notify the first instance when a second instance is launched
- Pass data between instances
- Handle command line arguments and working directory information from second instances
Running the Example
-
Build and run the application:
go build ./single-instance
-
Try launching a second instance of the application. You'll notice:
- The second instance will exit immediately
- The first instance will receive and display:
- Command line arguments from the second instance
- Working directory of the second instance
- Additional data passed from the second instance
-
Check the application logs to see the information received from second instances.
Features Demonstrated
- Setting up single instance lock with a unique identifier
- Handling second instance launches through callbacks
- Passing custom data between instances
- Displaying instance information in a web UI
- Cross-platform support (Windows, macOS, Linux)
Code Overview
The example consists of:
main.go
: The main application code demonstrating single instance setup- A simple web UI showing current instance information
- Callback handling for second instance launches
Implementation Details
The application uses the Wails v3 single instance feature:
app := application.New(&application.Options{
SingleInstance: &application.SingleInstanceOptions{
UniqueID: "com.wails.example.single-instance",
OnSecondInstance: func(data application.SecondInstanceData) {
// Handle second instance launch
},
AdditionalData: map[string]string{
},
},
})
The implementation uses platform-specific mechanisms:
- Windows: Named mutex and window messages
- Unix (Linux/macOS): File locking with flock and signals