wayland support

This commit is contained in:
2023-05-15 12:00:46 +03:00
parent 84de9755b5
commit dea9d488df
89 changed files with 423 additions and 646 deletions

View File

@ -56,9 +56,7 @@ QStringList BatterySource::getSources()
if (directory.exists()) {
m_batteriesCount
= directory
.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name)
.count();
= directory.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count();
qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount;
for (int i = 0; i < m_batteriesCount; i++) {
@ -185,8 +183,7 @@ void BatterySource::run()
// total
QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
if (fullLevelFile.open(QIODevice::ReadOnly | QIODevice::Text))
m_values[QString("battery/battotal%1").arg(i)]
= QString(fullLevelFile.readLine()).toInt();
m_values[QString("battery/battotal%1").arg(i)] = QString(fullLevelFile.readLine()).toInt();
fullLevelFile.close();
m_values[QString("battery/bat%1").arg(i)]

View File

@ -56,8 +56,7 @@ QVariantMap CustomSource::initialData(const QString &_source) const
QVariantMap data;
data["min"] = "";
data["max"] = "";
data["name"] = QString("Custom command '%1' output")
.arg(m_extScripts->itemByTagNumber(index(_source))->uniq());
data["name"] = QString("Custom command '%1' output").arg(m_extScripts->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString";
data["units"] = "";

View File

@ -18,7 +18,8 @@
#include "desktopsource.h"
#include <KX11Extras>
#include <KWindowSystem/KWindowSystem>
#include <taskmanager/virtualdesktopinfo.h>
#include "awdebug.h"
@ -28,12 +29,16 @@ DesktopSource::DesktopSource(QObject *_parent, const QStringList &_args)
{
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_vdi = new TaskManager::VirtualDesktopInfo(this);
}
DesktopSource::~DesktopSource()
{
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
delete m_vdi;
}
@ -41,20 +46,17 @@ QVariant DesktopSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << _source;
int current = KX11Extras::currentDesktop();
int total = KX11Extras::numberOfDesktops();
auto increment = KWindowSystem::isPlatformX11() ? 0 : 1;
auto current = m_vdi->position(m_vdi->currentDesktop()) + increment;
if (_source == "desktop/current/name") {
return KX11Extras::desktopName(current);
return m_vdi->desktopNames().at(current);
} else if (_source == "desktop/current/number") {
return current;
} else if (_source == "desktop/total/name") {
QStringList desktops;
for (int i = 1; i < total + 1; i++)
desktops.append(KX11Extras::desktopName(i));
return desktops;
return m_vdi->desktopNames();
} else if (_source == "desktop/total/number") {
return total;
return m_vdi->numberOfDesktops();
}
return QVariant();

View File

@ -23,6 +23,10 @@
#include "abstractextsysmonsource.h"
namespace TaskManager
{
class VirtualDesktopInfo;
}
class DesktopSource : public AbstractExtSysMonSource
{
Q_OBJECT
@ -34,6 +38,9 @@ public:
[[nodiscard]] QVariantMap initialData(const QString &_source) const override;
void run() override{};
[[nodiscard]] QStringList sources() const override;
private:
TaskManager::VirtualDesktopInfo *m_vdi = nullptr;
};

View File

@ -36,7 +36,7 @@ GPULoadSource::GPULoadSource(QObject *_parent, const QStringList &_args)
m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(); });
[this](int, QProcess::ExitStatus) { return updateValue(); });
m_process->waitForFinished(0);
}
@ -124,11 +124,9 @@ QStringList GPULoadSource::sources() const
void GPULoadSource::updateValue()
{
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == "nvidia") {

View File

@ -36,7 +36,7 @@ GPUTemperatureSource::GPUTemperatureSource(QObject *_parent, const QStringList &
m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(); });
[this](int, QProcess::ExitStatus) { return updateValue(); });
m_process->waitForFinished(0);
}
@ -84,8 +84,7 @@ void GPUTemperatureSource::run()
return;
// build cmd
QString cmd = m_device == "nvidia" ? "nvidia-smi" : "aticonfig";
auto args
= m_device == "nvidia" ? QStringList({"-q", "-x"}) : QStringList({"--od-gettemperature"});
auto args = m_device == "nvidia" ? QStringList({"-q", "-x"}) : QStringList({"--od-gettemperature"});
qCInfo(LOG_ESS) << "cmd" << cmd;
m_process->start(cmd, args);
@ -104,11 +103,9 @@ QStringList GPUTemperatureSource::sources() const
void GPUTemperatureSource::updateValue()
{
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == "nvidia") {

View File

@ -41,7 +41,7 @@ HDDTemperatureSource::HDDTemperatureSource(QObject *_parent, const QStringList &
m_processes[device] = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_processes[device], QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(device); });
[this, &device](int, QProcess::ExitStatus) { return updateValue(device); });
m_processes[device]->waitForFinished(0);
}
}
@ -120,13 +120,9 @@ void HDDTemperatureSource::updateValue(const QString &_device)
qCDebug(LOG_ESS) << "Called with device" << _device;
qCInfo(LOG_ESS) << "Cmd returns" << m_processes[_device]->exitCode();
QString qdebug = QTextCodec::codecForMib(106)
->toUnicode(m_processes[_device]->readAllStandardError())
.trimmed();
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_processes[_device]->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput = QTextCodec::codecForMib(106)
->toUnicode(m_processes[_device]->readAllStandardOutput())
.trimmed();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_processes[_device]->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
// parse

