diff --git a/sources/ext-sysmon/extsysmon.conf b/sources/ext-sysmon/extsysmon.conf index 89cf825..f3de900 100644 --- a/sources/ext-sysmon/extsysmon.conf +++ b/sources/ext-sysmon/extsysmon.conf @@ -4,6 +4,9 @@ # Custom command, separator is '@@' #CUSTOM=wget -qO- http://ifconfig.me/ip +# Command which returns number of the current desktop +#DESKTOPCMD=qdbus org.kde.kwin /KWin currentDesktop + # Set GPU device # May be 'nvidia' (for nvidia), 'ati' (for ATI RADEON), 'disable' or 'auto' #GPUDEV=auto diff --git a/sources/ext-sysmon/extsysmon.cpp b/sources/ext-sysmon/extsysmon.cpp index 612f3b4..f6cd8bd 100644 --- a/sources/ext-sysmon/extsysmon.cpp +++ b/sources/ext-sysmon/extsysmon.cpp @@ -89,11 +89,47 @@ QString ExtendedSysMon::getAutoGpu() } +QStringList ExtendedSysMon::getDesktopNames() +{ + if (debug) qDebug() << "[DE]" << "[getDesktopNames]"; + QStringList list; + QString fileName = KGlobal::dirs()->findResource("config", "kwinrc"); + if (debug) qDebug() << "[DE]" << "[getDesktopNames]" << ":" << "Configuration file" << fileName; + QFile confFile(fileName); + if (!confFile.open(QIODevice::ReadOnly)) return list; + + QString fileStr; + QStringList value; + bool desktopSection = false; + while (true) { + fileStr = QString(confFile.readLine()).trimmed(); + if (fileStr[0] == QChar('#')) continue; + if (fileStr[0] == QChar(';')) continue; + if (fileStr[0] == QChar('[')) desktopSection = false; + if (fileStr == QString("[Desktops]")) desktopSection = true; + if (desktopSection) { + if (fileStr.contains(QChar('='))) { + value.clear(); + for (int i=1; i ExtendedSysMon::updateConfiguration(const QMapstate() != QProcess::Running) && + (processes[QString("desktop")][0]->state() != QProcess::Starting)) + processes[QString("desktop")][0]->start(QString("bash -c \"") + cmd + QString("\"")); +} + + +void ExtendedSysMon::setCurrentDesktop(int exitCode, QProcess::ExitStatus exitStatus) +{ + Q_UNUSED(exitStatus) + + if (debug) qDebug() << "[DE]" << "[setCurrentDesktop]"; + if (debug) qDebug() << "[DE]" << "[setCurrentDesktop]" << ":" << "Cmd returns" << exitCode; + QString qoutput = QTextCodec::codecForMib(106)->toUnicode(processes[QString("desktop")][0]->readAllStandardOutput()).trimmed(); + int number = qoutput.toInt(); + QString key, source, value; + source = QString("desktop"); + + key = QString("list"); + setData(source, key, configuration[QString("DESKTOP")]); + key = QString("number"); + setData(source, key, configuration[QString("DESKTOP")].split(QString(";;")).count()); + key = QString("currentName"); + setData(source, key, configuration[QString("DESKTOP")].split(QString(";;"))[number-1]); + key = QString("currentNumber"); + setData(source, key, number); +} + + void ExtendedSysMon::getCustomCmd(const QString cmd, const int number) { if (debug) qDebug() << "[DE]" << "[getCustomCmd]"; @@ -746,6 +833,9 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source) for (int i=0; i