Hello community,

here is the log from the commit of package kde-gtk-config5 for openSUSE:Factory 
checked in at 2020-06-08 23:52:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kde-gtk-config5 (Old)
 and      /work/SRC/openSUSE:Factory/.kde-gtk-config5.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kde-gtk-config5"

Mon Jun  8 23:52:42 2020 rev:94 rq:812306 version:5.19.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kde-gtk-config5/kde-gtk-config5.changes  
2020-05-07 15:08:50.240161713 +0200
+++ 
/work/SRC/openSUSE:Factory/.kde-gtk-config5.new.3606/kde-gtk-config5.changes    
    2020-06-08 23:53:38.571143271 +0200
@@ -1,0 +2,27 @@
+Thu Jun  4 13:27:11 UTC 2020 - Fabian Vogt <[email protected]>
+
+- Update to 5.19.0
+  * New bugfix release
+  * For more details please see:
+  * https://www.kde.org/announcements/plasma-5.19.0.php
+- Changes since 5.18.90:
+  * Remove kiconthemes dependency
+
+-------------------------------------------------------------------
+Thu May 14 14:33:02 UTC 2020 - Fabian Vogt <[email protected]>
+
+- Update to 5.18.90
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/plasma-5.18.90.php
+- Changes since 5.18.5:
+  * [GTK Config] Apply color scheme to GTK3 applications
+  * [GTK Config] Parameterise GTK config editing
+  * Improve CMake handling of GNOME libraries
+  * [GTK Config] Port all settings to KConfigWatcher
+  * Add missing license header to color-reload-module/reloader.c
+  * [GTK3] Add module to reload colorscheme in GTK3 apps without restarting 
them
+  * [Gtk Config] Port cursor theme sync to KConfigWatcher
+  * Provide better name for GTK Settings Sync service
+
+-------------------------------------------------------------------

Old:
----
  kde-gtk-config-5.18.5.tar.xz
  kde-gtk-config-5.18.5.tar.xz.sig

New:
----
  kde-gtk-config-5.19.0.tar.xz
  kde-gtk-config-5.19.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kde-gtk-config5.spec ++++++
--- /var/tmp/diff_new_pack.vb5jMG/_old  2020-06-08 23:53:39.979147614 +0200
+++ /var/tmp/diff_new_pack.vb5jMG/_new  2020-06-08 23:53:39.983147626 +0200
@@ -18,24 +18,27 @@
 
 %bcond_without lang
 Name:           kde-gtk-config5
-Version:        5.18.5
+Version:        5.19.0
 Release:        0
 Summary:        Daemon for GTK2 and GTK3 Applications Appearance Under KDE
 License:        LGPL-3.0-or-later AND GPL-3.0-or-later
 Group:          System/GUI/KDE
 URL:            http://projects.kde.org/kde-gtk-config
-Source:         
https://download.kde.org/stable/plasma/%{version}/kde-gtk-config-%{version}.tar.xz
+Source:         kde-gtk-config-%{version}.tar.xz
 %if %{with lang}
-Source1:        
https://download.kde.org/stable/plasma/%{version}/kde-gtk-config-%{version}.tar.xz.sig
+Source1:        kde-gtk-config-%{version}.tar.xz.sig
 Source2:        plasma.keyring
 %endif
 BuildRequires:  extra-cmake-modules >= 0.0.9
 BuildRequires:  kf5-filesystem
 BuildRequires:  xz
 BuildRequires:  cmake(KF5Config)
+BuildRequires:  cmake(KF5ConfigWidgets)
 BuildRequires:  cmake(KF5CoreAddons)
 BuildRequires:  cmake(KF5DBusAddons)
+BuildRequires:  cmake(KF5GuiAddons)
 BuildRequires:  cmake(KF5IconThemes)
+BuildRequires:  pkgconfig(giomm-2.4)
 BuildRequires:  pkgconfig(gtk+-2.0)
 BuildRequires:  pkgconfig(gtk+-3.0)
 BuildRequires:  pkgconfig(x11)
@@ -86,6 +89,9 @@
 
 %files
 %license COPYING*
+%dir %{_kf5_libdir}/gtk-3.0/
+%dir %{_kf5_libdir}/gtk-3.0/modules/
+%{_kf5_libdir}/gtk-3.0/modules/libcolorreload-gtk-module.so
 %dir %{_kf5_plugindir}/kf5
 %dir %{_kf5_plugindir}/kf5/kded
 %{_kf5_plugindir}/kf5/kded/gtkconfig.so

++++++ kde-gtk-config-5.18.5.tar.xz -> kde-gtk-config-5.19.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/CMakeLists.txt 
new/kde-gtk-config-5.19.0/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/CMakeLists.txt    2020-05-05 16:36:35.000000000 
+0200
+++ new/kde-gtk-config-5.19.0/CMakeLists.txt    2020-06-04 13:08:39.000000000 
+0200
@@ -1,5 +1,5 @@
 project(kde-gtk-config)
-set(PROJECT_VERSION "5.18.5")
+set(PROJECT_VERSION "5.19.0")
 cmake_minimum_required(VERSION 3.10)
 
 find_package(ECM REQUIRED NO_MODULE)
@@ -8,12 +8,19 @@
 find_package(Qt5 REQUIRED NO_MODULE COMPONENTS DBus)
 find_package(KF5CoreAddons REQUIRED)
 find_package(KF5Config REQUIRED)
-find_package(KF5IconThemes REQUIRED)
+find_package(KF5ConfigWidgets REQUIRED)
+find_package(KF5GuiAddons REQUIRED)
 find_package(KF5DBusAddons REQUIRED)
-find_package(GTK3 REQUIRED)
+find_package(PkgConfig REQUIRED)
 find_package(GSettingSchemas REQUIRED)
 find_package(XSettingsd)
 
+pkg_check_modules(GTK+3 REQUIRED IMPORTED_TARGET gtk+-3.0)
+pkg_check_modules(GTK+2 REQUIRED IMPORTED_TARGET gtk+-2.0)
+pkg_check_modules(GLib2 REQUIRED IMPORTED_TARGET glib-2.0)
+pkg_check_modules(GObject REQUIRED IMPORTED_TARGET gobject-2.0)
+pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
+
 include(ECMSetupVersion)
 include(ECMInstallIcons)
 include(ECMMarkAsTest)
@@ -36,6 +43,7 @@
 add_subdirectory(gtk3proxies)
 add_subdirectory(kded)
 add_subdirectory(kconf_update)
+add_subdirectory(color-reload-module)
 
 # add clang-format target for all our real source files
 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/cmake/modules/FindGTK3.cmake 
