From eeee6c1ad7289a31fd17deb8f94b7c5dd2e1b4ca Mon Sep 17 00:00:00 2001 From: reionwong Date: Wed, 18 Aug 2021 15:19:12 +0800 Subject: [PATCH] KWin configuration --- session/application.cpp | 27 +++++++++++++++++++++++++ session/application.h | 1 + settings-daemon/application.cpp | 35 +++++++++++++++++++++++++++++++++ settings-daemon/application.h | 5 +++++ 4 files changed, 68 insertions(+) diff --git a/session/application.cpp b/session/application.cpp index 2dc93d0..2821fb4 100644 --- a/session/application.cpp +++ b/session/application.cpp @@ -91,6 +91,7 @@ Application::Application(int &argc, char **argv) QDBusConnection::sessionBus().registerObject(QStringLiteral("/Session"), this); createConfigDirectory(); + initKWinConfig(); initLanguage(); initScreenScaleFactors(); initXResource(); @@ -224,6 +225,32 @@ void Application::initXResource() // qputenv("XCURSOR_SIZE", QByteArray::number(cursorSize * scaleFactor)); } +void Application::initKWinConfig() +{ + QSettings settings(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/kwinrc", + QSettings::IniFormat); + + settings.beginGroup("Effect-Blur"); + settings.setValue("BlurStrength", 7); + settings.setValue("NoiseStrength", 1); + settings.endGroup(); + + settings.beginGroup("Windows"); + settings.setValue("FocusStealingPreventionLevel", 0); + settings.setValue("HideUtilityWindowsForInactive", false); + settings.setValue("BorderlessMaximizedWindows", false); + settings.setValue("Placement", "Centered"); + settings.endGroup(); + + settings.beginGroup("org.kde.kdecoration2"); + settings.setValue("BorderSize", "Normal"); + settings.setValue("ButtonsOnLeft", ""); + settings.setValue("ButtonsOnRight", "HIAX"); + settings.setValue("library", "org.cutefish.decoration"); + settings.setValue("theme", ""); + settings.endGroup(); +} + bool Application::syncDBusEnvironment() { int exitCode = 0; diff --git a/session/application.h b/session/application.h index e65b667..f1a1e72 100644 --- a/session/application.h +++ b/session/application.h @@ -66,6 +66,7 @@ private: void initLanguage(); void initScreenScaleFactors(); void initXResource(); + void initKWinConfig(); bool syncDBusEnvironment(); void importSystemdEnvrionment(); void createConfigDirectory(); diff --git a/settings-daemon/application.cpp b/settings-daemon/application.cpp index 0faec99..5ddbbdb 100644 --- a/settings-daemon/application.cpp +++ b/settings-daemon/application.cpp @@ -37,11 +37,18 @@ Application::Application(int &argc, char **argv) , m_upowerManager(new UPowerManager(this)) , m_language(new Language(this)) , m_mouse(new Mouse) + , m_kwinTimer(new QTimer(this)) { new DBusAdaptor(this); // connect to D-Bus and register as an object: QDBusConnection::sessionBus().registerService(QStringLiteral("org.cutefish.Settings")); + m_kwinTimer->setSingleShot(false); + m_kwinTimer->setInterval(50); + connect(m_kwinTimer, &QTimer::timeout, this, &Application::initKWin); + m_kwinTimer->start(); + initKWin(); + // Translations QLocale locale; QString qmFilePath = QString("%1/%2.qm").arg("/usr/share/cutefish-settings-daemon/translations/").arg(locale.name()); @@ -54,6 +61,8 @@ Application::Application(int &argc, char **argv) } } + initKWin(); + QTimer::singleShot(10, this, &Application::invokeDesktopProcess); } @@ -62,7 +71,33 @@ void Application::invokeDesktopProcess() // Start desktop UI component. QDBusInterface sessionInterface("org.cutefish.Session", "/Session", "org.cutefish.Session", QDBusConnection::sessionBus()); + if (sessionInterface.isValid()) { sessionInterface.call("startDesktopProcess"); } } + +void Application::initKWin() +{ + QDBusInterface effect("org.kde.KWin", "/Effects", "org.kde.kwin.Effects", + QDBusConnection::sessionBus()); + + if (effect.isValid() && !effect.lastError().isValid()) { + // KWin + effect.call("loadEffect", "kwin4_effect_dialogparent"); + + effect.call("unloadEffect", "kwin4_effect_fadingpopups"); + effect.call("unloadEffect", "kwin4_effect_fade"); + effect.call("unloadEffect", "kwin4_effect_scale"); + effect.call("unloadEffect", "kwin4_effect_grayscale"); + effect.call("unloadEffect", "kwin4_effect_squash"); + effect.call("unloadEffect", "kwin4_effect_translucency"); + effect.call("unloadEffect", "magiclamp"); + + effect.call("loadEffect", "cutefish_popups"); + effect.call("loadEffect", "cutefish_scale"); + effect.call("loadEffect", "cutefish_squash"); + + m_kwinTimer->stop(); + } +} diff --git a/settings-daemon/application.h b/settings-daemon/application.h index 0776127..81804ac 100644 --- a/settings-daemon/application.h +++ b/settings-daemon/application.h @@ -28,6 +28,8 @@ #include "language/language.h" #include "mouse/mousemanager.h" +#include + class Application : public QApplication { Q_OBJECT @@ -38,6 +40,7 @@ public: AudioManager *audioManager() { return m_audioManager; } void invokeDesktopProcess(); + void initKWin(); private: AudioManager *m_audioManager; @@ -46,6 +49,8 @@ private: UPowerManager *m_upowerManager; Language *m_language; Mouse *m_mouse; + + QTimer *m_kwinTimer; }; #endif // APPLICATION_H