#include "LinuxCap.h" #include #include #include int Linux_Run_Command(const QString &commandName, const QString &args) { auto command = QString("pkexec %1 %2").arg(Linux_FindCapProgsExec(commandName)).arg(args); return system(command.toStdString().c_str()); } bool Linux_HavePkexec() { QProcess p; p.setProgram("pkexec"); p.setArguments({"--help"}); p.setProcessChannelMode(QProcess::SeparateChannels); p.start(); p.waitForFinished(500); return (p.exitStatus() == QProcess::NormalExit ? p.exitCode() : -1) == 0; } QString Linux_FindCapProgsExec(const QString &name) { QString exec = QStandardPaths::findExecutable(name); if (exec.isEmpty()) exec = QStandardPaths::findExecutable(name, {"/usr/sbin", "/sbin"}); if (exec.isEmpty()) qDebug() << "Executable" << name << "could not be resolved"; else qDebug() << "Found exec" << name << "at" << exec; return exec.isEmpty() ? name : exec; }