Terminal: Fix default environment vars

Fixes: QTCREATORBUG-29515
Change-Id: I1d14f228f946a64a8d3cdb17f57ae9058db549ff
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-08-18 16:12:06 +02:00
parent e9b3cd548c
commit 64b852e186
2 changed files with 8 additions and 19 deletions

View File

@@ -184,34 +184,16 @@ bool UnixPtyProcess::startProcess(const QString &shellPath,
m_readMasterNotify->disconnect(); m_readMasterNotify->disconnect();
}); });
QStringList defaultVars;
defaultVars.append("TERM=xterm-256color");
defaultVars.append("ITERM_PROFILE=Default");
defaultVars.append("XPC_FLAGS=0x0");
defaultVars.append("XPC_SERVICE_NAME=0");
defaultVars.append("LANG=en_US.UTF-8");
defaultVars.append("LC_ALL=en_US.UTF-8");
defaultVars.append("LC_CTYPE=UTF-8");
defaultVars.append("INIT_CWD=" + QCoreApplication::applicationDirPath());
defaultVars.append("COMMAND_MODE=unix2003");
defaultVars.append("COLORTERM=truecolor");
QStringList varNames; QStringList varNames;
foreach (QString line, environment) { foreach (QString line, environment) {
varNames.append(line.split("=").first()); varNames.append(line.split("=").first());
} }
//append default env vars only if they don't exists in current env
foreach (QString defVar, defaultVars) {
if (!varNames.contains(defVar.split("=").first()))
environment.append(defVar);
}
QProcessEnvironment envFormat; QProcessEnvironment envFormat;
foreach (QString line, environment) { foreach (QString line, environment) {
envFormat.insert(line.split("=").first(), line.split("=").last()); envFormat.insert(line.split("=").first(), line.split("=").last());
} }
m_shellProcess.setWorkingDirectory(workingDir); m_shellProcess.setWorkingDirectory(workingDir);
m_shellProcess.setProcessEnvironment(envFormat); m_shellProcess.setProcessEnvironment(envFormat);
m_shellProcess.setReadChannel(QProcess::StandardOutput); m_shellProcess.setReadChannel(QProcess::StandardOutput);

View File

@@ -149,6 +149,13 @@ void TerminalWidget::setupPty()
Environment env = m_openParameters.environment.value_or(Environment{}) Environment env = m_openParameters.environment.value_or(Environment{})
.appliedToEnvironment(shellCommand.executable().deviceEnvironment()); .appliedToEnvironment(shellCommand.executable().deviceEnvironment());
// Set some useful defaults
env.setFallback("TERM", "xterm-256color");
env.setFallback("TERM_PROGRAM", QCoreApplication::applicationName());
env.setFallback("COLORTERM", "truecolor");
env.setFallback("COMMAND_MODE", "unix2003");
env.setFallback("INIT_CWD", QCoreApplication::applicationDirPath());
// For git bash on Windows // For git bash on Windows
env.prependOrSetPath(shellCommand.executable().parentDir()); env.prependOrSetPath(shellCommand.executable().parentDir());
if (env.hasKey("CLINK_NOAUTORUN")) if (env.hasKey("CLINK_NOAUTORUN"))