forked from qt-creator/qt-creator
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:
@@ -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,16 +564,19 @@ 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()
|
||||||
<< msgPromptToClose()
|
<< msgPromptToClose()
|
||||||
<< workingDirectory()
|
<< workingDirectory()
|
||||||
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
|
<< (d->m_tempFile ? d->m_tempFile->fileName() : QString())
|
||||||
<< QString::number(getpid())
|
<< QString::number(getpid())
|
||||||
<< 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()) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user