From ab10e26096a5494b68bc709a405a0dddeb227e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Wed, 11 Sep 2019 13:31:42 +0200 Subject: [PATCH] Fixes #80702 (#80705) --- build/gulpfile.vscode.linux.js | 2 +- resources/linux/snap/snapcraft.yaml | 4 ++-- src/vs/code/node/cli.ts | 10 +++++++--- src/vs/code/node/shellEnv.ts | 2 +- src/vs/platform/environment/common/environment.ts | 1 + src/vs/platform/environment/node/argv.ts | 1 + 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js index 52660b0df12..7cbda83c0d8 100644 --- a/build/gulpfile.vscode.linux.js +++ b/build/gulpfile.vscode.linux.js @@ -217,7 +217,7 @@ function prepareSnapPackage(arch) { .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME_SHORT@@', product.nameShort)) .pipe(replace('@@NAME@@', product.applicationName)) - .pipe(replace('@@EXEC@@', product.applicationName)) + .pipe(replace('@@EXEC@@', `${product.applicationName} --force-user-env`)) .pipe(replace('@@ICON@@', `\${SNAP}/meta/gui/${product.linuxIconName}.png`)) .pipe(replace('@@URLPROTOCOL@@', product.urlProtocol)); diff --git a/resources/linux/snap/snapcraft.yaml b/resources/linux/snap/snapcraft.yaml index 0f872089195..c39e5f4f849 100644 --- a/resources/linux/snap/snapcraft.yaml +++ b/resources/linux/snap/snapcraft.yaml @@ -49,14 +49,14 @@ parts: apps: @@NAME@@: - command: electron-launch $SNAP/usr/share/@@NAME@@/@@NAME@@ + command: electron-launch $SNAP/usr/share/@@NAME@@/bin/@@NAME@@ common-id: @@NAME@@.desktop environment: DISABLE_WAYLAND: 1 GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas url-handler: - command: electron-launch $SNAP/usr/share/@@NAME@@/@@NAME@@ --open-url + command: electron-launch $SNAP/usr/share/@@NAME@@/bin/@@NAME@@ --open-url environment: DISABLE_WAYLAND: 1 GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas diff --git a/src/vs/code/node/cli.ts b/src/vs/code/node/cli.ts index b847c638090..bf298ae4d60 100644 --- a/src/vs/code/node/cli.ts +++ b/src/vs/code/node/cli.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import { spawn, ChildProcess, SpawnOptions } from 'child_process'; -import { assign } from 'vs/base/common/objects'; import { buildHelpMessage, buildVersionMessage, addArg, createWaitMarkerFile, OPTIONS } from 'vs/platform/environment/node/argv'; import { parseCLIProcessArgv } from 'vs/platform/environment/node/argvHelper'; import { ParsedArgs } from 'vs/platform/environment/common/environment'; @@ -118,10 +117,15 @@ export async function main(argv: string[]): Promise { // Just Code else { - const env = assign({}, process.env, { + const env: NodeJS.ProcessEnv = { + ...process.env, 'VSCODE_CLI': '1', // this will signal Code that it was spawned from this module 'ELECTRON_NO_ATTACH_CONSOLE': '1' - }); + }; + + if (args['force-user-env']) { + env['VSCODE_FORCE_USER_ENV'] = '1'; + } delete env['ELECTRON_RUN_AS_NODE']; diff --git a/src/vs/code/node/shellEnv.ts b/src/vs/code/node/shellEnv.ts index fee0648ea13..b431b6d0514 100644 --- a/src/vs/code/node/shellEnv.ts +++ b/src/vs/code/node/shellEnv.ts @@ -98,7 +98,7 @@ export function getShellEnvironment(logService: ILogService, environmentService: } else if (isWindows) { logService.trace('getShellEnvironment: running on Windows, skipping'); _shellEnv = Promise.resolve({}); - } else if (process.env['VSCODE_CLI'] === '1') { + } else if (process.env['VSCODE_CLI'] === '1' && process.env['VSCODE_FORCE_USER_ENV'] !== '1') { logService.trace('getShellEnvironment: running on CLI, skipping'); _shellEnv = Promise.resolve({}); } else { diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts index 7f77b7a084d..31cca78bd31 100644 --- a/src/vs/platform/environment/common/environment.ts +++ b/src/vs/platform/environment/common/environment.ts @@ -73,6 +73,7 @@ export interface ParsedArgs { 'disable-user-env-probe'?: boolean; 'disable-inspect'?: boolean; 'force'?: boolean; + 'force-user-env'?: boolean; // node flags 'js-flags'?: string; diff --git a/src/vs/platform/environment/node/argv.ts b/src/vs/platform/environment/node/argv.ts index 3c72aa15242..e61113171d0 100644 --- a/src/vs/platform/environment/node/argv.ts +++ b/src/vs/platform/environment/node/argv.ts @@ -110,6 +110,7 @@ export const OPTIONS: OptionDescriptions> = { 'trace-category-filter': { type: 'string' }, 'trace-options': { type: 'string' }, 'disable-inspect': { type: 'boolean' }, + 'force-user-env': { type: 'boolean' }, 'js-flags': { type: 'string' }, // chrome js flags 'nolazy': { type: 'boolean' }, // node inspect