Compare commits

...

11 Commits

Author SHA1 Message Date
arcanis 7e13e1eef7 Release 4.0.5 2026-01-28 19:53:21 +02:00
arcanis da53052a6f fix: always unsubscribe on sources 2026-01-28 19:51:51 +02:00
arcanis 1a0a1fb884 Release 4.0.4 2026-01-28 14:18:16 +02:00
arcanis 7a4367734b fix: check if subscription optimisation is enabled explicitly
Previous implementation has used implicit logic with empty keys arrays,
which might lead to some errors in processing
2026-01-28 14:16:55 +02:00
arcanis cdcd929cec Release 4.0.3 2026-01-01 19:54:34 +02:00
arcanis 8605f66535 fix: compilation error with the latest releases (#173)
As it has been found in the releated issue, compile error occurs because
of missing evaluation and appears to be caused by Qt6QmlTargets.cmake.
Instead of trying to hack generated files, lets just drop qml
definitions because we don't really use them explicitly
2026-01-01 19:49:26 +02:00
arcanis 3abcd8d6ae Release 4.0.2 2025-07-25 09:34:56 +03:00
daveedmee 0725288595 feat: added German translation (#172)
* Added German translation

About 96% of the plasmaoid into German. Missing strings for:

- AC online tag (as well as AC online)
- AC offline tag (as well as AC offline) (I think they are used for when you have a charging cable plugged into your laptop? I am on a desktop so I can't check)
- Quotes Monitor (as well as quotes – are they used for stocks?)
- User keys
- Has return

Also worth noting is that your redirection to stooq.com doesn't make sense for a German as it is a Polish stocks site

* Fixed some spelling issues

* fixed spelling of openSUSE

* Update de.po

Confused minimal with minimalistic. Changed translation accordingly

* added missing translation strings

Missing translations added for
- AC
- AC online (+tag)
- AC offline (+tag)
- Quotes (+Monitor)
- User keys
- has return
- Player data symbols
2025-07-23 20:22:00 +03:00
Winter 8342d65ffa docs: update README.md (#169) 2025-03-14 14:41:06 +02:00
arcanis 571417f786 Release 4.0.1 2024-12-11 17:12:24 +02:00
arcanis e3d24d1890 fix: disable tooltip painting for now, because it causes error during
png rendering in qt
2024-12-11 17:09:10 +02:00
20 changed files with 1287 additions and 28 deletions
+3
View File
@@ -48,3 +48,6 @@ pkg
# clion settings # clion settings
.idea .idea
cmake-build* cmake-build*
# clang
.cache
+1
View File
@@ -13,3 +13,4 @@ Steve Lemuel (Chinese)
Mariusz Kocoń (Polish) Mariusz Kocoń (Polish)
Ibnu Daru Aji (Indonesian) Ibnu Daru Aji (Indonesian)
Antonio Vivace (Italian) Antonio Vivace (Italian)
@daveedmee (German)
+9
View File
@@ -1,3 +1,12 @@
Ver.4.0.3:
- drop qml definition to avoid compile errors
Ver.4.0.2:
+ German translation (#172, thanks to daveedmee)
Ver.4.0.1:
- temporary disable tooltip painting in main widget
Ver.4.0.0: Ver.4.0.0:
* migration to plasma 6 * migration to plasma 6
* dialog windows have been replaced by notifications * dialog windows have been replaced by notifications
+1 -1
View File
@@ -75,5 +75,5 @@ Links
* [Scripts and bars](https://arcanis.me/en/2014/12/19/aw-v21-bells-and-whistles/) * [Scripts and bars](https://arcanis.me/en/2014/12/19/aw-v21-bells-and-whistles/)
* Plasmoid on [kde-look](http://kde-look.org/content/show.php/Awesome+Widgets?content=157124) * Plasmoid on [kde-look](http://kde-look.org/content/show.php/Awesome+Widgets?content=157124)
* DataEngine on [kde-look](http://kde-look.org/content/show.php/Extended+Systemmonitor+DataEngine?content=158773) * DataEngine on [kde-look](http://kde-look.org/content/show.php/Extended+Systemmonitor+DataEngine?content=158773)
* Archlinux [AUR](https://aur.archlinux.org/packages/plasma5-applet-awesome-widgets/) package * Archlinux [AUR](https://aur.archlinux.org/packages/plasma6-applets-awesome-widgets) package
* [OpenSuse](http://software.opensuse.org/search?q=awesome-widgets) packages, [KF5 OpenSuse](http://software.opensuse.org/package/plasma5-awesome-widgets) package * [OpenSuse](http://software.opensuse.org/search?q=awesome-widgets) packages, [KF5 OpenSuse](http://software.opensuse.org/package/plasma5-awesome-widgets) package
+1 -3
View File
@@ -2,7 +2,7 @@
pkgname=plasma6-applet-awesome-widgets pkgname=plasma6-applet-awesome-widgets
_pkgname=awesome-widgets _pkgname=awesome-widgets
pkgver=4.0.0alpha2 pkgver=4.0.5
pkgrel=1 pkgrel=1
pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)" pkgdesc="Collection of minimalistic Plasmoids which look like Awesome WM widgets (ex-PyTextMonitor)"
arch=('x86_64') arch=('x86_64')
@@ -27,5 +27,3 @@ build () {
package() { package() {
DESTDIR="$pkgdir" cmake --install build DESTDIR="$pkgdir" cmake --install build
} }
sha256sums=('b2a7b07a1df6f710f4e0d6e5898933f4ddb131818b922dc4b8e48afe3e98a664')
+1 -1
View File
@@ -19,7 +19,7 @@ set(PROJECT_CONTACT "esalexeev@gmail.com")
set(PROJECT_LICENSE "GPL3") set(PROJECT_LICENSE "GPL3")
set(PROJECT_VERSION_MAJOR "4") set(PROJECT_VERSION_MAJOR "4")
set(PROJECT_VERSION_MINOR "0") set(PROJECT_VERSION_MINOR "0")
set(PROJECT_VERSION_PATCH "0") set(PROJECT_VERSION_PATCH "5")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}") set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
# append git version if any # append git version if any
set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "") set(PROJECT_COMMIT_SHA "Commit hash" CACHE INTERNAL "")
@@ -130,7 +130,7 @@ PlasmoidItem {
Plasmoid.userConfiguringChanged(false) Plasmoid.userConfiguringChanged(false)
// connect data // connect data
awKeys.needTextToBeUpdated.connect(needTextUpdate) awKeys.needTextToBeUpdated.connect(needTextUpdate)
awKeys.needToolTipToBeUpdated.connect(needToolTipUpdate) //awKeys.needToolTipToBeUpdated.connect(needToolTipUpdate)
// check updates if required // check updates if required
if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false) if (plasmoid.configuration.checkUpdates) return awActions.checkUpdates(false)
} }
+1 -1
View File
@@ -19,7 +19,7 @@
"Id": "org.kde.plasma.awesomewidget", "Id": "org.kde.plasma.awesomewidget",
"License": "GPLv3", "License": "GPLv3",
"Name": "Awesome Widget", "Name": "Awesome Widget",
"Version": "4.0.0", "Version": "4.0.5",
"Website": "https://arcanis.me/projects/awesome-widgets/" "Website": "https://arcanis.me/projects/awesome-widgets/"
}, },
"X-Plasma-API-Minimum-Version": "6.0" "X-Plasma-API-Minimum-Version": "6.0"
@@ -17,7 +17,6 @@
#pragma once #pragma once
#include <QObject>
#include <QVariant> #include <QVariant>
@@ -99,10 +99,9 @@ void AWDataEngineAggregator::dropSource(const QString &_source)
{ {
qCDebug(LOG_AW) << "Disconnect sensor" << _source; qCDebug(LOG_AW) << "Disconnect sensor" << _source;
if (m_subscribed.contains(_source)) { m_interface->unsubscribe({_source}).waitForFinished();
m_interface->unsubscribe({_source}).waitForFinished(); m_interface->unsubscribe({_source}).waitForFinished();
m_subscribed.remove(_source); m_subscribed.remove(_source);
}
} }
@@ -65,7 +65,7 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const
// HACK units required to define should the value be calculated as temperature // HACK units required to define should the value be calculated as temperature
// or fan data // or fan data
QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units,
const QStringList &_keys) const QStringList &_keys, const bool _disconnectUnused)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
@@ -91,7 +91,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
// check if keys were actually requested // check if keys were actually requested
qCInfo(LOG_AW) << "Looking for keys" << keys << "in" << _keys; qCInfo(LOG_AW) << "Looking for keys" << keys << "in" << _keys;
auto required = _keys.isEmpty() auto required = !_disconnectUnused
|| std::any_of(keys.cbegin(), keys.cend(), [&_keys](auto &key) { return _keys.contains(key); }); || std::any_of(keys.cbegin(), keys.cend(), [&_keys](auto &key) { return _keys.contains(key); });
if (!required) if (!required)
return {}; return {};
@@ -39,7 +39,8 @@ public:
[[nodiscard]] AWPluginFormaterInterface *formatter(const QString &_key) const; [[nodiscard]] AWPluginFormaterInterface *formatter(const QString &_key) const;
[[nodiscard]] QStringList keysFromSource(const QString &_source) const; [[nodiscard]] QStringList keysFromSource(const QString &_source) const;
// set methods // set methods
QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys,
const bool _disconnectUnused);
void setDevices(const AWPluginMatcherSettings &_settings); void setDevices(const AWPluginMatcherSettings &_settings);
private: private:
+3 -4
View File
@@ -206,9 +206,8 @@ void AWKeys::reinitKeys(const QStringList &_currentKeys)
barKeys.append(item->usedKeys()); barKeys.append(item->usedKeys());
} }
// get required keys // get required keys
m_requiredKeys = m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams, m_requiredKeys = AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams,
m_keyOperator->requiredUserKeys(), _currentKeys) m_keyOperator->requiredUserKeys(), _currentKeys);
: QStringList();
// set key data to m_aggregator // set key data to m_aggregator
m_aggregator->setDevices(m_keyOperator->devices()); m_aggregator->setDevices(m_keyOperator->devices());
@@ -317,7 +316,7 @@ void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo
// first list init // first list init
auto tags = m_aggregator->keysFromSource(_source); auto tags = m_aggregator->keysFromSource(_source);
if (tags.isEmpty()) if (tags.isEmpty())
tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys); tags = m_aggregator->registerSource(_source, _sensor.unit, m_requiredKeys, m_optimize);
// update data or drop source if there are no matches and exit // update data or drop source if there are no matches and exit
if (tags.isEmpty()) { if (tags.isEmpty()) {
@@ -151,9 +151,9 @@ void AWKeysAggregator::setTranslate(const bool _translate)
QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units, QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit _units,
const QStringList &_keys) const QStringList &_keys, const bool _disconnectUnused)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
return m_mapper->registerSource(_source, _units, _keys); return m_mapper->registerSource(_source, _units, _keys, _disconnectUnused);
} }
@@ -61,7 +61,8 @@ public:
void setTranslate(bool _translate); void setTranslate(bool _translate);
public slots: public slots:
QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys); QStringList registerSource(const QString &_source, KSysGuard::Unit _units, const QStringList &_keys,
const bool _disconnectUnused);
private: private:
AWPluginFormatSettings m_settings; AWPluginFormatSettings m_settings;
+2 -2
View File
@@ -436,7 +436,7 @@ int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args)
auto ui = new Ui::GraphicalItem(); auto ui = new Ui::GraphicalItem();
ui->setupUi(dialog); ui->setupUi(dialog);
connect(ui->checkBox_custom, &QCheckBox::stateChanged, [ui](const int state) { changeValue(ui, state); }); connect(ui->checkBox_custom, &QCheckBox::checkStateChanged, [ui](const int state) { changeValue(ui, state); });
connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [ui](const int state) { changeCountState(ui, state); }); connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [ui](const int state) { changeCountState(ui, state); });
connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
@@ -472,7 +472,7 @@ int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args)
// update UI // update UI
emit(ui->comboBox_type->currentIndexChanged(ui->comboBox_type->currentIndex())); emit(ui->comboBox_type->currentIndexChanged(ui->comboBox_type->currentIndex()));
emit(ui->checkBox_custom->stateChanged(ui->checkBox_custom->checkState())); emit(ui->checkBox_custom->checkStateChanged(ui->checkBox_custom->checkState()));
int ret = dialog->exec(); int ret = dialog->exec();
if (ret == 1) { if (ret == 1) {
+1 -1
View File
@@ -19,7 +19,7 @@
"Id": "org.kde.plasma.desktoppanel", "Id": "org.kde.plasma.desktoppanel",
"License": "GPLv3", "License": "GPLv3",
"Name": "Desktop Panel", "Name": "Desktop Panel",
"Version": "4.0.0", "Version": "4.0.5",
"Website": "https://arcanis.me/projects/awesome-widgets/" "Website": "https://arcanis.me/projects/awesome-widgets/"
}, },
"X-Plasma-API-Minimum-Version": "6.0" "X-Plasma-API-Minimum-Version": "6.0"
@@ -128,8 +128,8 @@ QVariant SystemInfoSource::sendDBusRequest(const QString &_destination, const QS
auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);
if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { if (response.type() != QDBusMessage::ReplyMessage || response.arguments().isEmpty()) {
qCWarning(LOG_ESS) << "Error message" << response.errorMessage(); qCWarning(LOG_ESS) << "Error" << response.errorName() << "with message" << response.errorMessage();
return {}; return {};
} else { } else {
return response.arguments().first(); return response.arguments().first();
+1 -1
View File
@@ -5,7 +5,7 @@ find_package(Gettext REQUIRED)
find_package(Qt6 6.6.0 REQUIRED COMPONENTS Core Concurrent DBus Network Qml Test Widgets) find_package(Qt6 6.6.0 REQUIRED COMPONENTS Core Concurrent DBus Network Qml Test Widgets)
add_definitions( add_definitions(
${Qt6Core_DEFINITIONS} ${Qt6DBus_DEFINITIONS} ${Qt6Network_DEFINITIONS} ${Qt6Core_DEFINITIONS} ${Qt6DBus_DEFINITIONS} ${Qt6Network_DEFINITIONS}
${Qt6Qml_DEFINITIONS} ${Qt6Widgets_DEFINITIONS} ${Qt6Widgets_DEFINITIONS}
) )
set(Qt_INCLUDE set(Qt_INCLUDE
${Qt6Core_INCLUDE_DIRS} ${Qt6Concurrent_INCLUDE_DIRS} ${Qt6DBus_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Core_INCLUDE_DIRS} ${Qt6Concurrent_INCLUDE_DIRS} ${Qt6DBus_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS}
File diff suppressed because it is too large Load Diff