mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-06 10:25:52 +00:00
implement dynamic tags
This commit is contained in:
@ -72,151 +72,6 @@ ExtendedSysMon::~ExtendedSysMon()
|
||||
}
|
||||
|
||||
|
||||
QStringList ExtendedSysMon::getAllHdd() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList allDevices = QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
|
||||
for (int i=0; i<devices.count(); i++)
|
||||
devices[i] = QString("/dev/%1").arg(devices.at(i));
|
||||
|
||||
qCInfo(LOG_ESM) << "Device list" << devices;
|
||||
return devices;
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::getAutoGpu() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QString gpu = QString("disable");
|
||||
QFile moduleFile(QString("/proc/modules"));
|
||||
if (!moduleFile.open(QIODevice::ReadOnly)) return gpu;
|
||||
|
||||
QString output = moduleFile.readAll();
|
||||
if (output.contains(QString("fglrx")))
|
||||
gpu = QString("ati");
|
||||
else if (output.contains(QString("nvidia")))
|
||||
gpu = QString("nvidia");
|
||||
|
||||
qCInfo(LOG_ESM) << "Device" << gpu;
|
||||
return gpu;
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::getAutoMpris() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, QString("ListNames"));
|
||||
if (listServices.arguments().isEmpty()) return QString();
|
||||
QStringList arguments = listServices.arguments().first().toStringList();
|
||||
|
||||
foreach(QString arg, arguments) {
|
||||
qCInfo(LOG_ESM) << "Service found" << arg;
|
||||
if (!arg.startsWith(QString("org.mpris.MediaPlayer2."))) continue;
|
||||
QString service = arg;
|
||||
service.remove(QString("org.mpris.MediaPlayer2."));
|
||||
return service;
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
QStringList ExtendedSysMon::sources() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList source;
|
||||
source.append(QString("battery"));
|
||||
source.append(QString("custom"));
|
||||
source.append(QString("desktop"));
|
||||
source.append(QString("netdev"));
|
||||
source.append(QString("gpu"));
|
||||
source.append(QString("gputemp"));
|
||||
source.append(QString("hddtemp"));
|
||||
source.append(QString("pkg"));
|
||||
source.append(QString("player"));
|
||||
source.append(QString("ps"));
|
||||
source.append(QString("quotes"));
|
||||
source.append(QString("update"));
|
||||
source.append(QString("weather"));
|
||||
|
||||
qCInfo(LOG_ESM) << "Sources" << source;
|
||||
return source;
|
||||
}
|
||||
|
||||
|
||||
void ExtendedSysMon::readConfiguration()
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_ESM) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QHash<QString, QString> rawConfig;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
rawConfig[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/")).toString();
|
||||
rawConfig[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto")).toString();
|
||||
rawConfig[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all")).toString();
|
||||
rawConfig[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a")).toString();
|
||||
rawConfig[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost")).toString();
|
||||
rawConfig[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600")).toString();
|
||||
rawConfig[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto")).toString();
|
||||
rawConfig[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris")).toString();
|
||||
settings.endGroup();
|
||||
|
||||
configuration = updateConfiguration(rawConfig);
|
||||
}
|
||||
|
||||
|
||||
QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QString> rawConfig) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Raw configuration" << rawConfig;
|
||||
|
||||
// gpudev
|
||||
if (rawConfig[QString("GPUDEV")] == QString("disable"))
|
||||
rawConfig[QString("GPUDEV")] = QString("disable");
|
||||
else if (rawConfig[QString("GPUDEV")] == QString("auto"))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
else if ((rawConfig[QString("GPUDEV")] != QString("ati")) &&
|
||||
(rawConfig[QString("GPUDEV")] != QString("nvidia")))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
// hdddev
|
||||
QStringList allHddDevices = getAllHdd();
|
||||
if (rawConfig[QString("HDDDEV")] == QString("all"))
|
||||
rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(','));
|
||||
else if (rawConfig[QString("HDDDEV")] == QString("disable"))
|
||||
rawConfig[QString("HDDDEV")] = QString("");
|
||||
else {
|
||||
QStringList deviceList = rawConfig[QString("HDDDEV")].split(QChar(','), QString::SkipEmptyParts);
|
||||
QStringList devices;
|
||||
QRegExp diskRegexp = QRegExp("^/dev/[hms]d[a-z]$");
|
||||
foreach(QString device, deviceList)
|
||||
if ((QFile::exists(device)) && (device.contains(diskRegexp)))
|
||||
devices.append(device);
|
||||
if (devices.isEmpty())
|
||||
rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(','));
|
||||
else
|
||||
rawConfig[QString("HDDDEV")] = devices.join(QChar(','));
|
||||
}
|
||||
// player
|
||||
if ((rawConfig[QString("PLAYER")] != QString("mpd")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("mpris")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("disable")))
|
||||
rawConfig[QString("PLAYER")] = QString("mpris");
|
||||
|
||||
foreach(QString key, rawConfig.keys())
|
||||
qCInfo(LOG_ESM) << key << "=" << rawConfig[key];
|
||||
return rawConfig;
|
||||
}
|
||||
|
||||
|
||||
QVariantHash ExtendedSysMon::getBattery(const QString acpiPath) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
@ -410,7 +265,7 @@ QString ExtendedSysMon::getNetworkDevice() const
|
||||
|
||||
|
||||
QVariantHash ExtendedSysMon::getPlayerInfo(const QString playerName, const QString mpdAddress,
|
||||
const QString mpdPort, QString mpris) const
|
||||
const QString mpdPort, QString mpris) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "player" << playerName;
|
||||
@ -426,14 +281,29 @@ QVariantHash ExtendedSysMon::getPlayerInfo(const QString playerName, const QStri
|
||||
|
||||
if (playerName == QString("mpd"))
|
||||
// mpd
|
||||
return getPlayerMpdInfo(mpdAddress, mpdPort);
|
||||
info = getPlayerMpdInfo(mpdAddress, mpdPort);
|
||||
else if (playerName == QString("mpris")) {
|
||||
// players which supports mpris
|
||||
if (mpris == QString("auto")) mpris = getAutoMpris();
|
||||
if (mpris.isEmpty()) return info;
|
||||
return getPlayerMprisInfo(mpris);
|
||||
info = getPlayerMprisInfo(mpris);
|
||||
}
|
||||
|
||||
// dymanic properties
|
||||
// solid
|
||||
info[QString("salbum")] = stripString(info[QString("album")].toString(), symbols);
|
||||
info[QString("sartist")] = stripString(info[QString("artist")].toString(), symbols);
|
||||
info[QString("stitle")] = stripString(info[QString("title")].toString(), symbols);
|
||||
// dynamic
|
||||
Plasma::DataContainer *playerDC = containerDict()["player"];
|
||||
QVariantHash data = playerDC == nullptr ? info : qvariant_cast<QVariantHash>(playerDC->data());
|
||||
info[QString("dalbum")] = buildString(data[QString("dalbum")].toString(),
|
||||
info[QString("album")].toString(), symbols);
|
||||
info[QString("dartist")] = buildString(data[QString("dartist")].toString(),
|
||||
info[QString("artist")].toString(), symbols);
|
||||
info[QString("dtitle")] = buildString(data[QString("dtitle")].toString(),
|
||||
info[QString("title")].toString(), symbols);
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -558,6 +428,30 @@ QVariantHash ExtendedSysMon::getPsStats() const
|
||||
}
|
||||
|
||||
|
||||
QStringList ExtendedSysMon::sources() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList source;
|
||||
source.append(QString("battery"));
|
||||
source.append(QString("custom"));
|
||||
source.append(QString("desktop"));
|
||||
source.append(QString("netdev"));
|
||||
source.append(QString("gpu"));
|
||||
source.append(QString("gputemp"));
|
||||
source.append(QString("hddtemp"));
|
||||
source.append(QString("pkg"));
|
||||
source.append(QString("player"));
|
||||
source.append(QString("ps"));
|
||||
source.append(QString("quotes"));
|
||||
source.append(QString("update"));
|
||||
source.append(QString("weather"));
|
||||
|
||||
qCInfo(LOG_ESM) << "Sources" << source;
|
||||
return source;
|
||||
}
|
||||
|
||||
|
||||
bool ExtendedSysMon::sourceRequestEvent(const QString &source)
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
@ -630,6 +524,159 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source)
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::buildString(const QString current, const QString value,
|
||||
const int s) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Current value" << current;
|
||||
qCDebug(LOG_ESM) << "New value" << value;
|
||||
qCDebug(LOG_ESM) << "Strip after" << s;
|
||||
|
||||
int index = value.indexOf(current);
|
||||
if ((index == -1) || ((index + s + 1) > value.count()))
|
||||
return QString("%1").arg(value.left(s), s, QLatin1Char(' '));
|
||||
else
|
||||
return QString("%1").arg(value.mid(index + 1, s), s, QLatin1Char(' '));
|
||||
}
|
||||
|
||||
|
||||
QStringList ExtendedSysMon::getAllHdd() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QStringList allDevices = QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
|
||||
QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
|
||||
for (int i=0; i<devices.count(); i++)
|
||||
devices[i] = QString("/dev/%1").arg(devices.at(i));
|
||||
|
||||
qCInfo(LOG_ESM) << "Device list" << devices;
|
||||
return devices;
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::getAutoGpu() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QString gpu = QString("disable");
|
||||
QFile moduleFile(QString("/proc/modules"));
|
||||
if (!moduleFile.open(QIODevice::ReadOnly)) return gpu;
|
||||
|
||||
QString output = moduleFile.readAll();
|
||||
if (output.contains(QString("fglrx")))
|
||||
gpu = QString("ati");
|
||||
else if (output.contains(QString("nvidia")))
|
||||
gpu = QString("nvidia");
|
||||
|
||||
qCInfo(LOG_ESM) << "Device" << gpu;
|
||||
return gpu;
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::getAutoMpris() const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, QString("ListNames"));
|
||||
if (listServices.arguments().isEmpty()) return QString();
|
||||
QStringList arguments = listServices.arguments().first().toStringList();
|
||||
|
||||
foreach(QString arg, arguments) {
|
||||
qCInfo(LOG_ESM) << "Service found" << arg;
|
||||
if (!arg.startsWith(QString("org.mpris.MediaPlayer2."))) continue;
|
||||
QString service = arg;
|
||||
service.remove(QString("org.mpris.MediaPlayer2."));
|
||||
return service;
|
||||
}
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
void ExtendedSysMon::readConfiguration()
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
|
||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation,
|
||||
QString("plasma-dataengine-extsysmon.conf"));
|
||||
qCInfo(LOG_ESM) << "Configuration file" << fileName;
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
QHash<QString, QString> rawConfig;
|
||||
|
||||
settings.beginGroup(QString("Configuration"));
|
||||
rawConfig[QString("ACPIPATH")] = settings.value(QString("ACPIPATH"), QString("/sys/class/power_supply/")).toString();
|
||||
rawConfig[QString("GPUDEV")] = settings.value(QString("GPUDEV"), QString("auto")).toString();
|
||||
rawConfig[QString("HDDDEV")] = settings.value(QString("HDDDEV"), QString("all")).toString();
|
||||
rawConfig[QString("HDDTEMPCMD")] = settings.value(QString("HDDTEMPCMD"), QString("sudo smartctl -a")).toString();
|
||||
rawConfig[QString("MPDADDRESS")] = settings.value(QString("MPDADDRESS"), QString("localhost")).toString();
|
||||
rawConfig[QString("MPDPORT")] = settings.value(QString("MPDPORT"), QString("6600")).toString();
|
||||
rawConfig[QString("MPRIS")] = settings.value(QString("MPRIS"), QString("auto")).toString();
|
||||
rawConfig[QString("PLAYER")] = settings.value(QString("PLAYER"), QString("mpris")).toString();
|
||||
rawConfig[QString("PLAYERSYMBOLS")] = settings.value(QString("PLAYERSYMBOLS"), QString("10")).toString();
|
||||
settings.endGroup();
|
||||
|
||||
configuration = updateConfiguration(rawConfig);
|
||||
symbols = configuration[QString("PLAYERSYMBOLS")].toInt();
|
||||
}
|
||||
|
||||
|
||||
QString ExtendedSysMon::stripString(const QString value, const int s) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "New value" << value;
|
||||
qCDebug(LOG_ESM) << "Strip after" << s;
|
||||
|
||||
return value.count() > s ? QString("%1\u2026").arg(value.left(s - 1)) :
|
||||
QString("%1").arg(value, s, QLatin1Char(' '));
|
||||
}
|
||||
|
||||
|
||||
QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QString> rawConfig) const
|
||||
{
|
||||
qCDebug(LOG_ESM);
|
||||
qCDebug(LOG_ESM) << "Raw configuration" << rawConfig;
|
||||
|
||||
// gpudev
|
||||
if (rawConfig[QString("GPUDEV")] == QString("disable"))
|
||||
rawConfig[QString("GPUDEV")] = QString("disable");
|
||||
else if (rawConfig[QString("GPUDEV")] == QString("auto"))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
else if ((rawConfig[QString("GPUDEV")] != QString("ati")) &&
|
||||
(rawConfig[QString("GPUDEV")] != QString("nvidia")))
|
||||
rawConfig[QString("GPUDEV")] = getAutoGpu();
|
||||
// hdddev
|
||||
QStringList allHddDevices = getAllHdd();
|
||||
if (rawConfig[QString("HDDDEV")] == QString("all"))
|
||||
rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(','));
|
||||
else if (rawConfig[QString("HDDDEV")] == QString("disable"))
|
||||
rawConfig[QString("HDDDEV")] = QString("");
|
||||
else {
|
||||
QStringList deviceList = rawConfig[QString("HDDDEV")].split(QChar(','), QString::SkipEmptyParts);
|
||||
QStringList devices;
|
||||
QRegExp diskRegexp = QRegExp("^/dev/[hms]d[a-z]$");
|
||||
foreach(QString device, deviceList)
|
||||
if ((QFile::exists(device)) && (device.contains(diskRegexp)))
|
||||
devices.append(device);
|
||||
if (devices.isEmpty())
|
||||
rawConfig[QString("HDDDEV")] = allHddDevices.join(QChar(','));
|
||||
else
|
||||
rawConfig[QString("HDDDEV")] = devices.join(QChar(','));
|
||||
}
|
||||
// player
|
||||
if ((rawConfig[QString("PLAYER")] != QString("mpd")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("mpris")) &&
|
||||
(rawConfig[QString("PLAYER")] != QString("disable")))
|
||||
rawConfig[QString("PLAYER")] = QString("mpris");
|
||||
// player symbols
|
||||
if (rawConfig[QString("PLAYERSYMBOLS")].toInt() <= 0)
|
||||
rawConfig[QString("PLAYERSYMBOLS")] = QString("10");
|
||||
|
||||
foreach(QString key, rawConfig.keys())
|
||||
qCInfo(LOG_ESM) << key << "=" << rawConfig[key];
|
||||
return rawConfig;
|
||||
}
|
||||
|
||||
|
||||
K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(extsysmon, ExtendedSysMon, "plasma-dataengine-extsysmon.json")
|
||||
|
||||
#include "extsysmon.moc"
|
||||
|
Reference in New Issue
Block a user