diff --git a/src/core/qmlglobal.cpp b/src/core/qmlglobal.cpp index 0aaf06c5..0aba3065 100644 --- a/src/core/qmlglobal.cpp +++ b/src/core/qmlglobal.cpp @@ -263,7 +263,6 @@ void QuickshellGlobal::execDetached(const qs::io::process::ProcessContext& conte auto args = context.command.sliced(1); QProcess process; - qs::io::process::setupProcessEnvironment(&process, context.clearEnvironment, context.environment); if (!context.workingDirectory.isEmpty()) { @@ -272,6 +271,14 @@ void QuickshellGlobal::execDetached(const qs::io::process::ProcessContext& conte process.setProgram(cmd); process.setArguments(args); + + process.setStandardInputFile(QProcess::nullDevice()); + + if (context.unbindStdout) { + process.setStandardOutputFile(QProcess::nullDevice()); + process.setStandardErrorFile(QProcess::nullDevice()); + } + process.startDetached(); } diff --git a/src/io/process.cpp b/src/io/process.cpp index c8250c7e..6055e2c9 100644 --- a/src/io/process.cpp +++ b/src/io/process.cpp @@ -249,6 +249,11 @@ void Process::startDetached() { this->setupEnvironment(&process); process.setProgram(cmd); process.setArguments(args); + + process.setStandardInputFile(QProcess::nullDevice()); + process.setStandardOutputFile(QProcess::nullDevice()); + process.setStandardErrorFile(QProcess::nullDevice()); + process.startDetached(); } diff --git a/src/io/processcore.hpp b/src/io/processcore.hpp index c74f6fbc..37ec4093 100644 --- a/src/io/processcore.hpp +++ b/src/io/processcore.hpp @@ -16,6 +16,7 @@ class ProcessContext { Q_PROPERTY(QHash environment MEMBER environment WRITE setEnvironment); Q_PROPERTY(bool clearEnvironment MEMBER clearEnvironment WRITE setClearEnvironment); Q_PROPERTY(QString workingDirectory MEMBER workingDirectory WRITE setWorkingDirectory); + Q_PROPERTY(bool unbindStdout MEMBER unbindStdout WRITE setUnbindStdout); Q_GADGET; QML_STRUCTURED_VALUE; QML_VALUE_TYPE(processContext); @@ -45,6 +46,8 @@ public: this->workingDirectorySet = true; } + void setUnbindStdout(bool unbindStdout) { this->unbindStdout = unbindStdout; } + QList command; QHash environment; bool clearEnvironment = false; @@ -54,6 +57,7 @@ public: bool environmentSet : 1 = false; bool clearEnvironmentSet : 1 = false; bool workingDirectorySet : 1 = false; + bool unbindStdout : 1 = true; }; void setupProcessEnvironment(