Hi, thanks for the good stuff.

Tried to build it here against relatively old Qt version, failed at
first attempt and had to do some tweaks (see attachment).

OS: gentoo
gcc 5.4.0
Qt 5.7.1
KF 5.37.0

2017-11-03 23:30 GMT+03:00 Martin Koller <kol...@aon.at>:
> Hi all,
>
> I'd like to announce an application I've implemented over the last few weeks 
> - liquidshell
>
> liquidshell is a replacement for plasmashell
>
> It does not use QtQuick but instead relies on QtWidgets,
> therefore no hardware graphics acceleration is needed.
>
> Main Features:
> - Wallpaper per virtual desktop
> - No animations, no CPU hogging, low Memory footprint
> - Instant startup
> - No use of activities (I never used nor needed them)
> - QtWidgets based, therefore follows widget style from systemsettings
> - Icons are used from your globally defined icon theme from systemsettings
> - Colors are used from your globally defined color theme from systemsettings
> - Can additionally be styled with css by passing the commandline option 
> -stylesheet filename.css
>   (see included example stylesheet.css)
> - uses existing KDE dialogs for most configurations, e.g. StartMenu, Virtual 
> Desktops, Bluetooth, Network
> - Just one bottom DesktopPanel, containing:
>   StartMenu (allowing drag of entries into konqueror/dolphin to configure 
> QuickLaunch or AppMenu entries)
>   QuickLaunch (showing icons for .desktop files from a configurable folder)
>   AppMenu (showing .desktop files in a menu from a configurable folder, 
> defaults to users desktop folder)
>   Pager (for switching virtual desktops)
>   WindowList (Popup showing all open windows on all desktops)
>   TaskBar (showing windows on the current desktop, allowing drag of an entry 
> onto the Pager to move to a different desktop)
>   LockLogout
>   SysLoad widget including CPU, Memory, Swap and Network bars, live updated 
> tooltip
>   SysTray with integrated Network-, Notifications-, Device Notifier-, 
> Bluetooth-, Battery- display.
>       Display of StatusNotifier items from other applications (no legacy 
> embedded icons yet).
>       Notifications kept in a history list for some minutes, including 
> timestamp and text selectable per mouse
>       (very handy for copy/paste of TAC numbers from online banking received 
> via SMS and transferred to KDE
>        via kdeconnect)
>   Clock widget (with calendar popup, tooltip for selected cities)
> - Desktop can contain applets (there's currently only a weather applet)
>
> The main motivation was to have a reliable desktop shell which does not hog 
> the CPU or RAM.
> (CPU usage and stability were the things driving me mad with plasmashell)
> It should be slick and have just the features I need in my daily
> work. No need having all the bells and whistles anyone can think of.
> Just have a plain, solid, fast workhorse.
>
> I think the final place should be extragear.
>
> Today I put it into openSuse's OBS and 2 packages for tumbleweed and factory 
> are already in place
> and ready to be installed.
>
> Screenshots:
> light color theme: 
> http://members.aon.at/m.koller/liquidshell_20171103_174650.png
> dark  color theme: 
> http://members.aon.at/m.koller/liquidshell_20171103_174944.png
>
> --
> Best regards/Schöne Grüße
>
> Martin
> A: Because it breaks the logical sequence of discussion
> Q: Why is top posting bad?
>
> ()  ascii ribbon campaign - against html e-mail
> /\                        - against proprietary attachments
>
> Geschenkideen, Accessoires, Seifen, Kulinarisches: www.lillehus.at
>
>



-- 
Alexander Potashev
diff --git a/Battery.cxx b/Battery.cxx
index cc9b6fc..01dda67 100644
--- a/Battery.cxx
+++ b/Battery.cxx
@@ -22,7 +22,7 @@
 #include <QIcon>
 #include <QDebug>
 
-#include <Solid/Power>
+//#include <Solid/Power>
 #include <Solid/Battery>
 
 #include <KLocalizedString>
@@ -49,7 +49,7 @@ Battery::Battery(QWidget *parent)
     hide();
   else
   {
-    connect(Solid::Power::self(), &Solid::Power::acPluggedChanged, this, 
&Battery::changed);
+///    connect(Solid::Power::self(), &Solid::Power::acPluggedChanged, this, 
&Battery::changed);
     connect(device.as<Solid::Battery>(), 
&Solid::Battery::chargePercentChanged, this, &Battery::changed);
     connect(device.as<Solid::Battery>(), &Solid::Battery::chargeStateChanged, 
this, &Battery::changed);
     connect(device.as<Solid::Battery>(), &Solid::Battery::timeToFullChanged, 
this, &Battery::changed);
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7077710..1cabcfa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ find_package(Qt5 5.7 CONFIG REQUIRED COMPONENTS
 
 find_package(KF5 REQUIRED COMPONENTS
              WindowSystem WidgetsAddons ConfigWidgets Config KIO IconThemes 
ItemViews Archive
-             Notifications I18n NetworkManagerQt Service Solid BluezQt 
KCMUtils Crash DBusAddons
+             Notifications I18n NetworkManagerQt Service Solid BluezQt 
KCMUtils Crash DBusAddons KDELibs4Support
 )
 
 set(SOURCES
@@ -95,6 +95,7 @@ target_link_libraries(${TARGET}
                       KF5::DBusAddons
                       KF5::ItemViews
                       KF5::Archive
+                      KF5::KDELibs4Support
 )
 
 install(TARGETS ${TARGET} ${INSTALL_TARGETS_DEFAULT_ARGS})
diff --git a/ClockWidget.cxx b/ClockWidget.cxx
index 5d6647e..796fdf3 100644
--- a/ClockWidget.cxx
+++ b/ClockWidget.cxx
@@ -41,7 +41,7 @@
 CalendarPopup::CalendarPopup(QWidget *parent)
   : QFrame(parent)
 {
-  setWindowFlag(Qt::Popup);
+  setWindowFlags(Qt::Popup);
   setFrameShape(QFrame::StyledPanel);
 
   QVBoxLayout *vbox = new QVBoxLayout(this);
diff --git a/DeviceList.cxx b/DeviceList.cxx
index bb79301..ffcac30 100644
--- a/DeviceList.cxx
+++ b/DeviceList.cxx
@@ -257,7 +257,7 @@ void DeviceItem::setupDone(Solid::ErrorType error, QVariant 
errorData, const QSt
 DeviceList::DeviceList(QWidget *parent)
   : QFrame(parent)
 {
-  setWindowFlag(Qt::Tool);
+  setWindowFlags(Qt::Tool);
   setFrameShape(QFrame::StyledPanel);
   setAttribute(Qt::WA_AlwaysShowToolTips);
 
diff --git a/NetworkList.cxx b/NetworkList.cxx
index 1c11505..656e457 100644
--- a/NetworkList.cxx
+++ b/NetworkList.cxx
@@ -110,7 +110,7 @@ void NetworkButton::toggleNetworkStatus(bool on)
 NetworkList::NetworkList(QWidget *parent)
   : QFrame(parent)
 {
-  setWindowFlag(Qt::Popup);
+  setWindowFlags(Qt::Popup);
   setFrameShape(QFrame::StyledPanel);
 
   QVBoxLayout *vbox = new QVBoxLayout(this);
diff --git a/NetworkList.hxx b/NetworkList.hxx
index 0269931..8a2d73c 100644
--- a/NetworkList.hxx
+++ b/NetworkList.hxx
@@ -52,7 +52,7 @@ class NetworkButton : public QToolButton
   Q_OBJECT
 
   public:
-    NetworkButton(NetworkManager::Connection::Ptr c = nullptr, 
NetworkManager::Device::Ptr dev = nullptr);
+    NetworkButton(NetworkManager::Connection::Ptr c = 
NetworkManager::Connection::Ptr(nullptr), NetworkManager::Device::Ptr dev = 
NetworkManager::Device::Ptr(nullptr));
 
   private slots:
     void toggleNetworkStatus(bool on);
diff --git a/NotificationList.cxx b/NotificationList.cxx
index ab0472d..b5785df 100644
--- a/NotificationList.cxx
+++ b/NotificationList.cxx
@@ -86,7 +86,7 @@ NotifyItem::NotifyItem(QWidget *parent, uint theId, const 
QString &app,
 NotificationList::NotificationList(QWidget *parent)
   : QScrollArea(parent)
 {
-  setWindowFlag(Qt::Tool);
+  setWindowFlags(Qt::Tool);
   setWindowTitle(i18n("Notifications"));
   setWidgetResizable(true);
 
diff --git a/WeatherApplet.cxx b/WeatherApplet.cxx
index ed5399e..8ff49ff 100644
--- a/WeatherApplet.cxx
+++ b/WeatherApplet.cxx
@@ -213,7 +213,7 @@ void WeatherApplet::gotData(KJob *job)
 
   if ( data.contains("weather") && data["weather"].isArray() )
   {
-    QDateTime dt = QDateTime::fromSecsSinceEpoch(data["dt"].toInt());
+    QDateTime dt;
     
shortForecast[0]->day->setText(dt.time().toString(Qt::SystemLocaleShortDate));
     setIcon(shortForecast[0]->icon, 
data["weather"].toArray()[0].toObject()["icon"].toString());
   }
@@ -230,7 +230,7 @@ void WeatherApplet::gotData(KJob *job)
     for (int i = 0; i < 3; i++)
     {
       setIcon(shortForecast[1 + i]->icon, 
array[i].toObject()["weather"].toArray()[0].toObject()["icon"].toString());
-      QDateTime dt = 
QDateTime::fromSecsSinceEpoch(array[i].toObject()["dt"].toInt());
+      QDateTime dt;
       shortForecast[1 + 
i]->day->setText(dt.time().toString(Qt::SystemLocaleShortDate));
       shortForecast[1 + i]->show();
     }
@@ -241,7 +241,7 @@ void WeatherApplet::gotData(KJob *job)
     {
       QJsonObject obj = value.toObject();
 
-      int day = 
QDateTime::fromSecsSinceEpoch(obj["dt"].toInt()).date().dayOfWeek();
+      int day = 0;
       double temp = obj["main"].toObject()["temp"].toDouble();
 
       if ( !minTemp.contains(day) )
@@ -266,7 +266,7 @@ void WeatherApplet::gotData(KJob *job)
         QString icon = 
obj["weather"].toArray()[0].toObject()["icon"].toString();
         setIcon(forecast[idx]->icon, icon);
 
-        int day = 
QDateTime::fromSecsSinceEpoch(obj["dt"].toInt()).date().dayOfWeek();
+        int day = 0;
         forecast[idx]->day->setText(QDate::shortDayName(day));
         forecast[idx]->min->setText(i18n("%1 %2").arg(minTemp[day], 0, 'f', 
1).arg(tempUnit));
         forecast[idx]->max->setText(i18n("%1 %2").arg(maxTemp[day], 0, 'f', 
1).arg(tempUnit));

Reply via email to