diff --git a/electron/build/patch/backend/main.js b/electron/build/patch/backend/main.js index b15d72e40..cb138d3c4 100644 --- a/electron/build/patch/backend/main.js +++ b/electron/build/patch/backend/main.js @@ -1,4 +1,18 @@ // @ts-check + +// Patch for on Linux when `XDG_CONFIG_HOME` is not available, `node-log-rotate` creates the folder with `undefined` name. +// See https://github.com/lemon-sour/node-log-rotate/issues/23 and https://github.com/arduino/arduino-ide/issues/394. +// If the IDE2 is running on Linux, and the `XDG_CONFIG_HOME` variable is not available, set it to avoid the `undefined` folder. +// From the specs: https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html +// "If $XDG_CONFIG_HOME is either not set or empty, a default equal to $HOME/.config should be used." +const os = require('os'); +if (os.platform() === 'linux' && !process.env['XDG_CONFIG_HOME']) { + const { join } = require('path'); + const home = process.env['HOME']; + const xdgConfigHome = home ? join(home, '.config') : join(os.homedir(), '.config'); + process.env['XDG_CONFIG_HOME'] = xdgConfigHome; +} + const { setup, log } = require('node-log-rotate'); setup({ appName: 'Arduino IDE',