diff --git a/src/config/constants.ts b/src/config/constants.ts index 98465c95..061399ca 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -149,6 +149,11 @@ export default { shortFlag: 'n', default: false, }, + sandbox: { + type: 'boolean', + alias: 'y', + default: true, + }, }, CHROME_LAUNCH_ARGS: [ diff --git a/src/helpers/flags.ts b/src/helpers/flags.ts index 99d34ba3..6cb27b79 100644 --- a/src/helpers/flags.ts +++ b/src/helpers/flags.ts @@ -54,21 +54,25 @@ const getDefaultOptions = (): Options => { }; const normalizeSandboxOption = ( - noSandbox: boolean | undefined, + options: CLIOptions, logger: LoggerFunction, ): Partial => { let sandboxDisabled = false; - if (noSandbox) { - if (os.platform() !== 'linux') { - logger.warn( - 'Disabling sandbox is only relevant on Linux platforms, request declined!', - ); - } else { - sandboxDisabled = true; - } + if (options.noSandbox === true) { + sandboxDisabled = true; + } + if (options.sandbox === false) { + sandboxDisabled = true; + } + if (sandboxDisabled && os.platform() !== 'linux') { + logger.warn( + 'Disabling sandbox is only relevant on Linux platforms, request declined!', + ); + sandboxDisabled = false; } return { noSandbox: sandboxDisabled, + sandbox: !sandboxDisabled, }; }; diff --git a/src/main.ts b/src/main.ts index d49f5f2d..753b346d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -63,7 +63,7 @@ async function generateImages( options, logger, ), - ...flags.normalizeSandboxOption(options.noSandbox, logger), + ...flags.normalizeSandboxOption(options, logger), }; } else { modOptions = { diff --git a/src/models/options.ts b/src/models/options.ts index a3610e85..94831878 100644 --- a/src/models/options.ts +++ b/src/models/options.ts @@ -156,6 +156,13 @@ export interface Options { @default false */ readonly noSandbox: boolean; + + /** + Enable sandbox on bundled Chromium on Linux platforms - recommended + + @default true + */ + readonly sandbox: boolean; } export type CLIOptions = Partial;