View File

@ -34,7 +34,7 @@ NetworkSource::NetworkSource(QObject *_parent, const QStringList &_args)
m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateSsid(); });
[this](int, QProcess::ExitStatus) { return updateSsid(); });
m_process->waitForFinished(0);
}
@ -101,11 +101,9 @@ QStringList NetworkSource::sources() const
void NetworkSource::updateSsid()
{
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
m_values["network/current/ssid"] = qoutput;

View File

@ -68,8 +68,7 @@ QVariant PlayerSource::data(const QString &_source)
QString PlayerSource::getAutoMpris()
{
QDBusMessage listServices
= QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty()) {
qCWarning(LOG_ESS) << "Could not find any DBus service";
return "";
@ -187,12 +186,12 @@ void PlayerSource::run()
m_values["player/sartist"] = stripString(m_values["player/artist"].toString(), m_symbols);
m_values["player/stitle"] = stripString(m_values["player/title"].toString(), m_symbols);
// dynamic
m_values["player/dalbum"] = buildString(m_values["player/dalbum"].toString(),
m_values["player/album"].toString(), m_symbols);
m_values["player/dartist"] = buildString(m_values["player/dartist"].toString(),
m_values["player/artist"].toString(), m_symbols);
m_values["player/dtitle"] = buildString(m_values["player/dtitle"].toString(),
m_values["player/title"].toString(), m_symbols);
m_values["player/dalbum"]
= buildString(m_values["player/dalbum"].toString(), m_values["player/album"].toString(), m_symbols);
m_values["player/dartist"]
= buildString(m_values["player/dartist"].toString(), m_values["player/artist"].toString(), m_symbols);
m_values["player/dtitle"]
= buildString(m_values["player/dtitle"].toString(), m_values["player/title"].toString(), m_symbols);
}
@ -217,8 +216,7 @@ QStringList PlayerSource::sources() const
QString PlayerSource::buildString(const QString &_current, const QString &_value, const int _s)
{
qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value
<< "will be stripped after" << _s;
qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value << "will be stripped after" << _s;
int index = _value.indexOf(_current);
if ((_current.isEmpty()) || ((index + _s + 1) > _value.count()))
@ -245,8 +243,7 @@ bool PlayerSource::isMpdSocketConnected() const
void PlayerSource::mpdSocketConnected()
{
qCDebug(LOG_ESS) << "MPD socket connected to" << m_mpdSocket.peerName() << "with state"
<< m_mpdSocket.state();
qCDebug(LOG_ESS) << "MPD socket connected to" << m_mpdSocket.peerName() << "with state" << m_mpdSocket.state();
}
@ -329,9 +326,9 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
// /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get
// string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
auto args = QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"});
QDBusMessage request = QDBusMessage::createMethodCall(
QString("org.mpris.MediaPlayer2.%1").arg(_mpris), "/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties", "Get");
QDBusMessage request
= QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(_mpris), "/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties", "Get");
request.setArguments(args);
auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);
if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) {
@ -356,8 +353,7 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
} else {
// this cast is simpler than the previous one ;)
info["player/progress"]
= response.arguments().first().value<QDBusVariant>().variant().toLongLong()
/ (1000 * 1000);
= response.arguments().first().value<QDBusVariant>().variant().toLongLong() / (1000 * 1000);
}
return info;

View File

