diff --git a/src/main/index.ts b/src/main/index.ts index 0e94fb5226..a95ad61578 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -32,9 +32,8 @@ const vmURL = (isDevelopment) ? `http://localhost:${process.env.ELECTRON_WEBPACK protocol: "file", slashes: true, }) - async function main() { - shellSync(app.getLocale()) + await shellSync(); const updater = new AppUpdater() updater.start(); diff --git a/src/main/shell-sync.ts b/src/main/shell-sync.ts index afeccaa657..08c05f61a8 100644 --- a/src/main/shell-sync.ts +++ b/src/main/shell-sync.ts @@ -1,6 +1,7 @@ import shellEnv = require("shell-env") import logger from "./logger" import * as os from "os"; +import { app } from "electron"; interface Env { [key: string]: string; @@ -10,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" }