From d0a0614ba387e163f08482da0d504381bae56268 Mon Sep 17 00:00:00 2001 From: FabulousCupcake Date: Thu, 22 Aug 2019 21:37:49 +0200 Subject: [PATCH] Add --browserwindow-options to completely expose Electron options (PR #835) 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 --- app/src/components/mainWindow/mainWindow.js | 3 +++ docs/api.md | 16 ++++++++++++++++ src/build/buildApp.js | 1 + src/cli.js | 5 +++++ src/options/optionsMain.js | 1 + 5 files changed, 26 insertions(+) diff --git a/app/src/components/mainWindow/mainWindow.js b/app/src/components/mainWindow/mainWindow.js index d0fe1ca..cf2e1e1 100644 --- a/app/src/components/mainWindow/mainWindow.js +++ b/app/src/components/mainWindow/mainWindow.js @@ -104,6 +104,8 @@ function createMainWindow(inpOptions, onAppQuit, setDockBadge) { }, }; + const browserwindowOptions = Object.assign({}, options.browserwindowOptions); + const mainWindow = new BrowserWindow( Object.assign( { @@ -128,6 +130,7 @@ function createMainWindow(inpOptions, onAppQuit, setDockBadge) { backgroundColor: options.backgroundColor, }, DEFAULT_WINDOW_OPTIONS, + browserwindowOptions, ), ); diff --git a/docs/api.md b/docs/api.md index aa964fe..49ed0c1 100644 --- a/docs/api.md +++ b/docs/api.md @@ -64,6 +64,7 @@ - [[file-download-options]](#file-download-options) - [[always-on-top]](#always-on-top) - [[global-shortcuts]](#global-shortcuts) + - [[browserwindow-options]](#browserwindow-options) - [[darwin-dark-mode-support]](#darwin-dark-mode-support) - [[background-color]](#background-color) - [Programmatic API](#programmatic-api) @@ -696,6 +697,21 @@ Example `shortcuts.json` for `https://deezer.com` & `https://soundcloud.com` to ] ``` +#### [browserwindow-options] + +``` +--browserwindow-options +``` + +a JSON string that will be sent directly into electron BrowserWindow options. +See [Electron's BrowserWindow API Documentation](https://electronjs.org/docs/api/browser-window#new-browserwindowoptions) for the complete list of options. + +Example: + +```bash +nativefier --browserwindow-options '{ "webPreferences": { "defaultFontFamily": { "standard": "Comic Sans MS", "serif": "Comic Sans MS" } } }' +``` + #### [darwin-dark-mode-support] ``` diff --git a/src/build/buildApp.js b/src/build/buildApp.js index 078846e..1391411 100644 --- a/src/build/buildApp.js +++ b/src/build/buildApp.js @@ -58,6 +58,7 @@ function selectAppArgs(options) { alwaysOnTop: options.alwaysOnTop, titleBarStyle: options.titleBarStyle, globalShortcuts: options.globalShortcuts, + browserwindowOptions: options.browserwindowOptions, backgroundColor: options.backgroundColor, darwinDarkModeSupport: options.darwinDarkModeSupport, }; diff --git a/src/cli.js b/src/cli.js index 2a6f29d..00324f6 100755 --- a/src/cli.js +++ b/src/cli.js @@ -238,6 +238,11 @@ if (require.main === module) { '--global-shortcuts ', 'JSON file with global shortcut configuration. See https://github.com/jiahaog/nativefier/blob/master/docs/api.md#global-shortcuts', ) + .option( + '--browserwindow-options ', + 'a JSON string that will be sent directly into electron BrowserWindow options. See https://github.com/jiahaog/nativefier/blob/master/docs/api.md#browserwindow-options', + parseJson, + ) .option( '--background-color ', "Sets the background color (for seamless experience while the app is loading). Example value: '#2e2c29'", diff --git a/src/options/optionsMain.js b/src/options/optionsMain.js index 429b297..72c1de3 100644 --- a/src/options/optionsMain.js +++ b/src/options/optionsMain.js @@ -77,6 +77,7 @@ export default function(inpOptions) { alwaysOnTop: inpOptions.alwaysOnTop || false, titleBarStyle: inpOptions.titleBarStyle || null, globalShortcuts: inpOptions.globalShortcuts || null, + browserwindowOptions: inpOptions.browserwindowOptions, backgroundColor: inpOptions.backgroundColor || null, darwinDarkModeSupport: inpOptions.darwinDarkModeSupport || false, };