@ -79,8 +79,7 @@ QVariantMap ProcessesSource::initialData(const QString &_source) const
void ProcessesSource::run()
{
QStringList allDirectories
= QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList allDirectories = QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList directories = allDirectories.filter(QRegExp("(\\d+)"));
QStringList running;

View File

@ -66,8 +66,7 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
if (_source.startsWith("quotes/pricechg")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Absolute prie changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["name"] = QString("Absolute prie changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/price")) {
@ -79,15 +78,13 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
} else if (_source.startsWith("quotes/percpricechg")) {
data["min"] = -100.0;
data["max"] = 100.0;
data["name"]
= QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["name"] = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/volumechg")) {
data["min"] = 0;
data["max"] = 0;
data["name"] = QString("Absolute volume changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["name"] = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "int";
data["units"] = "";
} else if (_source.startsWith("quotes/volume")) {
@ -99,8 +96,7 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
} else if (_source.startsWith("quotes/percvolumechg")) {
data["min"] = -100.0;
data["max"] = 100.0;
data["name"]
= QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["name"] = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
}

View File

@ -66,8 +66,7 @@ QVariantMap RequestSource::initialData(const QString &_source) const
if (_source.startsWith("network/response")) {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
data["name"] = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
}

View File

@ -101,14 +101,12 @@ float SystemInfoSource::getCurrentBrightness()
{
qCDebug(LOG_ESS) << "Get current brightness";
auto maxBrightness = sendDBusRequest("org.kde.Solid.PowerManagement",
"/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"org.kde.Solid.PowerManagement.Actions.BrightnessControl",
"brightnessMax")
.toFloat();
auto maxBrightness
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightnessMax")
.toFloat();
auto brightness
= sendDBusRequest("org.kde.Solid.PowerManagement",
"/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightness")
.toFloat();
@ -122,9 +120,8 @@ float SystemInfoSource::getCurrentVolume()
// current device first
auto currentMixer
= fromDBusVariant(
sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterMixer"})))
= fromDBusVariant(sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterMixer"})))
.toString();
if (currentMixer.isEmpty()) {
@ -135,9 +132,8 @@ float SystemInfoSource::getCurrentVolume()
// get capture device
auto currentControl
= fromDBusVariant(
sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterControl"})))
= fromDBusVariant(sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterControl"})))
.toString();
if (currentControl.isEmpty()) {
qCWarning(LOG_ESS) << "Control is empty";
@ -146,15 +142,14 @@ float SystemInfoSource::getCurrentVolume()
currentControl.replace(":", "_").replace(".", "_").replace("-", "_");
auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl);
return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties",
"Get", QVariantList({"org.kde.KMix.Control", "volume"})))
return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.Control", "volume"})))
.toFloat();
}
QVariant SystemInfoSource::sendDBusRequest(const QString &destination, const QString &path,
const QString &interface, const QString &method,
const QVariantList &args)
QVariant SystemInfoSource::sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
const QString &method, const QVariantList &args)
{
qCDebug(LOG_ESS) << "Send dbus request" << destination << path << interface << method << args;

View File

@ -41,9 +41,8 @@ private:
static QVariant fromDBusVariant(const QVariant &value);
static float getCurrentBrightness();
static float getCurrentVolume();
static QVariant sendDBusRequest(const QString &destination, const QString &path,
const QString &interface, const QString &method,
const QVariantList &args = QVariantList());
static QVariant sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
const QString &method, const QVariantList &args = QVariantList());
};

View File

@ -56,8 +56,7 @@ QVariantMap UpgradeSource::initialData(const QString &_source) const
QVariantMap data;
data["min"] = "";
data["max"] = "";
data["name"] = QString("Package manager '%1' metadata")
.arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq());
data["name"] = QString("Package manager '%1' metadata").arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString";
data["units"] = "";

View File

@ -66,15 +66,13 @@ QVariantMap WeatherSource::initialData(const QString &_source) const
if (_source.startsWith("weather/weatherId")) {
data["min"] = 0;
data["max"] = 1000;
data["name"] = QString("Numeric weather ID for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["name"] = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer";
data["units"] = "";
} else if (_source.startsWith("weather/weather")) {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["name"] = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
} else if (_source.startsWith("weather/humidity")) {
@ -86,22 +84,19 @@ QVariantMap WeatherSource::initialData(const QString &_source) const
} else if (_source.startsWith("weather/pressure")) {
data["min"] = 0;
data["max"] = 0;
data["name"] = QString("Atmospheric pressure for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["name"] = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer";
data["units"] = "mb";
} else if (_source.startsWith("weather/temperature")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"]
= QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["name"] = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "float";
data["units"] = "°C";
} else if (_source.startsWith("weather/timestamp")) {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["name"] = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
}