Events#
Event Hooks#
wails3 provides an event system that allows for hooking into application and window events
// Notification of application start
application.RegisterApplicationEventHook(events.Common.ApplicationStarted, func(event *application.ApplicationEvent) {
app.Logger.Info("Application started!")
})
// Notification of system theme change
application.OnApplicationEvent(events.Common.ThemeChanged, func(event *application.ApplicationEvent) {
app.Logger.Info("System theme changed!")
if event.Context().IsDarkMode() {
app.Logger.Info("System is now using dark mode!")
} else {
app.Logger.Info("System is now using light mode!")
}
})
// Disable window closing by canceling the event
window.RegisterHook(events.Common.WindowClosing, func(e *application.WindowEvent) {
app.Logger.Info("Window 1 Closing? Nope! Not closing!")
e.Cancel()
})
// Notification of window focus
window.OnWindowEvent(events.Common.WindowFocus, func(e *application.WindowEvent) {
app.Logger.Info("[ApplicationEvent] Window focus!")
})
Application Events#
Application events are hookable events that can be registered with application.RegisterApplicationEventHook()
and application.OnApplicationEvent()
. These events are based on events.ApplicationEventType
.
events.Common.ApplicationStarted
- Triggered when the application starts
events.Common.ThemeChanged
- Triggered when the application theme changes
Window Events#
events.Common.WindowMaximised
- Triggered when the window is maximised
events.Common.WindowUnmaximised
- Triggered when the window is unmaximised
events.Common.WindowMinimised
- Triggered when the window is minimised
events.Common.WindowUnminimised
- Triggered when the window is unminimised
events.Common.WindowFullscreen
- Triggered when the window is set to fullscreen
events.Common.WindowUnfullscreen
- Triggered when the window is unfullscreened
events.Common.WindowRestored
- Triggered when the window is restored
events.Common.WindowClosing
- Triggered before the window closes
events.Common.WindowZoom
- Triggered when the window is zoomed
events.Common.WindowZoomOut
- Triggered when the window is zoomed out
events.Common.WindowZoomIn
- Triggered when the window is zoomed in
events.Common.WindowZoomReset
- Triggered when the window zoom is reset
events.Common.WindowFocus
- Triggered when the window gains focus
events.Common.WindowLostFocus
- Triggered when the window loses focus
events.Common.WindowShow
- Triggered when the window is shown
events.Common.WindowHide
- Triggered when the window is hidden
events.Common.WindowDPIChanged
- Triggered when the window DPI changes
events.Common.WindowFilesDropped
- Triggered when files are dropped on the window
events.Common.WindowRuntimeReady
- Triggered when the window runtime is ready
events.Common.WindowDidMove
- Triggered when the window is moved
events.Common.WindowDidResize
- Triggered when the window is resized
OS-Specific Events#
Linux Events#
Application Events#
events.Linux.ApplicationStartup
- Triggered when the application starts
events.Linux.SystemThemeChanged
- Triggered when the system theme changes
Window Events#
events.Linux.WindowLoadChanged
- Triggered when the window load changes
events.Linux.WindowDeleteEvent
- Triggered when the window is deleted
events.Linux.WindowDidMove
- Triggered when the window is moved
events.Linux.WindowDidResize
- Triggered when the window is resized
events.Linux.WindowFocusIn
- Triggered when the window gains focus
events.Linux.WindowFocusOut
- Triggered when the window loses focus
Windows Events#
Application Events#
events.Windows.ApplicationStarted
- Triggered when the application starts
events.Windows.SystemThemeChanged
- Triggered when the system theme changes
events.Windows.APMPowerStatusChange
- Triggered when the system power status changes
events.Windows.APMSuspend
- Triggered when the system suspends
events.Windows.APMResumeAutomatic
- Triggered when the system resumes after a sleep
events.Windows.APMResumeSuspend
- Triggered when the system resumes after a suspend and resume was triggered by the user
Window Events#
events.Windows.WebviewNavigationCompleted
- Triggered when the webview navigation is completed
events.Windows.WindowInactive
- Triggered when the window is inactive
events.Windows.WindowActive
- Triggered when the window is active
events.Windows.ClickActive
- Triggered when the window is activated via a click
events.Windows.MaximiseActive
- Triggered when the window is maximised
events.Windows.UnMaximise
- Triggered when the window is unmaximised
events.Windows.Fullscreen
- Triggered when the window is set to fullscreen
events.Windows.UnFullscreen
- Triggered when the window is exited from fullscreene
events.Windows.WindowRestore
- Triggered when the window is restored
events.Windows.WindowMinimise
- Triggered when the window is minimised
events.Windows.WindowUnminimise
- Triggered when the window is unminimised
events.Windows.WindowClose
-
- Triggered before the window closes
events.Windows.WindowSetFocus
- Triggered when the window gains keyboard focus
events.Windows.WindowKillFocus
- Triggered when the window loses keyboard focus
events.Windows.WindowDragDrop
- Triggered when files are dropped on the window
events.Windows.WindowDragEnter
- Triggered when a drag enters the window
events.Windows.WindowDragLeave
- Triggered when a drag leaves the window
events.Windows.WindowDragOver
- Triggered when a drag is over the window
events.Windows.WindowDidMove
- Triggered after a window has moved
macOS Events#
Application Events#
events.Mac.ApplicationDidBecomeActive
- Triggered when the application becomes active
events.Mac.ApplicationDidChangeBackingProperties
- Triggered when the application changes backing properties
events.Mac.ApplicationDidChangeEffectiveAppearance
- Triggered when the application changes effective appearance
events.Mac.ApplicationDidChangeIcon
- Triggered when the application changes icon
events.Mac.ApplicationDidChangeOcclusionState
- Triggered when the application changes occlusion state
events.Mac.ApplicationDidChangeScreenParameters
- Triggered when the application changes screen parameters
events.Mac.ApplicationDidChangeStatusBarFrame
- Triggered when the application changes status bar frame
events.Mac.ApplicationDidChangeStatusBarOrientation
- Triggered when the application changes status bar orientation
events.Mac.ApplicationDidFinishLaunching
- Triggered when the application finishes launching
events.Mac.ApplicationDidResignActiveNotification
- Triggered when the application is no longer active
events.Mac.ApplicationDidHide
- Triggered when the application is hidden
events.Mac.ApplicationDidUpdate
- Triggered when the application updates
events.Mac.ApplicationWillBecomeActive
- Triggered when the application is about to become active
events.Mac.ApplicationWillFinishLaunching
- Triggered when the application is about to finish launching
events.Mac.ApplicationWillHide
- Triggered when the application is about to hide
events.Mac.ApplicationWillResignActive
- Triggered when the application is about to lose focus
events.Mac.ApplicationWillTerminate
- Triggered when the application is about to terminate
events.Mac.ApplicationWillUnhide
- Triggered when the application is about to unhide
events.Mac.ApplicationWillUpdate
- Triggered when the application is about to update
events.Mac.ApplicationDidChangeTheme
- Triggered when the application changes theme
events.Mac.MenuWillOpen
- Triggered when the menu is about to open
events.Mac.MenuDidOpen
- Triggered when the menu opens
events.Mac.MenuDidClose
- Triggered when the menu closes
events.Mac.MenuWillSendAction
- Triggered when the menu is about to send an action
events.Mac.MenuDidSendAction
- Triggered when the menu sends an action
events.Mac.MenuWillHighlightItem
- Triggered when the menu is about to highlight an item
events.Mac.MenuDidHighlightItem
- Triggered when the menu highlights an item
events.Mac.MenuWillDisplayItem
- Triggered when the menu is about to display an item
events.Mac.MenuDidDisplayItem
- Triggered when the menu displays an item
events.Mac.MenuWillAddItem
- Triggered when the menu is about to add an item
events.Mac.MenuDidAddItem
- Triggered when the menu adds an item
events.Mac.MenuWillRemoveItem
- Triggered when the menu is about to remove an item
events.Mac.MenuDidRemoveItem
- Triggered when the menu removes an item
events.Mac.MenuWillBeginTracking
- Triggered when the menu is about to begin tracking
events.Mac.MenuDidBeginTracking
- Triggered when the menu begins tracking
events.Mac.MenuWillEndTracking
- Triggered when the menu is about to end tracking
events.Mac.MenuDidEndTracking
- Triggered when the menu ends tracking
events.Mac.MenuWillUpdate
- Triggered when the menu is about to update
events.Mac.MenuDidUpdate
- Triggered when the menu updates
events.Mac.MenuWillPopUp
- Triggered when the menu is about to pop up
events.Mac.MenuDidPopUp
- Triggered when the menu pops up
events.Mac.MenuWillSendActionToItem
- Triggered when the menu is about to send an action to an item
events.Mac.MenuDidSendActionToItem
- Triggered when the menu sends an action to an item
Window Events#
events.Mac.WindowDidBecomeKey
- Triggered when the window becomes key
events.Mac.WindowDidBecomeMain
- Triggered when the window becomes main
events.Mac.WindowDidBeginSheet
- Triggered when the window begins a sheet
events.Mac.WindowDidChangeAlpha
- Triggered when the window alpha changes
events.Mac.WindowDidChangeBackingLocation
- Triggered when the window backing location changes
events.Mac.WindowDidChangeBackingProperties
- Triggered when the window backing properties change
events.Mac.WindowDidChangeCollectionBehavior
- Triggered when the window collection behavior changes
events.Mac.WindowDidChangeEffectiveAppearance
- Triggered when the window effective appearance changes
events.Mac.WindowDidChangeOcclusionState
- Triggered when the window occlusion state changes
events.Mac.WindowDidChangeOrderingMode
- Triggered when the window ordering mode changes
events.Mac.WindowDidChangeScreen
- Triggered when the window screen changes
events.Mac.WindowDidChangeScreenParameters
- Triggered when the window screen parameters change
events.Mac.WindowDidChangeScreenProfile
- Triggered when the window screen profile changes
events.Mac.WindowDidChangeScreenSpace
- Triggered when the window screen space changes
events.Mac.WindowDidChangeScreenSpaceProperties
- Triggered when the window screen space properties change
events.Mac.WindowDidChangeSharingType
- Triggered when the window sharing type changes
events.Mac.WindowDidChangeSpace
- Triggered when the window space changes
events.Mac.WindowDidChangeSpaceOrderingMode
- Triggered when the window space ordering mode changes
events.Mac.WindowDidChangeTitle
- Triggered when the window title changes
events.Mac.WindowDidChangeToolbar
- Triggered when the window toolbar changes
events.Mac.WindowDidChangeVisibility
- Triggered when the window visibility changes
events.Mac.WindowDidDeminiaturize
- Triggered when the window is deminiaturized
events.Mac.WindowDidEndSheet
- Triggered when the window ends a sheet
events.Mac.WindowDidEnterFullScreen
- Triggered when the window enters fullscreen
events.Mac.WindowDidEnterVersionBrowser
- Triggered when the window enters version browser
events.Mac.WindowDidExitFullScreen
- Triggered when the window exits fullscreen
events.Mac.WindowDidExitVersionBrowser
- Triggered when the window exits version browser
events.Mac.WindowDidExpose
- Triggered when the window is exposed
events.Mac.WindowDidFocus
- Triggered when the window is focused
events.Mac.WindowDidMiniaturize
- Triggered when the window is miniaturized
events.Mac.WindowDidMove
- Triggered when the window is moved
events.Mac.WindowDidOrderOffScreen
- Triggered when the window is ordered off-screen
events.Mac.WindowDidOrderOnScreen
- Triggered when the window is ordered on screen
events.Mac.WindowDidResignKey
- Triggered when the window resigns key
events.Mac.WindowDidResignMain
- Triggered when the window resigns main
events.Mac.WindowDidResize
- Triggered when the window is resized
events.Mac.WindowDidUpdate
- Triggered when the window updates
events.Mac.WindowDidUpdateAlpha
- Triggered when the window alpha updates
events.Mac.WindowDidUpdateCollectionBehavior
- Triggered when the window collection behavior updates
events.Mac.WindowDidUpdateCollectionProperties
- Triggered when the window collection properties update
events.Mac.WindowDidUpdateShadow
- Triggered when the window shadow updates
events.Mac.WindowDidUpdateTitle
- Triggered when the window title updates
events.Mac.WindowDidUpdateToolbar
- Triggered when the window toolbar updates
events.Mac.WindowDidUpdateVisibility
- Triggered when the window visibility updates
events.Mac.WindowShouldClose
- Triggered when the window should close
events.Mac.WindowWillBecomeKey
- Triggered when the window will become key
events.Mac.WindowWillBecomeMain
- Triggered when the window will become main
events.Mac.WindowWillBeginSheet
- Triggered when the window will begin a sheet
events.Mac.WindowWillChangeOrderingMode
- Triggered when the window will change ordering mode
events.Mac.WindowWillClose
- Triggered when the window will close
events.Mac.WindowWillDeminiaturize
- Triggered when the window will deminiaturize
events.Mac.WindowWillEnterFullScreen
- Triggered when the window will enter fullscreen
events.Mac.WindowWillEnterVersionBrowser
- Triggered when the window will enter version browser
events.Mac.WindowWillExitFullScreen
- Triggered when the window will exit fullscreen
events.Mac.WindowWillExitVersionBrowser
- Triggered when the window will exit version browser
events.Mac.WindowWillFocus
- Triggered when the window will focus
events.Mac.WindowWillMiniaturize
- Triggered when the window will miniaturize
events.Mac.WindowWillMove
- Triggered when the window will move
events.Mac.WindowWillOrderOffScreen
- Triggered when the window will order off-screen
events.Mac.WindowWillOrderOnScreen
- Triggered when the window will order on screen`
events.Mac.WindowWillResignMain
- Triggered when the window will resign main
events.Mac.WindowWillResize
- Triggered when the window will resize
events.Mac.WindowWillUnfocus
- Triggered when the window will unfocus`
events.Mac.WindowWillUpdate
- Triggered when the window will update
events.Mac.WindowWillUpdateAlpha
- Triggered when the window will update alpha
events.Mac.WindowWillUpdateCollectionBehavior
- Triggered when the window will update collection behavior
events.Mac.WindowWillUpdateCollectionProperties
- Triggered when the window will update collection properties
events.Mac.WindowWillUpdateShadow
- Triggered when the window will update shadow
events.Mac.WindowWillUpdateTitle
- Triggered when the window will update title
events.Mac.WindowWillUpdateToolbar
- Triggered when the window will update toolbar
events.Mac.WindowWillUpdateVisibility
- Triggered when the window will update visibility
events.Mac.WindowWillUseStandardFrame
- Triggered when the window will use standard frame
events.Mac.WebviewDidStartProvisionalNavigation
- Triggered when the webview starts a provisional navigation
events.Mac.WebviewDidReceiveServerRedirectForProvisionalNavigation
- Triggered when the webview receives a server redirect for a provisional navigation
events.Mac.WebviewDidFinishNavigation
- Triggered when the webview finishes navigation
events.Mac.WebviewDidCommitNavigation
- Triggered when the webview commits navigation
events.Mac.WindowFileDraggingEntered
- Triggered when files are dragged into the window`
events.Mac.WindowFileDraggingPerformed
- Triggered when files are dragged in the window
events.Mac.WindowFileDraggingExited
- Triggered when files are dragged out of the window
Custom Events#
You can create your own custom events that can be emitted and received on both the frontend and backend. Events are able to emitted at both the application and the window level. The receiver of the event gets data of where the event was emitted from along with the data that was sent with the event. Events can be cancelled by the receiver.
app.OnEvent("event1", func(e *application.CustomEvent) {
app.Logger.Info("[Go] CustomEvent received", "name", e.Name, "data", e.Data, "sender", e.Sender, "cancelled", e.Cancelled)
app.Logger.Info("[Go]", e.Data[0].(string)) // Logs "Hello from JS" to the terminal
})
window.EmitEvent("event2", "Hello from Go")
Emitting Events#
application.EmitEvent(name string, data ...any)
- Emits an event from the application instance
window.EmitEvent(name string, data ...any)
- Emits an event from the window instance
wails.Events.Emit(event:wails.Events.EventData)
- Emits an event from the frontend sending an object with
name
anddata
properties or the typescript type WailsEvent
Receiving Events#
Events can be received on the application instance and the frontend with a couple options of how you chose to receive them. You can register a single event listener that will trigger every time the event is emitted or you can register an event listener that will only trigger a specific number of times.
Golang
application.OnEvent(name string, handler func(data ...any))
- Registers an event on the application instance this will trigger every time the event is emitted
application.OnMultipleEvent(name string, handler func(data ...any), count int)
- Registers an event on the application instance this will trigger every time the event is emitted up to the count specified
Frontend
wails.Events.On(name: string, callback: ()=>void)
,- Registers an event on the frontend, this function returns a function that can be called to remove the event listener
wails.Events.Once(name: string, callback: ()=>void)
,- Registers an event on the frontend that will only be called once, this function returns a function that can be called to remove the event listener
wails.Events.OnMultiple(name: string, callback: ()=>void, count: number)
,- Registers an event on the frontend that will only be called
count
times, this function returns a function that can be called to remove the event listener
Removing Events#
There are a few ways to remove events that are registered. All of the registration functions return a function that can be called to remove the event listeneer in the frontend. There are additional functions provided to help remove events as well.
Golang
application.OffEvent(name string, ...additionalNames string)
- Removes an event listener with the specificed name
application.ResetEvents()
- Removes all registered events and hooks
Frontend
wails.Events.OffAll()
- Removes all registered events
wails.Events.Off(name: string)
- Removes an event listener with the specified name
Event Types#
ApplicationEvent#
Returned when an application hook event is triggered. The event can be cancelled by calling the Cancel()
method on the event.
type ApplicationEvent struct {
Id uint
ctx *ApplicationEventContext
Cancelled bool
}
// Cancel the event
func (a *ApplicationEvent) Cancel() {}
WindowEvent#
Returned when a window hook event is triggered. The event can be cancelled by calling the Cancel()
method on the event.
type WindowEvent struct {
ctx *WindowEventContext
Cancelled bool
}
// Cancel the event
func (w *WindowEvent) Cancel() {}
CustomEvent#
CustomEvent is returned when an event is being recieved it includes the name of the event, the data that was sent with the event,
the sender of the event, application or a specific window. The event can be cancelled by calling the Cancel()
method on the event.