Skip to content

Commit a72d10e

Browse files
committed
feat(application): expose Common.SystemWillSleep / Common.SystemDidWake
Adds two cross-platform power events so apps can listen for sleep/wake once instead of branching on OS: app.OnApplicationEvent(events.Common.SystemDidWake, …) Each platform's events_common_<os>.go map gains an entry that forwards the platform-specific event into the common one (same pattern as Common.ThemeChanged and Common.ApplicationStarted): darwin: Mac.ApplicationWillSleep → Common.SystemWillSleep Mac.ApplicationDidWake → Common.SystemDidWake windows: Windows.APMSuspend → Common.SystemWillSleep Windows.APMResumeAutomatic → Common.SystemDidWake linux: Linux.SystemWillSleep → Common.SystemWillSleep Linux.SystemDidWake → Common.SystemDidWake Notes: - Windows APMResumeSuspend is deliberately not mapped — it fires *after* APMResumeAutomatic when the wake was triggered by user input, so mapping both would double-fire Common.SystemDidWake. - Mac.ApplicationScreensDidWake / ScreensDidSleep are kept platform- specific; they fire on display power state (separate from system sleep) and have no Linux/Windows equivalent. Verified: darwin build + tests pass locally; Linux build + tests pass on lin-node1; windows cross-vet of pkg/events clean.
1 parent 2d5a5dd commit a72d10e

11 files changed

Lines changed: 670 additions & 650 deletions

File tree