new/kde-gtk-config-5.19.0/cmake/modules/FindGTK3.cmake
--- old/kde-gtk-config-5.18.5/cmake/modules/FindGTK3.cmake      2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/cmake/modules/FindGTK3.cmake      1970-01-01 
01:00:00.000000000 +0100
@@ -1,193 +0,0 @@
-# - Find gtk3, glib
-# Defines:
-# GTK3_FOUND
-# GTK3_INCLUDE_DIRS
-# GTK3_LIBRARY_DIRS
-# GTK3_DEFINITIONS
-# GTK3_DEFINITIONS
-
-FIND_PACKAGE(PkgConfig)
-
-#
-# gtk
-#
-PKG_CHECK_MODULES(PC_GTK3 REQUIRED gtk+-3.0)
-
-SET(GTK3_DEFINITIONS ${PC_GTK3_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       GTK3_INCLUDE_DIR gtk/gtk.h
-       HINTS ${PC_GTK3_INCLUDEDIR} ${PC_GTK3_INCLUDE_DIRS}
-       PATH_SUFFIXES gtk-3.0)
-
-FIND_LIBRARY(
-       GTK3_LIBRARY NAMES gtk-3
-       HINTS ${PC_GTK3_LIBDIR} ${PC_GTK3_LIBRARY_DIRS})
-
-#
-# glib
-#
-PKG_CHECK_MODULES(PC_GLIB2 REQUIRED glib-2.0)
-
-SET(GLIB2_DEFINITIONS ${PC_GLIB2_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       GLIB2_INCLUDE_DIR_PART1 glib.h
-       HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-       PATH_SUFFIXES glib-2.0)
-
-FIND_PATH(
-       GLIB2_INCLUDE_DIR_PART2 glibconfig.h
-       HINTS ${PC_GLIB2_INCLUDEDIR} ${PC_GLIB2_INCLUDE_DIRS}
-       PATH_SUFFIXES glib-2.0/include)
-
-SET(GLIB2_INCLUDE_DIR ${GLIB2_INCLUDE_DIR_PART1} ${GLIB2_INCLUDE_DIR_PART2})
-
-FIND_LIBRARY(
-       GLIB2_LIBRARY NAMES glib-2.0
-       HINTS ${PC_GLIB2_LIBDIR} ${PC_GLIB2_LIBRARY_DIRS})
-
-#
-# gobject
-#
-PKG_CHECK_MODULES(PC_GOBJECT2 REQUIRED gobject-2.0)
-
-SET(GLIB2_DEFINITIONS ${PC_GOBJECT2_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       GOBJECT2_INCLUDE_DIR_PART1 glib.h
-       HINTS ${PC_GOBJECT2_INCLUDEDIR} ${PC_GOBJECT2_INCLUDE_DIRS}
-       PATH_SUFFIXES gobject-2.0)
-
-FIND_PATH(
-       GOBJECT2_INCLUDE_DIR_PART2 gobject.h
-       HINTS ${PC_GOBJECT2_INCLUDEDIR} ${PC_GOBJECT2_INCLUDE_DIRS}
-       PATH_SUFFIXES glib-2.0/gobject)
-
-SET(GOBJECT2_INCLUDE_DIR ${GOBJECT2_INCLUDE_DIR_PART1} 
${GOBJECT2_INCLUDE_DIR_PART2})
-
-FIND_LIBRARY(
-       GOBJECT2_LIBRARY NAMES gobject-2.0
-       HINTS ${PC_GOBJECT2_LIBDIR} ${PC_GOBJECT2_LIBRARY_DIRS})
-
-#
-# gio
-#
-PKG_CHECK_MODULES(PC_GIO2 REQUIRED gio-2.0)
-
-SET(GLIB2_DEFINITIONS ${PC_GIO2_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       GIO2_INCLUDE_DIR_PART1 glib.h
-       HINTS ${PC_GIO2_INCLUDEDIR} ${PC_GIO2_INCLUDE_DIRS}
-       PATH_SUFFIXES gio)
-
-FIND_PATH(
-       GIO2_INCLUDE_DIR_PART2 gio.h
-       HINTS ${PC_GIO2_INCLUDEDIR} ${PC_GIO2_INCLUDE_DIRS}
-       PATH_SUFFIXES glib-2.0/gio)
-
-SET(GIO2_INCLUDE_DIR ${GIO2_INCLUDE_DIR_PART1} ${GIO2_INCLUDE_DIR_PART2})
-
-FIND_LIBRARY(
-       GIO2_LIBRARY NAMES gio-2.0
-       HINTS ${PC_GIO2_LIBDIR} ${PC_GIO2_LIBRARY_DIRS})
-
-
-#
-# pango
-#
-PKG_CHECK_MODULES(PC_PANGO REQUIRED pango)
-
-SET(PANGO_DEFINITIONS ${PC_PANGO_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       PANGO_INCLUDE_DIR pango/pango.h
-       HINTS ${PC_PANGO_INCLUDEDIR} ${PC_PANGO_INCLUDE_DIRS}
-       PATH_SUFFIXES pango-1.0)
-
-FIND_LIBRARY(
-       PANGO_LIBRARY NAMES pango-1.0
-       HINTS ${PC_PANGO_LIBDIR} ${PC_PANGO_LIBRARY_DIRS})
-
-#
-# harfbuzz
-#
-if(PC_PANGO_VERSION VERSION_EQUAL 1.44 OR PC_PANGO_VERSION VERSION_GREATER 
1.44)
-    PKG_CHECK_MODULES(PC_HARFBUZZ REQUIRED harfbuzz)
-
-    SET(HARFBUZZ_DEFINITIONS ${PC_HARFBUZZ_CXXFLAGS_OTHER})
-
-    FIND_PATH(
-            HARFBUZZ_INCLUDE_DIR hb.h
-            HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS}
-            PATH_SUFFIXES harfbuzz)
-
-    FIND_LIBRARY(
-            HARFBUZZ_LIBRARY NAMES harfbuzz
-            HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS})
-endif()
-
-#
-# cairo
-#
-PKG_CHECK_MODULES(PC_CAIRO REQUIRED cairo)
-
-SET(CAIRO_DEFINITIONS ${PC_CAIRO_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       CAIRO_INCLUDE_DIR cairo.h
-       HINTS ${PC_CAIRO_INCLUDEDIR} ${PC_CAIRO_INCLUDE_DIRS}
-       PATH_SUFFIXES cairo)
-
-FIND_LIBRARY(
-       CAIRO_LIBRARY NAMES cairo
-       HINTS ${PC_CAIRO_LIBDIR} ${PC_CAIRO_LIBRARY_DIRS})
-
-#
-# gdk-pixbuf
-#
-PKG_CHECK_MODULES(PC_GDKPIXBUF REQUIRED gdk-pixbuf-2.0)
-
-SET(GDKPIXBUF_DEFINITIONS ${PC_GDKPIXBUF_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       GDKPIXBUF_INCLUDE_DIR gdk-pixbuf/gdk-pixbuf.h
-       HINTS ${PC_GDKPIXBUF_INCLUDEDIR} ${PC_GDKPIXBUF_INCLUDE_DIRS}
-       PATH_SUFFIXES gdk-pixbuf-2.0)
-
-FIND_LIBRARY(
-       GDKPIXBUF_LIBRARY NAMES gdk_pixbuf-2.0
-       HINTS ${PC_GDKPIXBUF_LIBDIR} ${PC_GDKPIXBUF_LIBRARY_DIRS})
-
-#
-# atk
-#
-PKG_CHECK_MODULES(PC_ATK REQUIRED atk)
-
-SET(ATK_DEFINITIONS ${PC_ATK_CXXFLAGS_OTHER})
-
-FIND_PATH(
-       ATK_INCLUDE_DIR atk/atk.h
-       HINTS ${PC_ATK_INCLUDEDIR} ${PC_ATK_INCLUDE_DIRS}
-       PATH_SUFFIXES atk-1.0)
-
-FIND_LIBRARY(
-       ATK_LIBRARY NAMES atk-1.0
-       HINTS ${PC_ATK_LIBDIR} ${PC_ATK_LIBRARY_DIRS})
-
-#
-#
-#result
-#
-#
-SET(GTK3_LIBRARY_DIRS ${GTK3_LIBRARY} ${GLIB2_LIBRARY} ${PANGO_LIBRARY} 
${HARFBUZZ_LIBRARY} ${CAIRO_LIBRARY} ${GDKPIXBUF_LIBRARY} ${ATK_LIBRARY})
-SET(GTK3_INCLUDE_DIRS ${GTK3_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} 
${GIO2_INCLUDE_DIR} ${HARFBUZZ_INCLUDE_DIR} ${PANGO_INCLUDE_DIR} 
${CAIRO_INCLUDE_DIR} ${GDKPIXBUF_INCLUDE_DIR} ${ATK_INCLUDE_DIR})
-
-INCLUDE(FindPackageHandleStandardArgs)
-
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(
-       GTK3 DEFAULT_MSG
-       GTK3_LIBRARY GTK3_INCLUDE_DIR)
-
-MARK_AS_ADVANCED(GTK3_INCLUDE_DIR GTK3_LIBRARY)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kde-gtk-config-5.18.5/color-reload-module/CMakeLists.txt 
new/kde-gtk-config-5.19.0/color-reload-module/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/color-reload-module/CMakeLists.txt        
1970-01-01 01:00:00.000000000 +0100
+++ new/kde-gtk-config-5.19.0/color-reload-module/CMakeLists.txt        
2020-06-04 13:08:39.000000000 +0200
@@ -0,0 +1,19 @@
+add_library(colorreload-gtk3-module MODULE
+    reloader.c
+)
+
+target_link_libraries(colorreload-gtk3-module
+    PRIVATE
+      PkgConfig::GLib2 
+      PkgConfig::GTK+3 
+)
+
+set_target_properties(colorreload-gtk3-module
+    PROPERTIES
+      OUTPUT_NAME libcolorreload-gtk-module
+)
+
+install(
+    TARGETS colorreload-gtk3-module 
+    DESTINATION ${KDE_INSTALL_LIBDIR}/gtk-3.0/modules
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/color-reload-module/reloader.c 
new/kde-gtk-config-5.19.0/color-reload-module/reloader.c
--- old/kde-gtk-config-5.18.5/color-reload-module/reloader.c    1970-01-01 
01:00:00.000000000 +0100
+++ new/kde-gtk-config-5.19.0/color-reload-module/reloader.c    2020-06-04 
13:08:39.000000000 +0200
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 Carson Black <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License or (at your option) version 3 or any later version
+ * accepted by the membership of KDE e.V. (or its successor approved
+ * by the membership of KDE e.V.), which shall act as a proxy
+ * defined in Section 14 of version 3 of the license.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <gio/gio.h>
+#include <gdk/gdk.h>
+
+gchar *path;
+GFile *file;
+GFileMonitor *mon;
+GtkCssProvider *provider;
+
+void reload_colours() {
+    if (provider == NULL) {
+        provider = gtk_css_provider_new();
+    } else {
+        gtk_style_context_remove_provider_for_screen(
+            gdk_screen_get_default(),
+            GTK_STYLE_PROVIDER(provider)
+        );
+        g_clear_object(&provider);
+        provider = gtk_css_provider_new();
+    }
+    gtk_style_context_add_provider_for_screen(
+        gdk_screen_get_default(),
+        GTK_STYLE_PROVIDER (provider),
+        GTK_STYLE_PROVIDER_PRIORITY_USER+1
+    );
+    gtk_css_provider_load_from_file(
+        provider,
+        file,
+        NULL
+    );
+}
+
+__attribute__((visibility("default"))) void gtk_module_init(gint *argc, gchar 
***argv[]) {
+    path = g_strconcat(g_get_user_config_dir(), "/gtk-3.0/colors.css", NULL);
+    file = g_file_new_for_path(path);
+
+    mon = g_file_monitor_file(
+        file,
+        G_FILE_MONITOR_NONE,
+        NULL,
+        NULL
+    );
+
+    g_signal_connect(mon, "changed", G_CALLBACK(reload_colours), NULL);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/gtk3proxies/CMakeLists.txt 
new/kde-gtk-config-5.19.0/gtk3proxies/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/gtk3proxies/CMakeLists.txt        2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/gtk3proxies/CMakeLists.txt        2020-06-04 
13:08:39.000000000 +0200
@@ -1,14 +1,12 @@
-find_package(GTK3 REQUIRED)
 # gtk3 pulls in X11 headers, we need to add the include path if they are not 
in /usr/include
 find_package(X11)
 
-
-include_directories(${GTK3_INCLUDE_DIRS})
-
 add_executable(gtk3_preview preview3.c)
+
 if(X11_FOUND)
   target_include_directories(gtk3_preview PRIVATE ${X11_X11_INCLUDE_PATH})
 endif()
+
 target_compile_definitions(gtk3_preview PRIVATE 
"-DDATA_DIR=\"${KDE_INSTALL_FULL_DATADIR}/kcm-gtk-module/\"")
-target_link_libraries(gtk3_preview ${GTK3_LIBRARY} ${GOBJECT2_LIBRARY} 
${GLIB2_LIBRARY})
+target_link_libraries(gtk3_preview PkgConfig::GTK+3 PkgConfig::GLib2 
PkgConfig::GObject)
 install(TARGETS gtk3_preview  RUNTIME DESTINATION "${LIBEXEC_INSTALL_DIR}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/gtkproxies/CMakeLists.txt 
new/kde-gtk-config-5.19.0/gtkproxies/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/gtkproxies/CMakeLists.txt 2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/gtkproxies/CMakeLists.txt 2020-06-04 
13:08:39.000000000 +0200
@@ -1,15 +1,10 @@
-find_package(GTK2 REQUIRED)
-
-include_directories(BEFORE ${GTK2_INCLUDE_DIRS})
-
 add_executable(reload_gtk_apps reload.c)
-target_link_libraries(reload_gtk_apps ${GTK2_LIBRARIES})
+target_link_libraries(reload_gtk_apps PkgConfig::GTK+2)
 install(TARGETS reload_gtk_apps RUNTIME DESTINATION "${LIBEXEC_INSTALL_DIR}")
 
-
 add_executable(gtk_preview preview.c)
 target_compile_definitions(gtk_preview PRIVATE 
"-DDATA_DIR=\"${KDE_INSTALL_FULL_DATADIR}/kcm-gtk-module/\"")
-target_link_libraries(gtk_preview ${GTK2_LIBRARIES} ${GTK2_GIOMM_LIBRARY})
+target_link_libraries(gtk_preview PkgConfig::GTK+2)
 install(TARGETS gtk_preview RUNTIME DESTINATION "${LIBEXEC_INSTALL_DIR}")
 
 # preview file used for the gtk3 version too
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kconf_update/CMakeLists.txt 
new/kde-gtk-config-5.19.0/kconf_update/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/kconf_update/CMakeLists.txt       2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kconf_update/CMakeLists.txt       2020-06-04 
13:08:39.000000000 +0200
@@ -9,14 +9,15 @@
   PRIVATE
     Qt5::Core
     KF5::ConfigCore
-    ${GIO2_LIBRARY}
-    ${GOBJECT2_LIBRARY}
+    KF5::ConfigWidgets
+    KF5::GuiAddons
+    PkgConfig::GIO
+    PkgConfig::GObject
 )
 
 target_include_directories(gtk_theme
   PRIVATE
     ../kded/
-    ${GTK3_INCLUDE_DIRS}
 )
 
 target_compile_definitions(gtk_theme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kconf_update/gtktheme.cpp 
new/kde-gtk-config-5.19.0/kconf_update/gtktheme.cpp
--- old/kde-gtk-config-5.18.5/kconf_update/gtktheme.cpp 2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kconf_update/gtktheme.cpp 2020-06-04 
13:08:39.000000000 +0200
@@ -19,6 +19,7 @@
  */
 
 #include <QString>
+#include <QVariant>
 
 #include "configeditor.h"
 
@@ -49,8 +50,8 @@
      || currentGtk3Theme == QStringLiteral("BreezyGTK")
      || currentGtk3Theme == QStringLiteral("Orion")
     ) {
-        ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("gtk-theme"), 
QStringLiteral("Breeze"));
+        ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("gtk-theme"), 
QStringLiteral("Breeze"));
         
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-theme-name"), 
QStringLiteral("Breeze"));
-        
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/ThemeName"),  
QStringLiteral("Breeze"));
+        
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/ThemeName"), 
QStringLiteral("Breeze"));
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/CMakeLists.txt 
new/kde-gtk-config-5.19.0/kded/CMakeLists.txt
--- old/kde-gtk-config-5.18.5/kded/CMakeLists.txt       2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/CMakeLists.txt       2020-06-04 
13:08:39.000000000 +0200
@@ -19,13 +19,16 @@
 )
 
 target_link_libraries(gtkconfig
+  PUBLIC
     Qt5::DBus
     KF5::CoreAddons
     KF5::ConfigCore
+    KF5::ConfigWidgets
     KF5::DBusAddons
-    KF5::IconThemes
-    ${GIO2_LIBRARY}
-    ${GOBJECT2_LIBRARY}
+    PkgConfig::GTK+3
+    KF5::GuiAddons
+    PkgConfig::GIO
+    PkgConfig::GObject
 )
 
 install(TARGETS gtkconfig DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kded)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/configeditor.cpp 
new/kde-gtk-config-5.19.0/kded/configeditor.cpp
--- old/kde-gtk-config-5.18.5/kded/configeditor.cpp     2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/configeditor.cpp     2020-06-04 
13:08:39.000000000 +0200
@@ -18,14 +18,20 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <QDebug>
+#include <QColor>
 #include <QDir>
 #include <QRegularExpression>
 #include <QStandardPaths>
 #include <QProcess>
+#include <QVariant>
+#include <QMap>
+#include <QList>
+#include <QTextStream>
 
 #include <KSharedConfig>
 #include <KConfigGroup>
+#include <KColorScheme>
+#include <KColorUtils>
 
 #include <string>
 #include <csignal>
@@ -35,19 +41,26 @@
 
 #include "configeditor.h"
 
-void ConfigEditor::setGtk3ConfigValueDconf(const QString &paramName, bool 
paramValue, const QString &category)
+void ConfigEditor::setGtk3ConfigValueGSettings(const QString &paramName, const 
QVariant &paramValue, const QString &category)
 {
     g_autoptr(GSettings) gsettings = 
g_settings_new(category.toUtf8().constData());
-    g_settings_set_boolean(gsettings, paramName.toUtf8().constData(), 
paramValue);
+
+    if (paramValue.type() == QVariant::Type::String) {
+        g_settings_set_string(gsettings, paramName.toUtf8().constData(), 
paramValue.toString().toUtf8().constData());
+    } else if (paramValue.type() == QVariant::Type::Int) {
+        g_settings_set_int(gsettings, paramName.toUtf8().constData(), 
paramValue.toInt());
+    } else if (paramValue.type() == QVariant::Type::Bool) {
+        g_settings_set_boolean(gsettings, paramName.toUtf8().constData(), 
paramValue.toBool());
+    }
 }
 
-void ConfigEditor::setGtk3ConfigValueDconf(const QString &paramName, const 
QString &paramValue, const QString &category)
+void ConfigEditor::setGtk3ConfigValueGSettingsAsEnum(const QString& paramName, 
int paramValue, const QString& category)
 {
     g_autoptr(GSettings) gsettings = 
g_settings_new(category.toUtf8().constData());
-    g_settings_set_string(gsettings, paramName.toUtf8().constData(), 
paramValue.toUtf8().constData());
+    g_settings_set_enum(gsettings, paramName.toUtf8().constData(), paramValue);
 }
 
-void ConfigEditor::setGtk3ConfigValueSettingsIni(const QString &paramName, 
const QString &paramValue)
+void ConfigEditor::setGtk3ConfigValueSettingsIni(const QString &paramName, 
const QVariant &paramValue)
 {
     QString configLocation = 
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
     QString gtk3ConfigPath = configLocation + 
QStringLiteral("/gtk-3.0/settings.ini");
@@ -59,10 +72,9 @@
     group.sync();
 }
 
-void ConfigEditor::setGtk3ConfigValueXSettingsd(const QString &paramName, 
const QString &paramValue)
+void ConfigEditor::setGtk3ConfigValueXSettingsd(const QString &paramName, 
const QVariant &paramValue)
 {
-    using qsp = QStandardPaths;
-    QString configLocation = qsp::writableLocation(qsp::GenericConfigLocation);
+    QString configLocation = 
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
     
     QDir xsettingsdPath = configLocation + QStringLiteral("/xsettingsd");
     if (!xsettingsdPath.exists()) {
@@ -80,7 +92,7 @@
     reloadXSettingsd();
 }
 
-void ConfigEditor::setGtk2ConfigValue(const QString &paramName, const QString 
&paramValue)
+void ConfigEditor::setGtk2ConfigValue(const QString &paramName, const QVariant 
&paramValue)
 {
     QString gtkrcPath = qEnvironmentVariable("GTK2_RC_FILES", QDir::homePath() 
+ QStringLiteral("/.gtkrc-2.0"));
     if (gtkrcPath.contains(QStringLiteral(":/"))) { // I.e. env variable 
contains multiple paths
@@ -95,6 +107,14 @@
     reloadGtk2Apps();
 }
 
+void ConfigEditor::setGtk3Colors(const QMap<QString, QColor> 
&colorsDefinitions)
+{
+    addImportStatementToGtkCssUserFile();
+    modifyColorsCssFile(colorsDefinitions);
+    addGtkModule(QStringLiteral("colorreload-gtk-module"));
+}
+
+
 QString ConfigEditor::gtk2ConfigValue(const QString& paramName)
 {
     QString gtkrcPath = QDir::homePath() + QStringLiteral("/.gtkrc-2.0");
@@ -152,6 +172,51 @@
     reloadGtk2Apps();
 }
 
+void ConfigEditor::addGtkModule(const QString& moduleName)
+{
+    const QString currentModulesString = 
gtk3ConfigValueSettingsIni(QStringLiteral("gtk-modules"));
+
+    if (currentModulesString.contains(moduleName)) {
+        return;
+    }
+
+    if (currentModulesString.isEmpty()) { // No modules
+        setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-modules"), 
moduleName);
+    } else {
+        setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-modules"), 
QStringLiteral("%1:%2").arg(currentModulesString, moduleName));
+    }
+}
+
+void ConfigEditor::addImportStatementToGtkCssUserFile()
+{
+    QString gtkCssPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + 
QStringLiteral("/gtk-3.0/gtk.css");
+    QFile gtkCss(gtkCssPath);
+
+    if (gtkCss.open(QIODevice::ReadWrite)) {
+        QByteArray gtkCssContents = gtkCss.readAll();
+
+        static const QByteArray importStatement = QByteArrayLiteral("@import 
'colors.css';");
+        if (!gtkCssContents.contains(importStatement)) {
+            QTextStream gtkCssStream(&gtkCss);
+            gtkCssStream << importStatement;
+        }
+    }
+}
+
+void ConfigEditor::modifyColorsCssFile(const QMap<QString, QColor> 
&colorsDefinitions)
+{
+    QString colorsCssPath = 
QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + 
QStringLiteral("/gtk-3.0/colors.css");
+    QFile colorsCss(colorsCssPath);
+
+    if (colorsCss.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
+        QTextStream colorsCssStream(&colorsCss);
+
+        for (auto it = colorsDefinitions.cbegin(); it != 
colorsDefinitions.cend(); it++) {
+            colorsCssStream << QStringLiteral("@define-color %1 
%2;\n").arg(it.key(), it.value().name());
+        }
+    }
+}
+
 QString ConfigEditor::readFileContents(QFile &file)
 {
     if (file.open(QIODevice::ReadWrite | QIODevice::Text)) {
@@ -161,55 +226,45 @@
     }
 }
 
-void ConfigEditor::replaceValueInGtkrcContents(QString &gtkrcContents, const 
QString &paramName, const QString &paramValue)
+void ConfigEditor::replaceValueInGtkrcContents(QString &gtkrcContents, const 
QString &paramName, const QVariant &paramValue)
 {
     const QRegularExpression regExp(paramName + 
QStringLiteral("=[^\n]*($|\n)"));
 
-    static const QStringList nonStringProperties{
-        QStringLiteral("gtk-toolbar-style"),
-        QStringLiteral("gtk-menu-images"),
-        QStringLiteral("gtk-button-images"),
-        QStringLiteral("gtk-primary-button-warps-slider"),
-        QStringLiteral("gtk-enable-animations"),
-    };
-
     QString newConfigString;
-    if (nonStringProperties.contains(paramName)) {
-        newConfigString = paramName + QStringLiteral("=") + paramValue + 
QStringLiteral("\n");
+    if (paramValue.type() == QVariant::Type::String) {
+        newConfigString = QStringLiteral("%1=\"%2\"\n").arg(paramName, 
paramValue.toString());
+    } else if (paramValue.type() == QVariant::Type::Bool) {
+        // GTK2 does not support 'true' and 'false' as values
+        newConfigString = QStringLiteral("%1=%2\n").arg(paramName, 
QString::number(paramValue.toInt()));
     } else {
-        newConfigString = paramName + QStringLiteral("=\"") + paramValue + 
QStringLiteral("\"\n");
+        newConfigString = QStringLiteral("%1=%2\n").arg(paramName, 
paramValue.toString());
     }
 
     if (gtkrcContents.contains(regExp)) {
         gtkrcContents.replace(regExp, newConfigString);
     } else {
-        gtkrcContents = newConfigString + QStringLiteral("\n") + gtkrcContents;
+        gtkrcContents = newConfigString + gtkrcContents;
     }
 }
 
-void ConfigEditor::replaceValueInXSettingsdContents(QString 
&xSettingsdContents, const QString &paramName, const QString &paramValue)
+void ConfigEditor::replaceValueInXSettingsdContents(QString 
&xSettingsdContents, const QString &paramName, const QVariant &paramValue)
 {
     const QRegularExpression regExp(paramName + QStringLiteral(" 
[^\n]*($|\n)"));
 
-    static const QStringList nonStringProperties{
-        QStringLiteral("Gtk/ButtonImages"),
-        QStringLiteral("Gtk/MenuImages"),
-        QStringLiteral("Gtk/ToolbarStyle"),
-        QStringLiteral("Gtk/PrimaryButtonWarpsSlider"),
-        QStringLiteral("Gtk/EnableAnimations"),
-    };
-
     QString newConfigString;
-    if (nonStringProperties.contains(paramName)) {
-        newConfigString = paramName + QStringLiteral(" ") + paramValue + 
QStringLiteral("\n");
+    if (paramValue.type() == QVariant::Type::String) {
+        newConfigString = QStringLiteral("%1 \"%2\"\n").arg(paramName, 
paramValue.toString());
+    } else if (paramValue.type() == QVariant::Type::Bool) {
+        // XSettigsd does not support 'true' and 'false' as values
+        newConfigString = QStringLiteral("%1 %2\n").arg(paramName, 
QString::number(paramValue.toInt()));
     } else {
-        newConfigString = paramName + QStringLiteral(" \"") + paramValue + 
QStringLiteral("\"\n");
+        newConfigString = QStringLiteral("%1 %2\n").arg(paramName, 
paramValue.toString());
     }
 
     if (xSettingsdContents.contains(regExp)) {
         xSettingsdContents.replace(regExp, newConfigString);
     } else {
-        xSettingsdContents = newConfigString + QStringLiteral("\n") + 
xSettingsdContents;
+        xSettingsdContents = newConfigString + xSettingsdContents;
     }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/configeditor.h 
new/kde-gtk-config-5.19.0/kded/configeditor.h
--- old/kde-gtk-config-5.18.5/kded/configeditor.h       2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/configeditor.h       2020-06-04 
13:08:39.000000000 +0200
@@ -22,25 +22,33 @@
 #include <unistd.h>
 #include <QString>
 
+class QColor;
 class QFile;
-class QString;
+class QVariant;
 
 namespace ConfigEditor
 {
-    void setGtk2ConfigValue(const QString &paramName, const QString 
&paramValue);
-    void setGtk3ConfigValueDconf(const QString &paramName, bool paramValue, 
const QString &category = QStringLiteral("org.gnome.desktop.interface"));
-    void setGtk3ConfigValueDconf(const QString &paramName, const QString 
&paramValue, const QString &category = 
QStringLiteral("org.gnome.desktop.interface"));
-    void setGtk3ConfigValueSettingsIni(const QString &paramName, const QString 
&paramValue);
-    void setGtk3ConfigValueXSettingsd(const QString &paramName, const QString 
&paramValue);
+    void setGtk2ConfigValue(const QString &paramName, const QVariant 
&paramValue);
+
+    void setGtk3ConfigValueGSettings(const QString &paramName, const QVariant 
&paramValue, const QString &category = 
QStringLiteral("org.gnome.desktop.interface"));
+    void setGtk3ConfigValueGSettingsAsEnum(const QString &paramName, int 
paramValue, const QString &category = 
QStringLiteral("org.gnome.desktop.interface"));
+    void setGtk3ConfigValueSettingsIni(const QString &paramName, const 
QVariant &paramValue);
+    void setGtk3ConfigValueXSettingsd(const QString &paramName, const QVariant 
&paramValue);
+
+    void setGtk3Colors(const QMap<QString, QColor> &colorsDefinitions);
 
     QString gtk2ConfigValue(const QString& paramName);
     QString gtk3ConfigValueSettingsIni(const QString& paramName);
 
     void removeLegacyGtk2Strings();
 
+    void addGtkModule(const QString &moduleName);
+
+    void addImportStatementToGtkCssUserFile();
+    void modifyColorsCssFile(const QMap<QString, QColor> &colorsDefinitions);
 
-    void replaceValueInGtkrcContents(QString &gtkrcContents, const QString 
&paramName, const QString &paramValue);
-    void replaceValueInXSettingsdContents(QString &xSettingsdContents, const 
QString &paramName, const QString &paramValue);
+    void replaceValueInGtkrcContents(QString &gtkrcContents, const QString 
&paramName, const QVariant &paramValue);
+    void replaceValueInXSettingsdContents(QString &xSettingsdContents, const 
QString &paramName, const QVariant &paramValue);
 
     QString readFileContents(QFile &gtkrc);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/configvalueprovider.cpp 
new/kde-gtk-config-5.19.0/kded/configvalueprovider.cpp
--- old/kde-gtk-config-5.18.5/kded/configvalueprovider.cpp      2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/configvalueprovider.cpp      2020-06-04 
13:08:39.000000000 +0200
@@ -21,11 +21,16 @@
 #include <QFont>
 #include <QString>
 #include <QColor>
+#include <QMap>
+#include <QList>
 
 #include <KConfig>
-#include <KIconTheme>
 #include <KSharedConfig>
 #include <KConfigGroup>
+#include <KColorScheme>
+#include <KColorUtils>
+
+#include <gtk/gtk.h>
 
 #include "configvalueprovider.h"
 
@@ -41,7 +46,6 @@
 {
     static const QFont defaultFont(QStringLiteral("Noto Sans"), 10);
 
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup configGroup = 
kdeglobalsConfig->group(QStringLiteral("General"));
     QString fontAsString = configGroup.readEntry(QStringLiteral("font"), 
defaultFont.toString());
     static QFont font;
@@ -114,85 +118,63 @@
 
 QString ConfigValueProvider::iconThemeName() const
 {
-    KIconTheme *newIconTheme = KIconLoader::global()->theme();
-    if (newIconTheme) {
-        return newIconTheme->internalName();
-    } else {
-        return QStringLiteral("breeze");
-    }
+    KConfigGroup configGroup = 
kdeglobalsConfig->group(QStringLiteral("Icons"));
+    return configGroup.readEntry(QStringLiteral("Theme"), 
QStringLiteral("breeze"));
 }
 
 QString ConfigValueProvider::cursorThemeName() const
 {
-    inputConfig->reparseConfiguration();
     KConfigGroup configGroup = inputConfig->group(QStringLiteral("Mouse"));
     return configGroup.readEntry(QStringLiteral("cursorTheme"), 
QStringLiteral("breeze_cursors"));
 }
 
-QString ConfigValueProvider::iconsOnButtons() const
+bool ConfigValueProvider::iconsOnButtons() const
 {
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE"));
-    bool kdeConfigValue = 
configGroup.readEntry(QStringLiteral("ShowIconsOnPushButtons"), true);
-
-    if (kdeConfigValue) {
-        return QStringLiteral("1");
-    } else {
-        return QStringLiteral("0");
-    }
+    return configGroup.readEntry(QStringLiteral("ShowIconsOnPushButtons"), 
true);
 }
 
-QString ConfigValueProvider::iconsInMenus() const
+bool ConfigValueProvider::iconsInMenus() const
 {
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE"));
-    bool kdeConfigValue = 
configGroup.readEntry(QStringLiteral("ShowIconsInMenuItems"), true);
-
-    if (kdeConfigValue) {
-        return QStringLiteral("1");
-    } else {
-        return QStringLiteral("0");
-    }
+    return configGroup.readEntry(QStringLiteral("ShowIconsInMenuItems"), true);
 }
 
-QString 
ConfigValueProvider::toolbarStyle(ConfigValueProvider::ToolbarStyleNotation 
notation) const
+int ConfigValueProvider::toolbarStyle() const
 {
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("Toolbar 
style"));
     QString kdeConfigValue = 
configGroup.readEntry(QStringLiteral("ToolButtonStyle"), "TextBesideIcon");
-    return toolbarStyleInDesiredNotation(kdeConfigValue, notation);
+
+    if (kdeConfigValue == QStringLiteral("NoText")) {
+        return GtkToolbarStyle::GTK_TOOLBAR_ICONS;
+    } else if (kdeConfigValue == QStringLiteral("TextOnly")) {
+        return GtkToolbarStyle::GTK_TOOLBAR_TEXT;
+    } else if (kdeConfigValue == QStringLiteral("TextBesideIcon")) {
+        return GtkToolbarStyle::GTK_TOOLBAR_BOTH_HORIZ;
+    } else {
+        return GtkToolbarStyle::GTK_TOOLBAR_BOTH;
+    }
 }
 
-QString ConfigValueProvider::scrollbarBehavior() const
+bool ConfigValueProvider::scrollbarBehavior() const
 {
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup configGroup = kdeglobalsConfig->group(QStringLiteral("KDE"));
     bool kdeConfigValue = 
configGroup.readEntry(QStringLiteral("ScrollbarLeftClickNavigatesByPage"), 
true);
-    if (kdeConfigValue) { // GTK setting is inverted
-        return QStringLiteral("0");
-    } else {
-        return QStringLiteral("1");
-    }
+    return !kdeConfigValue; // GTK setting is inverted
 }
 
-QString ConfigValueProvider::preferDarkTheme() const
+bool ConfigValueProvider::preferDarkTheme() const
 {
-    kdeglobalsConfig->reparseConfiguration();
     KConfigGroup colorsConfigGroup = 
kdeglobalsConfig->group(QStringLiteral("Colors:Window"));
     QColor windowBackgroundColor = 
colorsConfigGroup.readEntry(QStringLiteral("BackgroundNormal"), QColor(239, 
240, 241));
     const int windowBackgroundGray = qGray(windowBackgroundColor.rgb());
 
     // We use heuristic to determine if current color scheme is dark or not
-    if (windowBackgroundGray >= 192) {
-        return QStringLiteral("0");
-    } else {
-        return QStringLiteral("1");
-    }
+    return windowBackgroundGray < 192;
 }
 
 QString ConfigValueProvider::windowDecorationsButtonsOrder() const
 {
-    kwinConfig->reparseConfiguration();
     KConfigGroup configGroup = 
kwinConfig->group(QStringLiteral("org.kde.kdecoration2"));
     QString buttonsOnLeftKdeConfigValue = 
configGroup.readEntry(QStringLiteral("ButtonsOnLeft"), "MS");
     QString buttonsOnRightKdeConfigValue = 
configGroup.readEntry(QStringLiteral("ButtonsOnRight"), "HIAX");
@@ -203,55 +185,207 @@
     return buttonsOnLeftInGtkNotation + QStringLiteral(":") + 
buttonsOnRightInGtkNotation;
 }
 
-QString ConfigValueProvider::enableAnimations() const
+bool ConfigValueProvider::enableAnimations() const
 {
     KConfigGroup generalCfg = kdeglobalsConfig->group(QStringLiteral("KDE"));
     const qreal animationSpeedModifier = qMax(0.0, 
generalCfg.readEntry("AnimationDurationFactor", 1.0));
 
-    const bool enableAnimations = !qFuzzyIsNull(animationSpeedModifier);
-
-    if (enableAnimations) {
-        return QStringLiteral("1");
-    } else {
-        return QStringLiteral("0");
-    }
+    return !qFuzzyIsNull(animationSpeedModifier);
 }
 
-QString ConfigValueProvider::toolbarStyleInDesiredNotation(const QString 
&kdeConfigValue, ConfigValueProvider::ToolbarStyleNotation notation) const
+QMap<QString, QColor> ConfigValueProvider::colors() const
 {
-    QStringList toolbarStyles {};
-    if (notation == ToolbarStyleNotation::SettingsIni) {
-        toolbarStyles.append({
-             QStringLiteral("GTK_TOOLBAR_ICONS"),
-             QStringLiteral("GTK_TOOLBAR_TEXT"),
-             QStringLiteral("GTK_TOOLBAR_BOTH_HORIZ"),
-             QStringLiteral("GTK_TOOLBAR_BOTH")
-        });
-    } else if (notation == ToolbarStyleNotation::Xsettingsd) {
-        toolbarStyles.append({
-             QStringLiteral("0"),
-             QStringLiteral("1"),
-             QStringLiteral("3"),
-             QStringLiteral("2")
-        });
-    } else {
-        toolbarStyles.append({
-             QStringLiteral("icons"),
-             QStringLiteral("text"),
-             QStringLiteral("both-horiz"),
-             QStringLiteral("both")
-        });
-    }
+    using KCS = KColorScheme;
 
-    if (kdeConfigValue == QStringLiteral("NoText")) {
-        return toolbarStyles[0];
-    } else if (kdeConfigValue == QStringLiteral("TextOnly")) {
-        return toolbarStyles[1];
-    } else if (kdeConfigValue == QStringLiteral("TextBesideIcon")) {
-        return toolbarStyles[2];
-    } else {
-        return toolbarStyles[3];
-    }
+    // Color Schemes Collection
+    QHash<QString, QHash<QString, KCS>> csc {
+        {QStringLiteral("active"), {
+            {QStringLiteral("view"), KCS(QPalette::Active, KCS::View)},
+            {QStringLiteral("window"), KCS(QPalette::Active, KCS::Window)},
+            {QStringLiteral("button"), KCS(QPalette::Active, KCS::Button)},
+            {QStringLiteral("selection"), KCS(QPalette::Active, 
KCS::Selection)},
+            {QStringLiteral("tooltip"), KCS(QPalette::Active, KCS::Tooltip)},
+            {QStringLiteral("complementary"), KCS(QPalette::Active, 
KCS::Complementary)},
+        }},
+        {QStringLiteral("inactive"), {
+            {QStringLiteral("view"), KCS(QPalette::Inactive, KCS::View)},
+            {QStringLiteral("window"), KCS(QPalette::Inactive, KCS::Window)},
+            {QStringLiteral("button"), KCS(QPalette::Inactive, KCS::Button)},
+            {QStringLiteral("selection"), KCS(QPalette::Inactive, 
KCS::Selection)},
+            {QStringLiteral("tooltip"), KCS(QPalette::Inactive, KCS::Tooltip)},
+            {QStringLiteral("complementary"), KCS(QPalette::Inactive, 
KCS::Complementary)},
+        }},
+        {QStringLiteral("inactive"), {
+            {QStringLiteral("view"), KCS(QPalette::Disabled, KCS::View)},
+            {QStringLiteral("window"), KCS(QPalette::Disabled, KCS::Window)},
+            {QStringLiteral("button"), KCS(QPalette::Disabled, KCS::Button)},
+            {QStringLiteral("selection"), KCS(QPalette::Disabled, 
KCS::Selection)},
+            {QStringLiteral("tooltip"), KCS(QPalette::Disabled, KCS::Tooltip)},
+            {QStringLiteral("complementary"), KCS(QPalette::Disabled, 
KCS::Complementary)},
+        }},
+    };
+
+    // Color mixing
+    QColor windowForegroundColor = 
csc["active"]["window"].foreground(KCS::NormalText).color();
+    QColor windowBackgroundColor = 
csc["active"]["window"].background(KCS::NormalBackground).color();
+    QColor bordersColor = KColorUtils::mix(windowBackgroundColor, 
windowForegroundColor, 0.25);
+
+    QColor inactiveWindowForegroundColor = 
csc["inactive"]["window"].foreground(KCS::NormalText).color();
+    QColor inactiveWindowBackgroundColor = 
csc["inactive"]["window"].background(KCS::NormalBackground).color();
+    QColor inactiveBordersColor = 
KColorUtils::mix(inactiveWindowBackgroundColor, inactiveWindowForegroundColor, 
0.25);
+
+    QColor disabledWindowForegroundColor = 
csc["disabled"]["window"].foreground(KCS::NormalText).color();
+    QColor disabledWindowBackgroundColor = 
csc["disabled"]["window"].background(KCS::NormalBackground).color();
+    QColor disabledBordersColor = 
KColorUtils::mix(disabledWindowBackgroundColor, disabledWindowForegroundColor, 
0.25);
+
+    QColor unfocusedDisabledWindowForegroundColor = 
csc["disabled"]["window"].foreground(KCS::NormalText).color();
+    QColor unfocusedDisabledWindowBackgroundColor = 
csc["disabled"]["window"].background(KCS::NormalBackground).color();
+    QColor unfocusedDisabledBordersColor = 
KColorUtils::mix(unfocusedDisabledWindowBackgroundColor, 
unfocusedDisabledWindowForegroundColor, 0.25);
+
+    QColor tooltipForegroundColor = 
csc["active"]["tooltip"].foreground(KCS::NormalText).color();
+    QColor tooltipBackgroundColor = 
csc["active"]["tooltip"].background(KCS::NormalBackground).color();
+    QColor tooltipBorderColor = KColorUtils::mix(tooltipBackgroundColor, 
tooltipForegroundColor, 0.25);
+
+    KConfigGroup windowManagerConfig = 
kdeglobalsConfig->group(QStringLiteral("WM"));
+
+    return {
+        /*
+         * Normal (Non Backdrop, Non Insensitive)
+         */
+
+        // General Colors
+        { "theme_fg_color_breeze", 
csc["active"]["window"].foreground(KCS::NormalText).color()},
+        { "theme_bg_color_breeze", 
csc["active"]["window"].background(KCS::NormalBackground).color()},
+        { "theme_text_color_breeze", 
csc["active"]["view"].foreground(KCS::NormalText).color()},
+        { "theme_base_color_breeze", 
csc["active"]["view"].background(KCS::NormalBackground).color()},
+        { "theme_view_hover_decoration_color_breeze", 
csc["active"]["view"].decoration(KCS::HoverColor).color()},
+        { "theme_hovering_selected_bg_color_breeze", 
csc["active"]["selection"].decoration(KCS::HoverColor).color()},
+        { "theme_selected_bg_color_breeze", 
csc["active"]["selection"].background(KCS::NormalBackground).color()},
+        { "theme_selected_fg_color_breeze", 
csc["active"]["selection"].foreground(KCS::NormalText).color()},
+        { "theme_view_active_decoration_color_breeze", 
csc["active"]["view"].decoration(KCS::HoverColor).color()},
+
+        // Button Colors
+        { "theme_button_background_normal_breeze", 
csc["active"]["button"].background(KCS::NormalBackground).color()},
+        { "theme_button_decoration_hover_breeze", 
csc["active"]["button"].decoration(KCS::HoverColor).color()},
+        { "theme_button_decoration_focus_breeze", 
csc["active"]["button"].decoration(KCS::FocusColor).color()},
+        { "theme_button_foreground_normal_breeze", 
csc["active"]["button"].foreground(KCS::NormalText).color()},
+        { "theme_button_foreground_active_breeze", 
csc["active"]["selection"].foreground(KCS::NormalText).color()},
+
+
+        // Misc Colors
+        { "borders_breeze", bordersColor},
+        { "warning_color_breeze", 
csc["active"]["view"].foreground(KCS::NeutralText).color()},
+        { "success_color_breeze", 
csc["active"]["view"].foreground(KCS::PositiveText).color()},
+        { "error_color_breeze", 
csc["active"]["view"].foreground(KCS::NegativeText).color()},
+
+        /*
+         * Backdrop (Inactive)
+         */
+
+        // General
+        { "theme_unfocused_fg_color_breeze", 
csc["inactive"]["window"].foreground(KCS::NormalText).color()},
+        { "theme_unfocused_text_color_breeze", 
csc["inactive"]["view"].foreground(KCS::NormalText).color()},
+        { "theme_unfocused_bg_color_breeze", 
csc["inactive"]["window"].background(KCS::NormalBackground).color()},
+        { "theme_unfocused_base_color_breeze", 
csc["inactive"]["view"].background(KCS::NormalBackground).color()},
+        { "theme_unfocused_selected_bg_color_alt_breeze", 
csc["inactive"]["selection"].background(KCS::NormalBackground).color()},
+        { "theme_unfocused_selected_bg_color_breeze", 
csc["inactive"]["selection"].background(KCS::NormalBackground).color()},
+        { "theme_unfocused_selected_fg_color_breeze", 
csc["inactive"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Button
+        { "theme_button_background_backdrop_breeze", 
csc["inactive"]["button"].background(KCS::NormalBackground).color()},
+        { "theme_button_decoration_hover_backdrop_breeze", 
csc["inactive"]["button"].decoration(KCS::HoverColor).color()},
+        { "theme_button_decoration_focus_backdrop_breeze", 
csc["inactive"]["button"].decoration(KCS::FocusColor).color()},
+        { "theme_button_foreground_backdrop_breeze", 
csc["inactive"]["button"].foreground(KCS::NormalText).color()},
+        { "theme_button_foreground_active_backdrop_breeze", 
csc["inactive"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Misc Colors
+        { "unfocused_borders_breeze", inactiveBordersColor},
+        { "warning_color_backdrop_breeze", 
csc["inactive"]["view"].foreground(KCS::NeutralText).color()},
+        { "success_color_backdrop_breeze", 
csc["inactive"]["view"].foreground(KCS::PositiveText).color()},
+        { "error_color_backdrop_breeze", 
csc["inactive"]["view"].foreground(KCS::NegativeText).color()},
+
+        /*
+         * Insensitive (Disabled)
+         */
+
+        // General
+        { 
"insensitive_fg_color_breeze",csc["disabled"]["window"].foreground(KCS::NormalText).color()},
+        { "insensitive_base_fg_color_breeze", 
csc["disabled"]["view"].foreground(KCS::NormalText).color()},
+        { "insensitive_bg_color_breeze", 
csc["disabled"]["window"].background(KCS::NormalBackground).color()},
+        { "insensitive_base_color_breeze", 
csc["disabled"]["view"].background(KCS::NormalBackground).color()},
+        { "insensitive_selected_bg_color_breeze", 
csc["disabled"]["selection"].background(KCS::NormalBackground).color()},
+        { "insensitive_selected_fg_color_breeze", 
csc["disabled"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Button
+        { "theme_button_background_insensitive_breeze", 
csc["disabled"]["button"].background(KCS::NormalBackground).color()},
+        { "theme_button_decoration_hover_insensitive_breeze", 
csc["disabled"]["button"].decoration(KCS::HoverColor).color()},
+        { "theme_button_decoration_focus_insensitive_breeze", 
csc["disabled"]["button"].decoration(KCS::FocusColor).color()},
+        { "theme_button_foreground_insensitive_breeze", 
csc["disabled"]["button"].foreground(KCS::NormalText).color()},
+        { "theme_button_foreground_active_insensitive_breeze", 
csc["disabled"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Misc Colors
+        { "insensitive_borders_breeze", disabledBordersColor},
+        { "warning_color_insensitive_breeze", 
csc["disabled"]["view"].foreground(KCS::NeutralText).color()},
+        { "success_color_insensitive_breeze", 
csc["disabled"]["view"].foreground(KCS::PositiveText).color()},
+        { "error_color_insensitive_breeze", 
csc["disabled"]["view"].foreground(KCS::NegativeText).color()},
+
+        /*
+         * Insensitive Backdrop (Inactive Disabled)
+         * These pretty much have the same appearance as regular inactive 
colors,
+         * but they're separate in case we decide to make them different in 
the future.
+         */
+
+        // General
+        { 
"insensitive_unfocused_fg_color_breeze",csc["disabled"]["window"].foreground(KCS::NormalText).color()},
+        { "theme_unfocused_view_text_color_breeze", 
csc["disabled"]["view"].foreground(KCS::NormalText).color()},
+        { "insensitive_unfocused_bg_color_breeze", 
csc["disabled"]["window"].background(KCS::NormalBackground).color()},
+        { "theme_unfocused_view_bg_color_breeze", 
csc["disabled"]["view"].background(KCS::NormalBackground).color()},
+        { "insensitive_unfocused_selected_bg_color_breeze", 
csc["disabled"]["selection"].background(KCS::NormalBackground).color()},
+        { "insensitive_unfocused_selected_fg_color_breeze", 
csc["disabled"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Button
+        { "theme_button_background_backdrop_insensitive_breeze", 
csc["disabled"]["button"].background(KCS::NormalBackground).color()},
+        { "theme_button_decoration_hover_backdrop_insensitive_breeze", 
csc["disabled"]["button"].decoration(KCS::HoverColor).color()},
+        { "theme_button_decoration_focus_backdrop_insensitive_breeze", 
csc["disabled"]["button"].decoration(KCS::FocusColor).color()},
+        { "theme_button_foreground_backdrop_insensitive_breeze", 
csc["disabled"]["button"].foreground(KCS::NormalText).color()},
+        { "theme_button_foreground_active_backdrop_insensitive_breeze", 
csc["disabled"]["selection"].foreground(KCS::NormalText).color()},
+
+        // Misc Colors
+        { "unfocused_insensitive_borders_breeze", 
unfocusedDisabledBordersColor},
+        { "warning_color_insensitive_backdrop_breeze", 
csc["disabled"]["view"].foreground(KCS::NeutralText).color()},
+        { "success_color_insensitive_backdrop_breeze", 
csc["disabled"]["view"].foreground(KCS::PositiveText).color()},
+        { "error_color_insensitive_backdrop_breeze", 
csc["disabled"]["view"].foreground(KCS::NegativeText).color()},
+
+        /*
+         * Ignorant Colors (These colors do not care about backdrop or 
insensitive states)
+         */
+
+        { "link_color_breeze", 
csc["active"]["view"].foreground(KCS::LinkText).color()},
+        { "link_visited_color_breeze", 
csc["active"]["view"].foreground(KCS::VisitedText).color()},
+
+        { "tooltip_text_breeze", tooltipForegroundColor},
+        { "tooltip_background_breeze", tooltipBackgroundColor},
+        { "tooltip_border_breeze", tooltipBorderColor},
+
+        { "content_view_bg_breeze", 
csc["active"]["view"].background(KCS::NormalBackground).color()},
+
+        { "theme_titlebar_background_breeze", 
windowManagerConfig.readEntry("activeBackground", QColor())},
+        { "theme_titlebar_foreground_breeze", 
windowManagerConfig.readEntry("activeForeground", QColor())},
+        { "theme_titlebar_background_light_breeze", 
csc["active"]["window"].background(KCS::NormalBackground).color()},
+        { "theme_titlebar_foreground_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+        { "theme_titlebar_background_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveBackground", QColor())},
+        { "theme_titlebar_foreground_insensitive_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+        { "theme_titlebar_foreground_insensitive_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+
+        // Titlebar colors
+        { "theme_titlebar_background_breeze", 
windowManagerConfig.readEntry("activeBackground", QColor())},
+        { "theme_titlebar_foreground_breeze", 
windowManagerConfig.readEntry("activeForeground", QColor())},
+        { "theme_titlebar_background_light_breeze", 
csc["active"]["window"].background(KCS::NormalBackground).color()},
+        { "theme_titlebar_foreground_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+        { "theme_titlebar_background_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveBackground", QColor())},
+        { "theme_titlebar_foreground_insensitive_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+        { "theme_titlebar_foreground_insensitive_backdrop_breeze", 
windowManagerConfig.readEntry("inactiveForeground", QColor())},
+    };
 }
 
 QString ConfigValueProvider::windowDecorationButtonsOrderInGtkNotation(const 
QString &kdeConfigValue) const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/configvalueprovider.h 
new/kde-gtk-config-5.19.0/kded/configvalueprovider.h
--- old/kde-gtk-config-5.18.5/kded/configvalueprovider.h        2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/configvalueprovider.h        2020-06-04 
13:08:39.000000000 +0200
@@ -28,28 +28,22 @@
 class ConfigValueProvider
 {
 public:
-    enum class ToolbarStyleNotation {
-        Xsettingsd = 0,
-        SettingsIni,
-        Dconf
-    };
-
     ConfigValueProvider();
 
     QString fontName() const;
     QString iconThemeName() const;
     QString cursorThemeName() const;
-    QString iconsOnButtons() const;
-    QString iconsInMenus() const;
-    QString toolbarStyle(ToolbarStyleNotation notation) const;
-    QString scrollbarBehavior() const;
-    QString preferDarkTheme() const;
+    bool iconsOnButtons() const;
+    bool iconsInMenus() const;
+    int toolbarStyle() const;
+    bool scrollbarBehavior() const;
+    bool preferDarkTheme() const;
     QString windowDecorationsButtonsOrder() const;
-    QString enableAnimations() const;
+    bool enableAnimations() const;
+    QMap<QString, QColor> colors() const;
 
 private:
     QString fontStyleHelper(const QFont &font) const;
-    QString toolbarStyleInDesiredNotation(const QString &kdeConfigValue, 
ToolbarStyleNotation notation) const;
     QString windowDecorationButtonsOrderInGtkNotation(const QString 
&kdeConfigValue) const;
 
     KSharedConfigPtr kdeglobalsConfig;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/gtkconfig.cpp 
new/kde-gtk-config-5.19.0/kded/gtkconfig.cpp
--- old/kde-gtk-config-5.18.5/kded/gtkconfig.cpp        2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/gtkconfig.cpp        2020-06-04 
13:08:39.000000000 +0200
@@ -24,9 +24,9 @@
 #include <QDBusMessage>
 #include <QGuiApplication>
 
-#include <KIconLoader>
 #include <KPluginFactory>
 #include <KConfigWatcher>
+#include <KColorScheme>
 
 #include "gtkconfig.h"
 #include "configvalueprovider.h"
@@ -39,24 +39,16 @@
     configValueProvider(new ConfigValueProvider()),
     themePreviewer(new ThemePreviewer(this)),
     
kdeglobalsConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kdeglobals")))),
-    
kwinConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kwinrc"))))
+    
kwinConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kwinrc")))),
+    
kcminputConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kcminputrc"))))
 {
     QDBusConnection dbus = QDBusConnection::sessionBus();
     dbus.registerService(QStringLiteral("org.kde.GtkConfig"));
     dbus.registerObject(QStringLiteral("/GtkConfig"), this, 
QDBusConnection::ExportScriptableSlots);
 
-    connect(qGuiApp, &QGuiApplication::fontChanged, this, &GtkConfig::setFont);
-    connect(KIconLoader::global(), &KIconLoader::iconChanged, this, 
&GtkConfig::setIconTheme);
     connect(kdeglobalsConfigWatcher.data(), &KConfigWatcher::configChanged, 
this, &GtkConfig::onKdeglobalsSettingsChange);
     connect(kwinConfigWatcher.data(), &KConfigWatcher::configChanged, this, 
&GtkConfig::onKWinSettingsChange);
-    dbus.connect(
-        QString(),
-        QStringLiteral("/KGlobalSettings"),
-        QStringLiteral("org.kde.KGlobalSettings"),
-        QStringLiteral("notifyChange"),
-        this,
-        SLOT(onGlobalSettingsChange(int,int))
-    );
+    connect(kcminputConfigWatcher.data(), &KConfigWatcher::configChanged, 
this, &GtkConfig::onKCMInputSettingsChange);
 
     ConfigEditor::removeLegacyGtk2Strings();
     applyAllSettings();
@@ -76,7 +68,7 @@
 
 void GtkConfig::setGtk3Theme(const QString &themeName) const
 {
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("gtk-theme"), 
themeName);
+    ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("gtk-theme"), 
themeName);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-theme-name"), 
themeName);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/ThemeName"),  
themeName);
 }
@@ -105,34 +97,32 @@
 {
     const QString configFontName = configValueProvider->fontName();
     ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-font-name"), 
configFontName);
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("font-name"), 
configFontName);
+    ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("font-name"), 
configFontName);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-font-name"), 
configFontName);
     ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/FontName"), 
 configFontName);
 }
 
-void GtkConfig::setIconTheme(int iconGroup) const
+void GtkConfig::setIconTheme() const
 {
-    if (iconGroup == KIconLoader::Group::Desktop) { // This is needed to 
update icons only once
-        const QString iconThemeName = configValueProvider->iconThemeName();
-        
ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-icon-theme-name"), 
iconThemeName);
-        ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("icon-theme"), 
iconThemeName);
-        
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-icon-theme-name"),
 iconThemeName);
-        
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/IconThemeName"), 
 iconThemeName);
-    }
+    const QString iconThemeName = configValueProvider->iconThemeName();
+    ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-icon-theme-name"), 
iconThemeName);
+    ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("icon-theme"), 
iconThemeName);
+    
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-icon-theme-name"),
 iconThemeName);
+    
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/IconThemeName"), 
 iconThemeName);
 }
 
 void GtkConfig::setCursorTheme() const
 {
     const QString cursorThemeName = configValueProvider->cursorThemeName();
     ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-cursor-theme-name"), 
cursorThemeName);
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("cursor-theme"), 
cursorThemeName);
+    ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("cursor-theme"), 
cursorThemeName);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-cursor-theme-name"),
 cursorThemeName);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/CursorThemeName"),
  cursorThemeName);
 }
 
 void GtkConfig::setIconsOnButtons() const
 {
-    const QString iconsOnButtonsConfigValue = 
configValueProvider->iconsOnButtons();
+    const bool iconsOnButtonsConfigValue = 
configValueProvider->iconsOnButtons();
     ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-button-images"), 
iconsOnButtonsConfigValue);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-button-images"),
 iconsOnButtonsConfigValue);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/ButtonImages"), 
iconsOnButtonsConfigValue);
@@ -140,7 +130,7 @@
 
 void GtkConfig::setIconsInMenus() const
 {
-    const QString iconsInMenusConfigValue = 
configValueProvider->iconsInMenus();
+    const bool iconsInMenusConfigValue = configValueProvider->iconsInMenus();
     ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-menu-images"), 
iconsInMenusConfigValue);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-menu-images"), 
iconsInMenusConfigValue);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/MenuImages"), 
iconsInMenusConfigValue);
@@ -148,21 +138,16 @@
 
 void GtkConfig::setToolbarStyle() const
 {
-    using ToolbarStyleNotation = ConfigValueProvider::ToolbarStyleNotation;
-
-    QString toolbarStyleSettingsIni = 
configValueProvider->toolbarStyle(ToolbarStyleNotation::SettingsIni);
-    QString toolbarStyleDConf = 
configValueProvider->toolbarStyle(ToolbarStyleNotation::Dconf);
-    QString toolbarStyleXSettingsd = 
configValueProvider->toolbarStyle(ToolbarStyleNotation::Xsettingsd);
-
-    ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-toolbar-style"), 
toolbarStyleSettingsIni);
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("toolbar-style"), 
toolbarStyleDConf);
-    
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-toolbar-style"),
 toolbarStyleSettingsIni);
