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));