mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
I prefer create MR now to avoid biggest merge request. It add minimalist implementation: - First configuration of Waydroid - Stop / Start Waydroid session - Configure properties of Waydroid - Display current ip of Waydroid | Not installed | First initialization | initializing | SessionNotStarted | SessionStarting | SessionStarted | | ------ | ------ | ------ | ------ | ------ | ------ | |  |  |  |  |  |  | Linked to https://invent.kde.org/teams/plasma-mobile/issues/-/issues/307 **Note for Reviewer**: In my local environment, i need to add manually the KAuth files otherwise polkit not recognize the implementation. ``` sudo cp ~/kde/usr/share/dbus-1/system-services/org.kde.plasma.mobileshell.waydroidhelper.service /usr/share/dbus-1/system-services/ sudo cp ~/kde/usr/share/dbus-1/system.d/org.kde.plasma.mobileshell.waydroidhelper.conf /usr/share/dbus-1/system.d/ sudo cp ~/kde/usr/share/polkit-1/actions/org.kde.plasma.mobileshell.waydroidhelper.policy /usr/share/polkit-1/actions/ ```
61 lines
No EOL
1.6 KiB
C++
61 lines
No EOL
1.6 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2025 Florian RICHER <florian.richer@protonmail.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#include "waydroidhelper_debug.h"
|
|
|
|
#include <KAuth/ActionReply>
|
|
#include <KAuth/HelperSupport>
|
|
|
|
#include <QDebug>
|
|
#include <QFile>
|
|
#include <QFileInfo>
|
|
#include <QLoggingCategory>
|
|
#include <QObject>
|
|
#include <QProcess>
|
|
|
|
using namespace Qt::StringLiterals;
|
|
|
|
#define WAYDROID_COMMAND "waydroid"
|
|
|
|
class WaydroidHelper : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public Q_SLOTS:
|
|
KAuth::ActionReply initialize(const QVariantMap &args);
|
|
};
|
|
|
|
KAuth::ActionReply WaydroidHelper::initialize(const QVariantMap &args)
|
|
{
|
|
const QString systemType = args.value("systemType"_L1).toString();
|
|
const QString romType = args.value("romType"_L1).toString();
|
|
const bool forced = args.value("forced"_L1, false).toBool();
|
|
|
|
QStringList arguments{u"init"_s, u"-s"_s, systemType, u"-r"_s, romType};
|
|
if (forced) {
|
|
arguments << "-f";
|
|
}
|
|
|
|
QProcess *process = new QProcess(this);
|
|
process->start(WAYDROID_COMMAND, arguments);
|
|
process->waitForFinished();
|
|
|
|
if (process->exitCode() == 0) {
|
|
return KAuth::ActionReply::SuccessReply();
|
|
} else {
|
|
QByteArray errorData = process->readAllStandardError();
|
|
QString errorString = QString::fromUtf8(errorData);
|
|
|
|
qCWarning(WAYDROIDHELPER) << "Failed to initialize Waydroid: " << errorString;
|
|
|
|
KAuth::ActionReply reply = KAuth::ActionReply::HelperErrorReply();
|
|
reply.setErrorDescription(errorString);
|
|
return reply;
|
|
}
|
|
}
|
|
|
|
KAUTH_HELPER_MAIN("org.kde.plasma.mobileshell.waydroidhelper", WaydroidHelper)
|
|
|
|
#include "waydroidhelper.moc" |