-    
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/ToolbarStyle"),  
toolbarStyleXSettingsd);
+    const int toolbarStyle = configValueProvider->toolbarStyle();
+    ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-toolbar-style"), 
toolbarStyle);
+    
ConfigEditor::setGtk3ConfigValueGSettingsAsEnum(QStringLiteral("toolbar-style"),
 toolbarStyle);
+    
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-toolbar-style"),
 toolbarStyle);
+    
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/ToolbarStyle"), 
toolbarStyle);
 }
 
 void GtkConfig::setScrollbarBehavior() const
 {
-    const QString scrollbarBehavior = configValueProvider->scrollbarBehavior();
+    const bool scrollbarBehavior = configValueProvider->scrollbarBehavior();
     
ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-primary-button-warps-slider"),
 scrollbarBehavior);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-primary-button-warps-slider"),
 scrollbarBehavior);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/PrimaryButtonWarpsSlider"),
 scrollbarBehavior);
@@ -170,32 +155,37 @@
 
 void GtkConfig::setDarkThemePreference() const
 {
-    const QString preferDarkTheme = configValueProvider->preferDarkTheme();
+    const bool preferDarkTheme = configValueProvider->preferDarkTheme();
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-application-prefer-dark-theme"),
 preferDarkTheme);
 }
 
 void GtkConfig::setWindowDecorationsButtonsOrder() const
 {
     const QString windowDecorationsButtonOrder = 
configValueProvider->windowDecorationsButtonsOrder();
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("button-layout"), 
windowDecorationsButtonOrder, 
QStringLiteral("org.gnome.desktop.wm.preferences"));
+    ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("button-layout"), 
windowDecorationsButtonOrder, 
QStringLiteral("org.gnome.desktop.wm.preferences"));
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-decoration-layout"),
 windowDecorationsButtonOrder);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/DecorationLayout"),
 windowDecorationsButtonOrder);
 }
 
 void GtkConfig::setEnableAnimations() const
 {
-    const QString enableAnimations = configValueProvider->enableAnimations();
+    const bool enableAnimations = configValueProvider->enableAnimations();
     ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-enable-animations"), 
enableAnimations);
-    // FIXME work with booleans in configValueProvider...
-    ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("enable-animations"), 
enableAnimations == QLatin1String("1"));
+    
ConfigEditor::setGtk3ConfigValueGSettings(QStringLiteral("enable-animations"), 
enableAnimations);
     
ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-enable-animations"),
 enableAnimations);
     
ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Gtk/EnableAnimations"),
 enableAnimations);
 }
 
