mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-06-09 07:52:19 +00:00
d0a0614ba3
This adds a new flag `--browserwindow-options`, taking a stringified JSON object as input. It will be inserted directly into the options when BrowserConfig is initialized. This allows total configurability of the electron BrowserWindow configuration via nativefier. An example use case is added to the documentation, which modifies the default font family in the browser. #### References - https://github.com/electron/electron/blob/master/docs/api/browser-window.md#new-browserwindowoptions - See the following for electron v3.1.7 - https://github.com/electron/electron/blob/v3.1.7/docs/api/browser-window.md#new-browserwindowoptions
133 lines
4.3 KiB
JavaScript
133 lines
4.3 KiB
JavaScript
import fs from 'fs';
|
|
import log from 'loglevel';
|
|
|
|
import inferOs from '../infer/inferOs';
|
|
import normalizeUrl from './normalizeUrl';
|
|
import packageJson from '../../package.json';
|
|
import { ELECTRON_VERSION, PLACEHOLDER_APP_DIR } from '../constants';
|
|
import asyncConfig from './asyncConfig';
|
|
|
|
const { inferPlatform, inferArch } = inferOs;
|
|
|
|
/**
|
|
* Extracts only desired keys from inpOptions and augments it with defaults
|
|
* @param {Object} inpOptions
|
|
* @returns {Promise}
|
|
*/
|
|
export default function(inpOptions) {
|
|
const options = {
|
|
dir: PLACEHOLDER_APP_DIR,
|
|
name: inpOptions.name,
|
|
targetUrl: normalizeUrl(inpOptions.targetUrl),
|
|
platform: inpOptions.platform || inferPlatform(),
|
|
arch: inpOptions.arch || inferArch(),
|
|
electronVersion: inpOptions.electronVersion || ELECTRON_VERSION,
|
|
nativefierVersion: packageJson.version,
|
|
out: inpOptions.out || process.cwd(),
|
|
overwrite: inpOptions.overwrite,
|
|
asar: inpOptions.conceal || false,
|
|
icon: inpOptions.icon,
|
|
counter: inpOptions.counter || false,
|
|
bounce: inpOptions.bounce || false,
|
|
width: inpOptions.width || 1280,
|
|
height: inpOptions.height || 800,
|
|
minWidth: inpOptions.minWidth,
|
|
minHeight: inpOptions.minHeight,
|
|
maxWidth: inpOptions.maxWidth,
|
|
maxHeight: inpOptions.maxHeight,
|
|
showMenuBar: inpOptions.showMenuBar || false,
|
|
fastQuit: inpOptions.fastQuit || false,
|
|
userAgent: inpOptions.userAgent,
|
|
ignoreCertificate: inpOptions.ignoreCertificate || false,
|
|
disableGpu: inpOptions.disableGpu || false,
|
|
ignoreGpuBlacklist: inpOptions.ignoreGpuBlacklist || false,
|
|
enableEs3Apis: inpOptions.enableEs3Apis || false,
|
|
insecure: inpOptions.insecure || false,
|
|
flashPluginDir: inpOptions.flashPath || inpOptions.flash || null,
|
|
diskCacheSize: inpOptions.diskCacheSize || null,
|
|
inject: inpOptions.inject || null,
|
|
ignore: 'src',
|
|
fullScreen: inpOptions.fullScreen || false,
|
|
maximize: inpOptions.maximize || false,
|
|
hideWindowFrame: inpOptions.hideWindowFrame,
|
|
verbose: inpOptions.verbose,
|
|
disableContextMenu: inpOptions.disableContextMenu,
|
|
disableDevTools: inpOptions.disableDevTools,
|
|
crashReporter: inpOptions.crashReporter,
|
|
// workaround for electron-packager#375
|
|
tmpdir: false,
|
|
zoom: inpOptions.zoom || 1.0,
|
|
internalUrls: inpOptions.internalUrls || null,
|
|
singleInstance: inpOptions.singleInstance || false,
|
|
clearCache: inpOptions.clearCache || false,
|
|
appVersion: inpOptions.appVersion,
|
|
buildVersion: inpOptions.buildVersion,
|
|
appCopyright: inpOptions.appCopyright,
|
|
versionString: inpOptions.versionString,
|
|
win32metadata: inpOptions.win32metadata || {
|
|
ProductName: inpOptions.name,
|
|
InternalName: inpOptions.name,
|
|
FileDescription: inpOptions.name,
|
|
},
|
|
processEnvs: inpOptions.processEnvs,
|
|
fileDownloadOptions: inpOptions.fileDownloadOptions,
|
|
tray: inpOptions.tray || false,
|
|
basicAuthUsername: inpOptions.basicAuthUsername || null,
|
|
basicAuthPassword: inpOptions.basicAuthPassword || null,
|
|
alwaysOnTop: inpOptions.alwaysOnTop || false,
|
|
titleBarStyle: inpOptions.titleBarStyle || null,
|
|
globalShortcuts: inpOptions.globalShortcuts || null,
|
|
browserwindowOptions: inpOptions.browserwindowOptions,
|
|
backgroundColor: inpOptions.backgroundColor || null,
|
|
darwinDarkModeSupport: inpOptions.darwinDarkModeSupport || false,
|
|
};
|
|
|
|
if (options.verbose) {
|
|
log.setLevel('trace');
|
|
} else {
|
|
log.setLevel('error');
|
|
}
|
|
|
|
if (options.flashPluginDir) {
|
|
options.insecure = true;
|
|
}
|
|
|
|
if (inpOptions.honest) {
|
|
options.userAgent = null;
|
|
}
|
|
|
|
if (options.platform.toLowerCase() === 'windows') {
|
|
options.platform = 'win32';
|
|
}
|
|
|
|
if (
|
|
options.platform.toLowerCase() === 'osx' ||
|
|
options.platform.toLowerCase() === 'mac'
|
|
) {
|
|
options.platform = 'darwin';
|
|
}
|
|
|
|
if (options.width > options.maxWidth) {
|
|
options.width = options.maxWidth;
|
|
}
|
|
|
|
if (options.height > options.maxHeight) {
|
|
options.height = options.maxHeight;
|
|
}
|
|
|
|
if (typeof inpOptions.x !== 'undefined') {
|
|
options.x = inpOptions.x;
|
|
}
|
|
|
|
if (typeof inpOptions.y !== 'undefined') {
|
|
options.y = inpOptions.y;
|
|
}
|
|
|
|
if (options.globalShortcuts) {
|
|
const globalShortcutsFileContent = fs.readFileSync(options.globalShortcuts);
|
|
options.globalShortcuts = JSON.parse(globalShortcutsFileContent);
|
|
}
|
|
|
|
return asyncConfig(options);
|
|
}
|