On macOS, main window cannot be activate if closed without `--fast-quit`` option. This was due to undefined mainWindow variable.
nativefier --verbose 'https://mail.proton.me' -n 'ProtonMail' --background-color '#1C1B23' --counter --title-bar-style hidden --disable-context-menu --darwin-dark-mode-support
Running in verbose mode! This will produce a mountain of logs and is recommended only for troubleshooting or if you like Shakespeare.
Hi! Nativefier is minimally maintained these days, and needs more hands.
If you have the time & motivation, help with bugfixes and maintenance is VERY welcome.
Please go to https://github.com/nativefier/nativefier and help how you can. Thanks.
Processing options...
rawOptions {
_: [ 'https://mail.proton.me' ],
verbose: true,
n: 'ProtonMail',
name: 'ProtonMail',
'background-color': '#1C1B23',
backgroundColor: '#1C1B23',
counter: true,
'title-bar-style': 'hidden',
titleBarStyle: 'hidden',
'disable-context-menu': true,
disableContextMenu: true,
'darwin-dark-mode-support': true,
darwinDarkModeSupport: true,
c: false,
conceal: false,
'no-overwrite': false,
noOverwrite: false,
overwrite: true,
portable: false,
widevine: false,
'always-on-top': false,
alwaysOnTop: false,
'disable-dev-tools': false,
disableDevTools: false,
'full-screen': false,
fullScreen: false,
'hide-window-frame': false,
hideWindowFrame: false,
m: false,
'show-menu-bar': false,
showMenuBar: false,
maximize: false,
'single-instance': false,
singleInstance: false,
tray: 'false',
zoom: 1,
'user-agent-honest': false,
honest: false,
userAgentHonest: false,
'clear-cache': false,
clearCache: false,
'block-external-urls': false,
blockExternalUrls: false,
'strict-internal-urls': false,
strictInternalUrls: false,
'disable-gpu': false,
disableGpu: false,
'enable-es3-apis': false,
enableEs3Apis: false,
'ignore-gpu-blacklist': false,
ignoreGpuBlacklist: false,
'disable-old-build-warning-yesiknowitisinsecure': false,
disableOldBuildWarningYesiknowitisinsecure: false,
'ignore-certificate': false,
ignoreCertificate: false,
insecure: false,
flash: false,
bounce: false,
f: false,
'fast-quit': false,
fastQuit: false,
quiet: false,
'$0': 'nativefier',
targetUrl: 'https://mail.proton.me',
out: undefined
}
Inferred arch arm64
Normalized URL https://mail.proton.me to: https://mail.proton.me/
Running in verbose mode! This will produce a mountain of logs and is recommended only for troubleshooting or if you like Shakespeare.
Inferred platform darwin
Performing async options post-processing.
Inferring icon for https://mail.proton.me/ on darwin
Inferring icon from store for https://mail.proton.me/ on darwin
Allowed icon formats when building for darwin: [ '.icns' ]
Sanitized filename for ProtonMail : ProtonMail
Got 246 icons from gitcloud
Max icon match score: 0
No relevant icon in store.
Trying to extract a .png icon from the page.
Got an icon from the page.
Writing 47.1 kb icon to /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconinfer--46510-92mkN4kHhMHS/icon.png
options {
packager: {
appCopyright: undefined,
appVersion: undefined,
arch: 'arm64',
asar: false,
buildVersion: undefined,
darwinDarkModeSupport: true,
dir: '/opt/homebrew/Cellar/nativefier/47.1.3/libexec/lib/node_modules/nativefier/app',
electronVersion: '18.2.0',
icon: '/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconinfer--46510-92mkN4kHhMHS/icon.png',
name: 'ProtonMail',
out: '/Users/spywhere',
overwrite: true,
quiet: false,
platform: 'darwin',
portable: false,
targetUrl: 'https://mail.proton.me/',
tmpdir: false,
upgrade: false,
upgradeFrom: undefined,
win32metadata: {
ProductName: 'ProtonMail',
InternalName: 'ProtonMail',
FileDescription: 'ProtonMail'
}
},
nativefier: {
accessibilityPrompt: true,
alwaysOnTop: false,
backgroundColor: '#1C1B23',
basicAuthPassword: undefined,
basicAuthUsername: undefined,
blockExternalUrls: false,
bookmarksMenu: undefined,
bounce: false,
browserwindowOptions: undefined,
clearCache: false,
counter: true,
crashReporter: undefined,
disableContextMenu: true,
disableDevTools: false,
disableGpu: false,
diskCacheSize: undefined,
disableOldBuildWarning: false,
enableEs3Apis: false,
fastQuit: false,
fileDownloadOptions: undefined,
flashPluginDir: undefined,
fullScreen: false,
globalShortcuts: undefined,
hideWindowFrame: false,
ignoreCertificate: false,
ignoreGpuBlacklist: false,
inject: [],
insecure: false,
internalUrls: undefined,
lang: undefined,
maximize: false,
nativefierVersion: '47.1.3',
quiet: false,
processEnvs: undefined,
proxyRules: undefined,
showMenuBar: false,
singleInstance: false,
strictInternalUrls: false,
titleBarStyle: 'hidden',
tray: 'false',
userAgent: undefined,
userAgentHonest: false,
verbose: true,
versionString: undefined,
width: 1280,
height: 800,
minWidth: undefined,
minHeight: undefined,
maxWidth: undefined,
maxHeight: undefined,
widevine: false,
x: undefined,
y: undefined,
zoom: 1
}
}
Preparing Electron app...
Copying electron app from /opt/homebrew/Cellar/nativefier/47.1.3/libexec/lib/node_modules/nativefier/app to /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-app--46510-M9XVJJPwD3jW
Writing app config to /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-app--46510-M9XVJJPwD3jW/nativefier.json {
accessibilityPrompt: true,
alwaysOnTop: false,
appBundleId: undefined,
appCategoryType: undefined,
appCopyright: undefined,
appVersion: undefined,
arch: 'arm64',
asar: false,
backgroundColor: '#1C1B23',
basicAuthPassword: undefined,
basicAuthUsername: undefined,
blockExternalUrls: false,
bounce: false,
browserwindowOptions: undefined,
buildDate: 1653506707635,
buildVersion: undefined,
clearCache: false,
counter: true,
crashReporter: undefined,
darwinDarkModeSupport: true,
derefSymlinks: undefined,
disableContextMenu: true,
disableDevTools: false,
disableGpu: false,
disableOldBuildWarning: false,
diskCacheSize: undefined,
download: undefined,
electronVersionUsed: '18.2.0',
enableEs3Apis: false,
executableName: undefined,
fastQuit: false,
fileDownloadOptions: undefined,
flashPluginDir: undefined,
fullScreen: false,
globalShortcuts: undefined,
height: 800,
helperBundleId: undefined,
hideWindowFrame: false,
ignoreCertificate: false,
ignoreGpuBlacklist: false,
insecure: false,
internalUrls: undefined,
isUpgrade: false,
junk: undefined,
lang: undefined,
maximize: false,
maxHeight: undefined,
maxWidth: undefined,
minHeight: undefined,
minWidth: undefined,
name: 'ProtonMail',
nativefierVersion: '47.1.3',
osxNotarize: undefined,
osxSign: undefined,
portable: false,
processEnvs: undefined,
protocols: undefined,
proxyRules: undefined,
prune: undefined,
quiet: false,
showMenuBar: false,
singleInstance: false,
strictInternalUrls: false,
targetUrl: 'https://mail.proton.me/',
titleBarStyle: 'hidden',
tray: 'false',
usageDescription: undefined,
userAgent: undefined,
userAgentHonest: false,
versionString: undefined,
width: 1280,
widevine: false,
win32metadata: {
ProductName: 'ProtonMail',
InternalName: 'ProtonMail',
FileDescription: 'ProtonMail'
},
x: undefined,
y: undefined,
zoom: 1,
oldBuildWarningText: ''
}
No files to inject, skipping copy.
Updating /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-app--46510-M9XVJJPwD3jW/package.json 'name' field to protonmail-nativefier-2572fe
Converting icons...
Converting icon /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconinfer--46510-92mkN4kHhMHS/icon.png to /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconconv--46510-RhdP9M1Lz4ln/icon.icns. Calling shell command: "/opt/homebrew/Cellar/nativefier/47.1.3/libexec/lib/node_modules/nativefier/icon-scripts/convertToIcns" "/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconinfer--46510-92mkN4kHhMHS/icon.png" "/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconconv--46510-RhdP9M1Lz4ln/icon.icns"
Conversion succeeded and produced icon at /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconconv--46510-RhdP9M1Lz4ln/icon.icns
Copying icons if necessary
No copying necessary on macOS; aborting
Packaging... This will take a few seconds, maybe minutes if the requested Electron isn't cached yet...
electron-packager Electron Packager 15.5.1
electron-packager Node v17.5.0
electron-packager Host Operating system: darwin 21.6.0 (arm64) +0ms
electron-packager Packager Options: {"arch":"arm64","asar":false,"darwinDarkModeSupport":true,"dir":"/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-app--46510-M9XVJJPwD3jW","electronVersion":"18.2.0","icon":"/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconconv--46510-RhdP9M1Lz4ln/icon.icns","name":"ProtonMail","out":"/Users/spywhere","overwrite":true,"quiet":false,"platform":"darwin","portable":false,"targetUrl":"https://mail.proton.me/","tmpdir":false,"upgrade":false,"win32metadata":{"ProductName":"ProtonMail","InternalName":"ProtonMail","FileDescription":"ProtonMail"},"appBundleId":"com.electron.nativefier.protonmail-nativefier-2572fe"} +0ms
electron-packager Target Platforms: darwin +0ms
electron-packager Target Architectures: arm64 +0ms
electron-packager Inferring appVersion from version in /var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-app--46510-M9XVJJPwD3jW/package.json +0ms
electron-packager Application name: ProtonMail +2ms
electron-packager Target Electron version: 18.2.0 +0ms
electron-packager Ignored path regular expressions: [
'/package-lock\\.json$',
'/yarn\\.lock$',
'/\\.git($|/)',
'/node_modules/\\.bin($|/)',
'\\.o(bj)?$'
] +0ms
electron-packager Downloading Electron with options {"platform":"darwin","arch":"arm64","version":"18.2.0","artifactName":"electron"} +0ms
Packaging app for platform darwin arm64 using electron v18.2.0
electron-packager Creating /Users/spywhere/darwin-arm64-template +2ms
electron-packager Extracting /Users/spywhere/Library/Caches/electron/829051a119b150bf50202e505694cd024fd10dd5107d116d66dc07e15324a278/electron-v18.2.0-darwin-arm64.zip to /Users/spywhere/darwin-arm64-template +1ms
electron-packager Initializing app in /Users/spywhere/ProtonMail-darwin-arm64 from /Users/spywhere/darwin-arm64-template template +0ms
electron-packager Ignored paths based on the out param: [
'/Users/spywhere/ProtonMail-darwin-x64',
'/Users/spywhere/ProtonMail-darwin-arm64',
'/Users/spywhere/ProtonMail-darwin-universal',
'/Users/spywhere/ProtonMail-linux-ia32',
'/Users/spywhere/ProtonMail-linux-x64',
'/Users/spywhere/ProtonMail-linux-armv7l',
'/Users/spywhere/ProtonMail-linux-arm64',
'/Users/spywhere/ProtonMail-linux-mips64el',
'/Users/spywhere/ProtonMail-mas-x64',
'/Users/spywhere/ProtonMail-mas-arm64',
'/Users/spywhere/ProtonMail-mas-universal',
'/Users/spywhere/ProtonMail-win32-ia32',
'/Users/spywhere/ProtonMail-win32-x64',
'/Users/spywhere/ProtonMail-win32-arm64'
] +1s
electron-packager Validating bundled Electron app +0ms
electron-packager Checking for a package.json file +0ms
electron-packager Checking for the main entry point file +0ms
electron-packager Validation complete +0ms
electron-packager Copying icon "/var/folders/7r/8p8cqwhd3q577d3x51t1yzm40000gn/T/nativefier-2-25-1-iconconv--46510-RhdP9M1Lz4ln/icon.icns" to app's Resources as "electron.icns" +0ms
electron-packager Renaming Electron to ProtonMail in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/MacOS +15ms
electron-packager Renaming Electron Helper to ProtonMail Helper in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS +1ms
electron-packager Renaming Electron Helper (Renderer) to ProtonMail Helper (Renderer) in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/MacOS +0ms
electron-packager Renaming Electron Helper (Plugin) to ProtonMail Helper (Plugin) in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks/Electron Helper (Plugin).app/Contents/MacOS +0ms
electron-packager Renaming Electron Helper (GPU) to ProtonMail Helper (GPU) in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks/Electron Helper (GPU).app/Contents/MacOS +0ms
electron-packager Renaming Electron Helper.app to ProtonMail Helper.app in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks +0ms
electron-packager Renaming Electron Helper (Renderer).app to ProtonMail Helper (Renderer).app in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks +0ms
electron-packager Renaming Electron Helper (Plugin).app to ProtonMail Helper (Plugin).app in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks +0ms
electron-packager Renaming Electron Helper (GPU).app to ProtonMail Helper (GPU).app in /Users/spywhere/ProtonMail-darwin-arm64/Electron.app/Contents/Frameworks +0ms
Finalizing build...
App built to /Users/spywhere/ProtonMail-darwin-arm64, move to wherever it makes sense for you and run the app bundle.
Then run the app, close the window, try clicking on the dock to restore window.
Homework
nativefier --helpand https://github.com/nativefier/nativefier/blob/master/API.mdBug description
On macOS, main window cannot be activate if closed without `--fast-quit`` option. This was due to undefined mainWindow variable.
Steps to reproduce
Then run the app, close the window, try clicking on the dock to restore window.
Expected behavior
Main window is showing properly when click on the dock after closing it earlier
Actual behavior
An error dialog is show up
Debug info
Error popup when click on the dock
Logs during runtime
Traces
nativefier/app/src/main.ts
Line 256 in 59a4bb8
nativefier/app/src/main.ts
Line 323 in 59a4bb8
nativefier/app/src/components/mainWindow.ts
Line 158 in 59a4bb8
From electron/electron#17526, the error seem to be from a redirection by the host.
By wrapping the call with
try/catch, the issue seem to be gone. I can make a PR but I'm not sure if wrapping it directly would affecting anything else or not, so input is highly appreciated.Context