+void GtkConfig::setColors() const
+{
+    const QMap<QString, QColor> colors = configValueProvider->colors();
+    ConfigEditor::setGtk3Colors(colors);
+}
+
 void GtkConfig::applyAllSettings() const
 {
     setFont();
-    setIconTheme(KIconLoader::Group::Desktop);
+    setIconTheme();
     setCursorTheme();
     setIconsOnButtons();
     setIconsInMenus();
@@ -204,31 +194,40 @@
     setDarkThemePreference();
     setWindowDecorationsButtonsOrder();
     setEnableAnimations();
-}
-
-void GtkConfig::onGlobalSettingsChange(int settingsChangeType, int arg) const
-{
-    SettingsChangeType changeType = 
static_cast<SettingsChangeType>(settingsChangeType);
-    SettingsCategory settingsCategory = static_cast<SettingsCategory>(arg);
-
-    if (changeType == SettingsChangeType::Cursor) {
-        setCursorTheme();
-    } else if (changeType == SettingsChangeType::Settings && settingsCategory 
== SettingsCategory::Style) {
-        setIconsOnButtons();
-        setIconsInMenus();
-        setToolbarStyle();
-    } else if (changeType == SettingsChangeType::Settings && settingsCategory 
== SettingsCategory::Mouse) {
-        setScrollbarBehavior();
-    } else if (changeType == SettingsChangeType::Palette) {
-        setDarkThemePreference();
-    }
+    setColors();
 }
 
 void GtkConfig::onKdeglobalsSettingsChange(const KConfigGroup &group, const 
QByteArrayList &names) const
 {
-    if (group.name() == QLatin1String("KDE")
-            && names.contains(QByteArrayLiteral("AnimationDurationFactor"))) {
-        setEnableAnimations();
+    if (group.name() == QStringLiteral("KDE")) {
+        if (names.contains(QByteArrayLiteral("AnimationDurationFactor"))) {
+            setEnableAnimations();
+        }
+        if (names.contains(QByteArrayLiteral("ShowIconsInMenuItems"))) {
+            setIconsInMenus();
+        }
+        if (names.contains(QByteArrayLiteral("ShowIconsOnPushButtons"))) {
+            setIconsOnButtons();
+        }
+        if 
(names.contains(QByteArrayLiteral("ScrollbarLeftClickNavigatesByPage"))) {
+            setScrollbarBehavior();
+        }
+    } else if (group.name() == QStringLiteral("Icons")) {
+        if (names.contains(QByteArrayLiteral("Theme"))) {
+            setIconTheme();
+        }
+    } else if (group.name() == QStringLiteral("General")) {
+        if (names.contains(QByteArrayLiteral("font"))) {
+            setFont();
+        }
+        if (names.contains(QByteArrayLiteral("ColorScheme"))) {
+            setColors();
+            setDarkThemePreference();
+        }
+    } else if (group.name() == QStringLiteral("Toolbar style")) {
+        if (names.contains(QByteArrayLiteral("ToolButtonStyle"))) {
+            setToolbarStyle();
+        }
     }
 }
 
@@ -240,4 +239,13 @@
     }
 }
 
