lib/utils/consoleprocess: Check for xdg-terminal

Change-Id: I9970153d9abc9beff3081ddb09e7d3d95ea8c63a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Maximilian Goldstein
2020-01-15 14:39:20 +01:00
parent 5d53dbd501
commit 4d269f930a
2 changed files with 19 additions and 13 deletions

View File

@@ -64,10 +64,11 @@ namespace Utils {
// TerminalCommand // TerminalCommand
TerminalCommand::TerminalCommand(const QString &command, const QString &openArgs, const QString &executeArgs) TerminalCommand::TerminalCommand(const QString &command, const QString &openArgs, const QString &executeArgs, bool needsQuotes)
: command(command) : command(command)
, openArgs(openArgs) , openArgs(openArgs)
, executeArgs(executeArgs) , executeArgs(executeArgs)
, needsQuotes(needsQuotes)
{ {
} }
@@ -143,6 +144,7 @@ void ConsoleProcess::setSettings(QSettings *settings)
Q_GLOBAL_STATIC_WITH_ARGS(const QVector<TerminalCommand>, knownTerminals, ( Q_GLOBAL_STATIC_WITH_ARGS(const QVector<TerminalCommand>, knownTerminals, (
{ {
{"x-terminal-emulator", "", "-e"}, {"x-terminal-emulator", "", "-e"},
{"xdg-terminal", "", "", true},
{"xterm", "", "-e"}, {"xterm", "", "-e"},
{"aterm", "", "-e"}, {"aterm", "", "-e"},
{"Eterm", "", "-e"}, {"Eterm", "", "-e"},
@@ -173,7 +175,7 @@ TerminalCommand ConsoleProcess::defaultTerminalEmulator()
for (const TerminalCommand &term : *knownTerminals) { for (const TerminalCommand &term : *knownTerminals) {
const QString result = env.searchInPath(term.command).toString(); const QString result = env.searchInPath(term.command).toString();
if (!result.isEmpty()) { if (!result.isEmpty()) {
defaultTerm = {result, term.openArgs, term.executeArgs}; defaultTerm = {result, term.openArgs, term.executeArgs, term.needsQuotes};
break; break;
} }
} }
@@ -562,7 +564,7 @@ bool ConsoleProcess::start()
const QString stubPath = QCoreApplication::applicationDirPath() const QString stubPath = QCoreApplication::applicationDirPath()
+ QLatin1String("/" QTC_REL_TOOLS_PATH "/qtcreator_process_stub"); + QLatin1String("/" QTC_REL_TOOLS_PATH "/qtcreator_process_stub");
const QStringList allArgs = terminalArgs.toUnixArgs() QStringList allArgs = terminalArgs.toUnixArgs()
<< stubPath << stubPath
<< modeOption(d->m_mode) << modeOption(d->m_mode)
<< d->m_stubServer.fullServerName() << d->m_stubServer.fullServerName()
@@ -573,6 +575,9 @@ bool ConsoleProcess::start()
<< pcmd << pcmd
<< pargs.toUnixArgs(); << pargs.toUnixArgs();
if (terminal.needsQuotes)
allArgs = QStringList { QtcProcess::joinArgs(allArgs) };
d->m_process.start(terminal.command, allArgs); d->m_process.start(terminal.command, allArgs);
if (!d->m_process.waitForStarted()) { if (!d->m_process.waitForStarted()) {
stubServerShutdown(); stubServerShutdown();

View File

@@ -43,7 +43,7 @@ class QTCREATOR_UTILS_EXPORT TerminalCommand
{ {
public: public:
TerminalCommand() = default; TerminalCommand() = default;
TerminalCommand(const QString &command, const QString &openArgs, const QString &executeArgs); TerminalCommand(const QString &command, const QString &openArgs, const QString &executeArgs, bool needsQuotes = false);
bool operator==(const TerminalCommand &other) const; bool operator==(const TerminalCommand &other) const;
bool operator<(const TerminalCommand &other) const; bool operator<(const TerminalCommand &other) const;
@@ -51,6 +51,7 @@ public:
QString command; QString command;
QString openArgs; QString openArgs;
QString executeArgs; QString executeArgs;
bool needsQuotes = false;
}; };
class QTCREATOR_UTILS_EXPORT ConsoleProcess : public QObject class QTCREATOR_UTILS_EXPORT ConsoleProcess : public QObject