liquidshell in kdereview

Alexander Potashev aspotashev at gmail.com
Sat Nov 4 01:35:27 GMT 2017


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 <kollix at 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
-------------- next part --------------
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));


More information about the kde-core-devel mailing list