+void GtkConfig::onKCMInputSettingsChange(const KConfigGroup& group, const 
QByteArrayList& names) const
+{
+    if (group.name() == QStringLiteral("Mouse")
+            && names.contains("cursorTheme")) {
+        setCursorTheme();
+    }
+}
+
+
 #include "gtkconfig.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/gtkconfig.h 
new/kde-gtk-config-5.19.0/kded/gtkconfig.h
--- old/kde-gtk-config-5.18.5/kded/gtkconfig.h  2020-05-05 16:36:35.000000000 
+0200
+++ new/kde-gtk-config-5.19.0/kded/gtkconfig.h  2020-06-04 13:08:39.000000000 
+0200
@@ -33,35 +33,12 @@
     Q_OBJECT
     Q_CLASSINFO("D-Bus Interface", "org.kde.GtkConfig")
 
-    enum class SettingsChangeType {
-        Palette = 0,
-        Font,
-        Style,
-        Settings,
-        Icon,
-        Cursor,
-        ToolbarStyle,
-        BlockShortcuts,
-        NaturalSorting
-    };
-
-    enum class SettingsCategory {
-        Mouse,
-        Completion,
-        Paths,
-        Popupmenu,
-        Qt,
-        Shortcuts,
-        Locale,
-        Style
-    };
-
 public:
     GtkConfig(QObject *parent, const QVariantList& args);
     ~GtkConfig();
 
     void setFont() const;