v3/internal/generator/collect/known_events.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ var knownEvents = map[string]struct{}{
1010
"common:ApplicationStarted": {},
1111
"common:ApplicationLaunchedWithUrl": {},
1212
"common:ThemeChanged": {},
13+
"common:SystemDidWake": {},
14+
"common:SystemWillSleep": {},
1315
"common:WindowClosing": {},
1416
"common:WindowDidMove": {},
1517
"common:WindowDidResize": {},

v3/internal/runtime/desktop/@wailsio/runtime/src/event_types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ export const Types = Object.freeze({
240240
ApplicationStarted: "common:ApplicationStarted",
241241
ApplicationLaunchedWithUrl: "common:ApplicationLaunchedWithUrl",
242242
ThemeChanged: "common:ThemeChanged",
243+
SystemDidWake: "common:SystemDidWake",
244+
SystemWillSleep: "common:SystemWillSleep",
243245
WindowClosing: "common:WindowClosing",
244246
WindowDidMove: "common:WindowDidMove",
245247
WindowDidResize: "common:WindowDidResize",

v3/pkg/application/events_common_darwin.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import "github.com/wailsapp/wails/v3/pkg/events"
77
var commonApplicationEventMap = map[events.ApplicationEventType]events.ApplicationEventType{
88
events.Mac.ApplicationDidFinishLaunching: events.Common.ApplicationStarted,
99
events.Mac.ApplicationDidChangeTheme: events.Common.ThemeChanged,
10+
events.Mac.ApplicationWillSleep: events.Common.SystemWillSleep,
11+
events.Mac.ApplicationDidWake: events.Common.SystemDidWake,
1012
}
1113

1214
func (m *macosApp) setupCommonEvents() {

v3/pkg/application/events_common_linux.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import "github.com/wailsapp/wails/v3/pkg/events"
77
var commonApplicationEventMap = map[events.ApplicationEventType]events.ApplicationEventType{
88
events.Linux.ApplicationStartup: events.Common.ApplicationStarted,
99
events.Linux.SystemThemeChanged: events.Common.ThemeChanged,
10+
events.Linux.SystemWillSleep: events.Common.SystemWillSleep,
11+
events.Linux.SystemDidWake: events.Common.SystemDidWake,
1012
}
1113

1214
func (a *linuxApp) setupCommonEvents() {

v3/pkg/application/events_common_windows.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ package application
55
import "github.com/wailsapp/wails/v3/pkg/events"
66

77
var commonApplicationEventMap = map[events.ApplicationEventType]events.ApplicationEventType{
8-
events.Windows.SystemThemeChanged: events.Common.ThemeChanged,
9-
events.Windows.ApplicationStarted: events.Common.ApplicationStarted,
8+
events.Windows.SystemThemeChanged: events.Common.ThemeChanged,
9+
events.Windows.ApplicationStarted: events.Common.ApplicationStarted,
10+
events.Windows.APMSuspend: events.Common.SystemWillSleep,
11+
events.Windows.APMResumeAutomatic: events.Common.SystemDidWake,
1012
}
1113

1214
func (m *windowsApp) setupCommonEvents() {

v3/pkg/events/events.go

Lines changed: 480 additions & 474 deletions
Large diffs are not rendered by default.

v3/pkg/events/events.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ common:ApplicationOpenedWithFile
22
common:ApplicationStarted
33
common:ApplicationLaunchedWithUrl
44
common:ThemeChanged
5+
common:SystemDidWake
6+
common:SystemWillSleep
57
common:WindowClosing
68
common:WindowDidMove
79
common:WindowDidResize

v3/pkg/events/events_darwin.h

Lines changed: 137 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -6,144 +6,144 @@
66
extern void processApplicationEvent(unsigned int, void* data);
77
extern void processWindowEvent(unsigned int, unsigned int);
88

9-
#define EventApplicationDidBecomeActive 1063
10-
#define EventApplicationDidChangeBackingProperties 1064
11-
#define EventApplicationDidChangeEffectiveAppearance 1065
12-
#define EventApplicationDidChangeIcon 1066
13-
#define EventApplicationDidChangeOcclusionState 1067
14-
#define EventApplicationDidChangeScreenParameters 1068
15-
#define EventApplicationDidChangeStatusBarFrame 1069
16-
#define EventApplicationDidChangeStatusBarOrientation 1070
17-
#define EventApplicationDidChangeTheme 1071
18-
#define EventApplicationDidFinishLaunching 1072
19-
#define EventApplicationDidHide 1073
20-
#define EventApplicationDidResignActive 1074
21-
#define EventApplicationDidUnhide 1075
22-
#define EventApplicationDidUpdate 1076
23-
#define EventApplicationDidWake 1077
24-
#define EventApplicationScreensDidSleep 1078
25-
#define EventApplicationScreensDidWake 1079
26-
#define EventApplicationShouldHandleReopen 1080
27-
#define EventApplicationWillBecomeActive 1081
28-
#define EventApplicationWillFinishLaunching 1082
29-
#define EventApplicationWillHide 1083
30-
#define EventApplicationWillResignActive 1084
31-
#define EventApplicationWillSleep 1085
32-
#define EventApplicationWillTerminate 1086
33-
#define EventApplicationWillUnhide 1087
34-
#define EventApplicationWillUpdate 1088
35-
#define EventMenuDidAddItem 1089
36-
#define EventMenuDidBeginTracking 1090
37-
#define EventMenuDidClose 1091
38-
#define EventMenuDidDisplayItem 1092
39-
#define EventMenuDidEndTracking 1093
40-
#define EventMenuDidHighlightItem 1094
41-
#define EventMenuDidOpen 1095
42-
#define EventMenuDidPopUp 1096
43-
#define EventMenuDidRemoveItem 1097
44-
#define EventMenuDidSendAction 1098
45-
#define EventMenuDidSendActionToItem 1099
46-
#define EventMenuDidUpdate 1100
47-
#define EventMenuWillAddItem 1101
48-
#define EventMenuWillBeginTracking 1102
49-
#define EventMenuWillDisplayItem 1103
50-
#define EventMenuWillEndTracking 1104
51-
#define EventMenuWillHighlightItem 1105
52-
#define EventMenuWillOpen 1106
53-
#define EventMenuWillPopUp 1107
54-
#define EventMenuWillRemoveItem 1108
55-
#define EventMenuWillSendAction 1109
56-
#define EventMenuWillSendActionToItem 1110
57-
#define EventMenuWillUpdate 1111
58-
#define EventWebViewDidCommitNavigation 1112
59-
#define EventWebViewDidFinishNavigation 1113
60-
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1114
61-
#define EventWebViewDidStartProvisionalNavigation 1115
62-
#define EventWindowDidBecomeKey 1116
63-
#define EventWindowDidBecomeMain 1117
64-
#define EventWindowDidBeginSheet 1118
65-
#define EventWindowDidChangeAlpha 1119
66-
#define EventWindowDidChangeBackingLocation 1120
67-
#define EventWindowDidChangeBackingProperties 1121
68-
#define EventWindowDidChangeCollectionBehavior 1122
69-
#define EventWindowDidChangeEffectiveAppearance 1123
70-
#define EventWindowDidChangeOcclusionState 1124
71-
#define EventWindowDidChangeOrderingMode 1125
72-
#define EventWindowDidChangeScreen 1126
73-
#define EventWindowDidChangeScreenParameters 1127
74-
#define EventWindowDidChangeScreenProfile 1128
75-
#define EventWindowDidChangeScreenSpace 1129
76-
#define EventWindowDidChangeScreenSpaceProperties 1130
77-
#define EventWindowDidChangeSharingType 1131
78-
#define EventWindowDidChangeSpace 1132
79-
#define EventWindowDidChangeSpaceOrderingMode 1133
80-
#define EventWindowDidChangeTitle 1134
81-
#define EventWindowDidChangeToolbar 1135
82-
#define EventWindowDidDeminiaturize 1136
83-
#define EventWindowDidEndSheet 1137
84-
#define EventWindowDidEnterFullScreen 1138
85-
#define EventWindowDidEnterVersionBrowser 1139
86-
#define EventWindowDidExitFullScreen 1140
87-
#define EventWindowDidExitVersionBrowser 1141
88-
#define EventWindowDidExpose 1142
89-
#define EventWindowDidFocus 1143
90-
#define EventWindowDidMiniaturize 1144
91-
#define EventWindowDidMove 1145
92-
#define EventWindowDidOrderOffScreen 1146
93-
#define EventWindowDidOrderOnScreen 1147
94-
#define EventWindowDidResignKey 1148
95-
#define EventWindowDidResignMain 1149
96-
#define EventWindowDidResize 1150
97-
#define EventWindowDidUpdate 1151
98-
#define EventWindowDidUpdateAlpha 1152
99-
#define EventWindowDidUpdateCollectionBehavior 1153
100-
#define EventWindowDidUpdateCollectionProperties 1154
101-
#define EventWindowDidUpdateShadow 1155
102-
#define EventWindowDidUpdateTitle 1156
103-
#define EventWindowDidUpdateToolbar 1157
104-
#define EventWindowDidZoom 1158
105-
#define EventWindowFileDraggingEntered 1159
106-
#define EventWindowFileDraggingExited 1160
107-
#define EventWindowFileDraggingPerformed 1161
108-
#define EventWindowHide 1162
109-
#define EventWindowMaximise 1163
110-
#define EventWindowUnMaximise 1164
111-
#define EventWindowMinimise 1165
112-
#define EventWindowUnMinimise 1166
113-
#define EventWindowShouldClose 1167
114-
#define EventWindowShow 1168
115-
#define EventWindowWillBecomeKey 1169
116-
#define EventWindowWillBecomeMain 1170
117-
#define EventWindowWillBeginSheet 1171
118-
#define EventWindowWillChangeOrderingMode 1172
119-
#define EventWindowWillClose 1173
120-
#define EventWindowWillDeminiaturize 1174
121-
#define EventWindowWillEnterFullScreen 1175
122-
#define EventWindowWillEnterVersionBrowser 1176
123-
#define EventWindowWillExitFullScreen 1177
124-
#define EventWindowWillExitVersionBrowser 1178
125-
#define EventWindowWillFocus 1179
126-
#define EventWindowWillMiniaturize 1180
127-
#define EventWindowWillMove 1181
128-
#define EventWindowWillOrderOffScreen 1182
129-
#define EventWindowWillOrderOnScreen 1183
130-
#define EventWindowWillResignMain 1184
131-
#define EventWindowWillResize 1185
132-
#define EventWindowWillUnfocus 1186
133-
#define EventWindowWillUpdate 1187
134-
#define EventWindowWillUpdateAlpha 1188
135-
#define EventWindowWillUpdateCollectionBehavior 1189
136-
#define EventWindowWillUpdateCollectionProperties 1190
137-
#define EventWindowWillUpdateShadow 1191
138-
#define EventWindowWillUpdateTitle 1192
139-
#define EventWindowWillUpdateToolbar 1193
140-
#define EventWindowWillUpdateVisibility 1194
141-
#define EventWindowWillUseStandardFrame 1195
142-
#define EventWindowZoomIn 1196
143-
#define EventWindowZoomOut 1197
144-
#define EventWindowZoomReset 1198
9+
#define EventApplicationDidBecomeActive 1065
10+
#define EventApplicationDidChangeBackingProperties 1066
11+
#define EventApplicationDidChangeEffectiveAppearance 1067
12+
#define EventApplicationDidChangeIcon 1068
13+
#define EventApplicationDidChangeOcclusionState 1069
14+
#define EventApplicationDidChangeScreenParameters 1070
15+
#define EventApplicationDidChangeStatusBarFrame 1071
16+
#define EventApplicationDidChangeStatusBarOrientation 1072
17+
#define EventApplicationDidChangeTheme 1073
18+
#define EventApplicationDidFinishLaunching 1074
19+
#define EventApplicationDidHide 1075
20+
#define EventApplicationDidResignActive 1076
21+
#define EventApplicationDidUnhide 1077
22+
#define EventApplicationDidUpdate 1078
23+
#define EventApplicationDidWake 1079
24+
#define EventApplicationScreensDidSleep 1080
25+
#define EventApplicationScreensDidWake 1081
26+
#define EventApplicationShouldHandleReopen 1082
27+
#define EventApplicationWillBecomeActive 1083
28+
#define EventApplicationWillFinishLaunching 1084
29+
#define EventApplicationWillHide 1085
30+
#define EventApplicationWillResignActive 1086
31+
#define EventApplicationWillSleep 1087
32+
#define EventApplicationWillTerminate 1088
33+
#define EventApplicationWillUnhide 1089
34+
#define EventApplicationWillUpdate 1090
35+
#define EventMenuDidAddItem 1091
36+
#define EventMenuDidBeginTracking 1092
37+
#define EventMenuDidClose 1093
38+
#define EventMenuDidDisplayItem 1094
39+
#define EventMenuDidEndTracking 1095
40+
#define EventMenuDidHighlightItem 1096
41+
#define EventMenuDidOpen 1097
42+
#define EventMenuDidPopUp 1098
43+
#define EventMenuDidRemoveItem 1099
44+
#define EventMenuDidSendAction 1100
45+
#define EventMenuDidSendActionToItem 1101
46+
#define EventMenuDidUpdate 1102
47+
#define EventMenuWillAddItem 1103
48+
#define EventMenuWillBeginTracking 1104
49+
#define EventMenuWillDisplayItem 1105
50+
#define EventMenuWillEndTracking 1106
51+
#define EventMenuWillHighlightItem 1107
52+
#define EventMenuWillOpen 1108
53+
#define EventMenuWillPopUp 1109
54+
#define EventMenuWillRemoveItem 1110
55+
#define EventMenuWillSendAction 1111
56+
#define EventMenuWillSendActionToItem 1112
57+
#define EventMenuWillUpdate 1113
58+
#define EventWebViewDidCommitNavigation 1114
59+
#define EventWebViewDidFinishNavigation 1115
60+
#define EventWebViewDidReceiveServerRedirectForProvisionalNavigation 1116
61+
#define EventWebViewDidStartProvisionalNavigation 1117
62+
#define EventWindowDidBecomeKey 1118
63+
#define EventWindowDidBecomeMain 1119
64+
#define EventWindowDidBeginSheet 1120
65+
#define EventWindowDidChangeAlpha 1121
66+
#define EventWindowDidChangeBackingLocation 1122
67+
#define EventWindowDidChangeBackingProperties 1123
68+
#define EventWindowDidChangeCollectionBehavior 1124
69+
#define EventWindowDidChangeEffectiveAppearance 1125
70+
#define EventWindowDidChangeOcclusionState 1126
71+
#define EventWindowDidChangeOrderingMode 1127
72+
#define EventWindowDidChangeScreen 1128
73+
#define EventWindowDidChangeScreenParameters 1129
74+
#define EventWindowDidChangeScreenProfile 1130
75+
#define EventWindowDidChangeScreenSpace 1131
76+
#define EventWindowDidChangeScreenSpaceProperties 1132
77+
#define EventWindowDidChangeSharingType 1133
78+
#define EventWindowDidChangeSpace 1134
79+
#define EventWindowDidChangeSpaceOrderingMode 1135
80+
#define EventWindowDidChangeTitle 1136
81+
#define EventWindowDidChangeToolbar 1137
82+
#define EventWindowDidDeminiaturize 1138
83+
#define EventWindowDidEndSheet 1139
84+
#define EventWindowDidEnterFullScreen 1140
85+
#define EventWindowDidEnterVersionBrowser 1141
86+
#define EventWindowDidExitFullScreen 1142
87+
#define EventWindowDidExitVersionBrowser 1143
88+
#define EventWindowDidExpose 1144
89+
#define EventWindowDidFocus 1145
90+
#define EventWindowDidMiniaturize 1146
91+
#define EventWindowDidMove 1147
92+
#define EventWindowDidOrderOffScreen 1148
93+
#define EventWindowDidOrderOnScreen 1149
94+
#define EventWindowDidResignKey 1150
95+
#define EventWindowDidResignMain 1151
96+
#define EventWindowDidResize 1152
97+
#define EventWindowDidUpdate 1153
98+
#define EventWindowDidUpdateAlpha 1154
99+
#define EventWindowDidUpdateCollectionBehavior 1155
100+
#define EventWindowDidUpdateCollectionProperties 1156
101+
#define EventWindowDidUpdateShadow 1157
102+
#define EventWindowDidUpdateTitle 1158
103+
#define EventWindowDidUpdateToolbar 1159
104+
#define EventWindowDidZoom 1160
105+
#define EventWindowFileDraggingEntered 1161
106+
#define EventWindowFileDraggingExited 1162
107+
#define EventWindowFileDraggingPerformed 1163
108+
#define EventWindowHide 1164
109+
#define EventWindowMaximise 1165
110+
#define EventWindowUnMaximise 1166
111+
#define EventWindowMinimise 1167
112+
#define EventWindowUnMinimise 1168
113+
#define EventWindowShouldClose 1169
114+
#define EventWindowShow 1170
115+
#define EventWindowWillBecomeKey 1171
116+
#define EventWindowWillBecomeMain 1172
117+
#define EventWindowWillBeginSheet 1173
118+
#define EventWindowWillChangeOrderingMode 1174
119+
#define EventWindowWillClose 1175
120+
#define EventWindowWillDeminiaturize 1176
121+
#define EventWindowWillEnterFullScreen 1177
122+
#define EventWindowWillEnterVersionBrowser 1178
123+
#define EventWindowWillExitFullScreen 1179
124+
#define EventWindowWillExitVersionBrowser 1180
125+
#define EventWindowWillFocus 1181
126+
#define EventWindowWillMiniaturize 1182
127+
#define EventWindowWillMove 1183
128+
#define EventWindowWillOrderOffScreen 1184
129+
#define EventWindowWillOrderOnScreen 1185
130+
#define EventWindowWillResignMain 1186
131+
#define EventWindowWillResize 1187
132+
#define EventWindowWillUnfocus 1188
133+
#define EventWindowWillUpdate 1189
134+
#define EventWindowWillUpdateAlpha 1190
135+
#define EventWindowWillUpdateCollectionBehavior 1191
136+
#define EventWindowWillUpdateCollectionProperties 1192
137+
#define EventWindowWillUpdateShadow 1193
138+
#define EventWindowWillUpdateTitle 1194
139+
#define EventWindowWillUpdateToolbar 1195
140+
#define EventWindowWillUpdateVisibility 1196
141+
#define EventWindowWillUseStandardFrame 1197
142+
#define EventWindowZoomIn 1198
143+
#define EventWindowZoomOut 1199
144+
#define EventWindowZoomReset 1200
145145

146-
#define MAX_EVENTS 1199
146+
#define MAX_EVENTS 1201
147147

148148

149149
#endif

v3/pkg/events/events_ios.h

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,30 @@
66
extern void processApplicationEvent(unsigned int, void* data);
77
extern void processWindowEvent(unsigned int, unsigned int);
88

9-
#define EventApplicationDidBecomeActive 1243
10-
#define EventApplicationDidEnterBackground 1244
11-
#define EventApplicationDidFinishLaunching 1245
12-
#define EventApplicationDidReceiveMemoryWarning 1246
13-
#define EventApplicationWillEnterForeground 1247
14-
#define EventApplicationWillResignActive 1248
15-
#define EventApplicationWillTerminate 1249
16-
#define EventWindowDidLoad 1250
17-
#define EventWindowWillAppear 1251
18-
#define EventWindowDidAppear 1252
19-
#define EventWindowWillDisappear 1253
20-
#define EventWindowDidDisappear 1254
21-
#define EventWindowSafeAreaInsetsChanged 1255
22-
#define EventWindowOrientationChanged 1256
23-
#define EventWindowTouchBegan 1257
24-
#define EventWindowTouchMoved 1258
25-
#define EventWindowTouchEnded 1259
26-
#define EventWindowTouchCancelled 1260
27-
#define EventWebViewDidStartNavigation 1261
28-
#define EventWebViewDidFinishNavigation 1262
29-
#define EventWebViewDidFailNavigation 1263
30-
#define EventWebViewDecidePolicyForNavigationAction 1264
9+
#define EventApplicationDidBecomeActive 1245
10+
#define EventApplicationDidEnterBackground 1246
11+
#define EventApplicationDidFinishLaunching 1247
12+
#define EventApplicationDidReceiveMemoryWarning 1248
13+
#define EventApplicationWillEnterForeground 1249
14+
#define EventApplicationWillResignActive 1250
15+
#define EventApplicationWillTerminate 1251
16+
#define EventWindowDidLoad 1252
17+
#define EventWindowWillAppear 1253
18+
#define EventWindowDidAppear 1254
19+
#define EventWindowWillDisappear 1255
20+
#define EventWindowDidDisappear 1256
21+
#define EventWindowSafeAreaInsetsChanged 1257
22+
#define EventWindowOrientationChanged 1258
23+
#define EventWindowTouchBegan 1259
24+
#define EventWindowTouchMoved 1260
25+
#define EventWindowTouchEnded 1261
26+
#define EventWindowTouchCancelled 1262
27+
#define EventWebViewDidStartNavigation 1263
28+
#define EventWebViewDidFinishNavigation 1264
29+
#define EventWebViewDidFailNavigation 1265
30+
#define EventWebViewDecidePolicyForNavigationAction 1266
3131

32-
#define MAX_EVENTS 1265
32+
#define MAX_EVENTS 1267
3333

3434

3535
#endif

0 commit comments

Comments
 (0)