diff --git a/src/main/index.ts b/src/main/index.ts index f608490ed1..73a5843840 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -30,7 +30,7 @@ if (app.commandLine.getSwitchValue("proxy-server") !== "") { } async function main() { - shellSync(app.getLocale()); + await shellSync(); const workingDir = path.join(app.getPath("appData"), appName); app.setName(appName); diff --git a/src/main/shell-sync.ts b/src/main/shell-sync.ts index 101fd46bc9..373d0a36ba 100644 --- a/src/main/shell-sync.ts +++ b/src/main/shell-sync.ts @@ -1,5 +1,7 @@ import shellEnv from "shell-env" import os from "os"; +import { app } from "electron"; +import logger from "./logger"; interface Env { [key: string]: string; @@ -9,14 +11,21 @@ interface Env { * shellSync loads what would have been the environment if this application was * run from the command line, into the process.env object. This is especially * useful on macos where this always needs to be done. - * @param locale Should be electron's `app.getLocale()` */ -export function shellSync(locale: string) { +export async function shellSync() { const { shell } = os.userInfo(); - const env: Env = JSON.parse(JSON.stringify(shellEnv.sync(shell))) + + let envVars = {}; + try { + envVars = await shellEnv(shell); + } catch (error) { + logger.error(`shellEnv: ${error}`) + } + + const env: Env = JSON.parse(JSON.stringify(envVars)); if (!env.LANG) { // the LANG env var expects an underscore instead of electron's dash - env.LANG = `${locale.replace('-', '_')}.UTF-8`; + env.LANG = `${app.getLocale().replace('-', '_')}.UTF-8`; } else if (!env.LANG.endsWith(".UTF-8")) { env.LANG += ".UTF-8" }