-    void setIconTheme(int iconGroup) const;
+    void setIconTheme() const;
     void setCursorTheme() const;
     void setIconsOnButtons() const;
     void setIconsInMenus() const;
@@ -70,6 +47,7 @@
     void setDarkThemePreference() const;
     void setWindowDecorationsButtonsOrder() const;
     void setEnableAnimations() const;
+    void setColors() const;
 
     void applyAllSettings() const;
 
@@ -83,13 +61,14 @@
     Q_SCRIPTABLE void showGtk2ThemePreview(const QString &themeName) const;
     Q_SCRIPTABLE void showGtk3ThemePreview(const QString &themeName) const;
 
-    void onGlobalSettingsChange(int settingsChangeType, int arg) const;
     void onKdeglobalsSettingsChange(const KConfigGroup &group, const 
QByteArrayList &names) const;
     void onKWinSettingsChange(const KConfigGroup &group, const QByteArrayList 
&names) const;
+    void onKCMInputSettingsChange(const KConfigGroup &group, const 
QByteArrayList &names) const;
 
 private:
     QScopedPointer<ConfigValueProvider> configValueProvider;
     QScopedPointer<ThemePreviewer> themePreviewer;
     KConfigWatcher::Ptr kdeglobalsConfigWatcher;
     KConfigWatcher::Ptr kwinConfigWatcher;
+    KConfigWatcher::Ptr kcminputConfigWatcher;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kde-gtk-config-5.18.5/kded/gtkconfig.json 
new/kde-gtk-config-5.19.0/kded/gtkconfig.json
--- old/kde-gtk-config-5.18.5/kded/gtkconfig.json       2020-05-05 
16:36:35.000000000 +0200
+++ new/kde-gtk-config-5.19.0/kded/gtkconfig.json       2020-06-04 
13:08:39.000000000 +0200
@@ -1,62 +1,56 @@
 {
     "KPlugin": {
-        "Description": "GTK config management",
-        "Description[ca@valencia]": "Gestió de la configuració del GTK",
-        "Description[ca]": "Gestió de la configuració del GTK",
-        "Description[cs]": "Správa nastavení GTK",
-        "Description[da]": "Håndtering af GTK-config",
-        "Description[en_GB]": "GTK config management",
-        "Description[es]": "Gestión de configuración de GTK",
-        "Description[et]": "GTK seadistuste haldamine",
-        "Description[eu]": "GTK konfiguratzeko kudeaketa",
-        "Description[fi]": "GTK-asetusten hallinta",
-        "Description[fr]": "Gestion de la configuration GTK",
-        "Description[hu]": "GTK konfiguráció-kezelés",
-        "Description[ia]": "Gerente de configuration de GTK",
-        "Description[id]": "Pengelolaan konfig GTK",
-        "Description[it]": "Gestione della configurazione GTK",
-        "Description[ko]": "GTK 설정 관리",
-        "Description[lt]": "GTK konfigūracijos valdymas",
-        "Description[nl]": "GTK-configuratiebeheer",
-        "Description[nn]": "GTK-oppsetthandsaming",
-        "Description[pt]": "Gestão das configurações do GTK",
-        "Description[pt_BR]": "Gerenciamento das configurações do GTK",
-        "Description[ru]": "Управление конфигурацией GTK",
-        "Description[sk]": "GTK správa nastavení",
-        "Description[sv]": "GTK inställningshantering",
-        "Description[uk]": "Керування налаштуваннями GTK",
-        "Description[x-test]": "xxGTK config managementxx",
-        "Description[zh_CN]": "GTK 配置管理",
-        "Description[zh_TW]": "GTK 設定管理工具",
+        "Description": "Automatically applies settings to GNOME/GTK 
applications",
+        "Description[ca@valencia]": "Aplica automàticament la configuració a 
les aplicacions GNOME/GTK",
+        "Description[ca]": "Aplica automàticament la configuració a les 
aplicacions GNOME/GTK",
+        "Description[cs]": "Automaticky aplikuje nastavení na aplikace 
GNOME/GTK",
+        "Description[en_GB]": "Automatically applies settings to GNOME/GTK 
applications",
+        "Description[es]": "Aplica preferencias automáticamente a las 
aplicaciones de GNOME/GTK",
+        "Description[et]": "Seadistuste automaatne rakendamine GNOME/GTK 
rakendustele",
+        "Description[eu]": "GNOME/GTK aplikazioei ezarpenak automatikoki 
ezartzen dizkie",
+        "Description[fi]": "Ottaa asetukset automaattisesti käyttöön 
Gnome/Gtk-sovelluksissa",
+        "Description[fr]": "Applique automatiquement les paramètres aux 
applications GNOME/GTK",
+        "Description[id]": "Secara otomatis menerapkan pengaturan ke 
aplikasi-aplikasi GNOME/GTK",
+        "Description[it]": "Applica automaticamente le impostazioni alle 
applicazioni GNOME/GTK",
+        "Description[ko]": "자동으로 그놈/GTK 프로그램에 설정 적용",
+        "Description[lt]": "Automatiškai taiko nuostatas GNOME/GTK programoms",
+        "Description[nl]": "Automatisch toegepaste instellingen op GNOME/GTK 
toepassingen",
+        "Description[nn]": "Tek automatisk i bruk innstillingane på 
GNOME-/GTK-program",
+        "Description[pt]": "Aplica automaticamente as configurações nas 
aplicações do GNOME/GTK",
+        "Description[pt_BR]": "Aplica automaticamente as configurações aos 
aplicativos GNOME/GTK",
+        "Description[ru]": "Автоматическое применение изменений для приложений 
GNOME/GTK",
+        "Description[sk]": "Automaticky použije nastavenia pre GNOME/GTK 
aplikácie",
+        "Description[sv]": "Verkställer automatiskt inställningar för 
GNOME/GTK-program",
+        "Description[uk]": "Автоматично застосовує параметри до програм 
GNOME/GTK",
+        "Description[x-test]": "xxAutomatically applies settings to GNOME/GTK 
applicationsxx",
+        "Description[zh_CN]": "自动将设置应用到 GNOME/GTK 应用",
+        "Description[zh_TW]": "自動套用設定到 GNOME/GTK 應用程式",
         "Icon": "gtkconfig",
-        "Name": "Plasma GTKd",
-        "Name[ca@valencia]": "Plasma GTKd",
-        "Name[ca]": "Plasma GTKd",
-        "Name[cs]": "Plasma GTKd",
-        "Name[da]": "Plasma GTKd",
-        "Name[en_GB]": "Plasma GTKd",
-        "Name[es]": "Plasma GTKd",
-        "Name[et]": "Plasma GTKd",
-        "Name[eu]": "Plasma GTKd",
-        "Name[fi]": "Plasma GTKd",
-        "Name[fr]": "Plasma GTKd",
-        "Name[hu]": "Plasma GTKd",
-        "Name[ia]": "Plasma GTKd",
-        "Name[id]": "Plasma GTKd",
-        "Name[it]": "Plasma GTKd",
-        "Name[ko]": "Plasma GTKd",
-        "Name[lt]": "Plasma GTKd",
-        "Name[nl]": "Plasma GTKd",
-        "Name[nn]": "Plasma GTKd",
-        "Name[pt]": "GTKd do Plasma",
-        "Name[pt_BR]": "Plasma GTKd",
-        "Name[ru]": "Plasma GTKd",
-        "Name[sk]": "Plasma GTKd",
-        "Name[sv]": "Plasma GTKd",
-        "Name[uk]": "GTKd для Плазми",
-        "Name[x-test]": "xxPlasma GTKdxx",
-        "Name[zh_CN]": "Plasma GTKd",
-        "Name[zh_TW]": "Plasma GTKd",
+        "Name": "GNOME/GTK Settings Synchronization Service",
+        "Name[ca@valencia]": "Servei de sincronització de la configuració del 
GNOME/GTK",
+        "Name[ca]": "Servei de sincronització de la configuració del 
GNOME/GTK",
+        "Name[cs]": "Služba synchronizace nastavení GNOME/GTK",
+        "Name[en_GB]": "GNOME/GTK Settings Synchronisation Service",
+        "Name[es]": "Servicio de sincronización de preferencias de GNOME/GTK",
+        "Name[et]": "GNOME/GTK seadistuste sünkroonimise teenus",
+        "Name[eu]": "GNOME/GTK ezarpenak sinkronizatzeko zerbitzua",
+        "Name[fi]": "Gnome/Gtk-asetussynkronointipalvelu",
+        "Name[fr]": "Service de synchronisation des paramètres GNOME/GTK",
+        "Name[id]": "Layanan Sinkronisasi Pengaturan GNOME/GTK",
+        "Name[it]": "Servizio di sincronizzazione delle impostazioni 
GNOME/GTK",
+        "Name[ko]": "그놈/GTK 설정 동기화 서비스",
+        "Name[lt]": "GNOME/GTK nuostatų sinchronizavimo tarnyba",
+        "Name[nl]": "GNOME/GTK instellingen synchronisatieservice",
+        "Name[nn]": "GNOME/GTK-oppsettsynkronisering",
+        "Name[pt]": "Serviço de Sincronização das Configurações do GNOME/GTK",
+        "Name[pt_BR]": "Configuração do serviço de sincronização GNOME/GTK",
+        "Name[ru]": "Служба синхронизации параметров GNOME/GTK",
+        "Name[sk]": "Služba na synchronizáciu nastavení GNOME/GTK",
+        "Name[sv]": "Synkroniseringstjänst av GNOME/GTK inställningar",
+        "Name[uk]": "Служба синхронізації параметрів GNOME/GTK",
+        "Name[x-test]": "xxGNOME/GTK Settings Synchronization Servicexx",
+        "Name[zh_CN]": "GNOME/GTK 设置同步服务",
+        "Name[zh_TW]": "GNOME/GTK 設定同步服務",
         "ServiceTypes": [
             "KDEDModule"
         ],



Reply via email to