From e0fc0f7bd66135fcb39b0d71a6490c493d74e5f0a5fedef5b6271378921b7dab Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Tue, 28 Jan 2020 18:30:24 +0000 Subject: [PATCH] Accepting request 767932 from home:Vogtinator:plasma5.18 Patch not merged yet, but needed for openQA. Part for breeze-gtk will follow once merged (mostly just cleanup) - Add patch to add kconf_update binary to set the initial config: * 0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch OBS-URL: https://build.opensuse.org/request/show/767932 OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/kde-gtk-config5?expand=0&rev=233 --- ...grade-theme-to-Breeze-GTK-on-startup.patch | 190 ++++++++++++++++++ kde-gtk-config5.changes | 6 + kde-gtk-config5.spec | 7 + 3 files changed, 203 insertions(+) create mode 100644 0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch diff --git a/0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch b/0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch new file mode 100644 index 0000000..3f0e456 --- /dev/null +++ b/0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch @@ -0,0 +1,190 @@ +From 969b72c57c81cc5a9be549dd0d501c9e6d2129cb Mon Sep 17 00:00:00 2001 +From: Mikhail Zolotukhin +Date: Mon, 27 Jan 2020 13:48:00 +0100 +Subject: [PATCH] Upgrade theme to Breeze GTK on startup + +Summary: +Also apply it, if the config is empty. This is a port of kconf_update +script from `breeze-gtk` repo, but this time it use gtkconfig kded +module methods to manipulate config (to avoid code duplication and to +write config to all possible configuration storages). + +BUG: 416635 +FIXED-IN: 5.18.0 + +Test Plan: +# Remove `gtk-theme-name=` line in `~/.gtkrc-2.0` file or change it to `BreezyGTK`, `Orion` or `oxygen-gtk` +# Run `gtk_theme` executable from `kconf_update` build directory. Line should appear/cahnge to `Breeze` +# Remove `gtk-theme-name=` line in `~/.config/gtk-3.0/settings.ini` file or change it to `BreezyGTK`, `Orion` or `oxygen-gtk` +# Run `gtk_theme` executable from `kconf_update` build directory. Line should appear/cahnge to `Breeze`, also it should be changed in dconf in `org.gnome.desktop.interface.gtk-theme` prefix and in `~/.config/xsettingsd/xsettingsd.conf` file (`Net/ThemeName "Breeze"` line) + +Reviewers: fvogt + +Subscribers: meven, plasma-devel + +Tags: #plasma + +Differential Revision: https://phabricator.kde.org/D26891 +--- + CMakeLists.txt | 1 + + kconf_update/CMakeLists.txt | 38 +++++++++++++++++++++++++ + kconf_update/gtk_theme.upd | 3 ++ + kconf_update/main.cpp | 56 +++++++++++++++++++++++++++++++++++++ + kded/configeditor.cpp | 4 +-- + 5 files changed, 100 insertions(+), 2 deletions(-) + create mode 100644 kconf_update/CMakeLists.txt + create mode 100644 kconf_update/gtk_theme.upd + create mode 100644 kconf_update/main.cpp + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 54be644..72aa16f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -28,6 +28,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake kded/config.h) + add_subdirectory(gtkproxies) + add_subdirectory(gtk3proxies) + add_subdirectory(kded) ++add_subdirectory(kconf_update) + + # add clang-format target for all our real source files + file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) +diff --git a/kconf_update/CMakeLists.txt b/kconf_update/CMakeLists.txt +new file mode 100644 +index 0000000..05a5490 +--- /dev/null ++++ b/kconf_update/CMakeLists.txt +@@ -0,0 +1,38 @@ ++add_executable(gtk_theme main.cpp) ++ ++target_sources(gtk_theme ++ PRIVATE ++ ../kded/configeditor.cpp ++) ++ ++target_link_libraries(gtk_theme ++ PRIVATE ++ Qt5::Core ++ KF5::ConfigCore ++ ${GIO2_LIBRARY} ++ ${GOBJECT2_LIBRARY} ++) ++ ++target_include_directories(gtk_theme ++ PRIVATE ++ ../kded/ ++ ${GTK3_INCLUDE_DIRS} ++) ++ ++target_compile_definitions(gtk_theme ++ PRIVATE ++ QT_NO_SIGNALS_SLOTS_KEYWORDS ++) ++ ++install( ++ TARGETS ++ gtk_theme ++ DESTINATION ++ ${LIB_INSTALL_DIR}/kconf_update_bin/ ++) ++install( ++ FILES ++ gtk_theme.upd ++ DESTINATION ++ ${KCONF_UPDATE_INSTALL_DIR} ++) +diff --git a/kconf_update/gtk_theme.upd b/kconf_update/gtk_theme.upd +new file mode 100644 +index 0000000..6214e77 +--- /dev/null ++++ b/kconf_update/gtk_theme.upd +@@ -0,0 +1,3 @@ ++Version=5 ++Id=gtk_theme ++Script=gtk_theme +diff --git a/kconf_update/main.cpp b/kconf_update/main.cpp +new file mode 100644 +index 0000000..bf9993c +--- /dev/null ++++ b/kconf_update/main.cpp +@@ -0,0 +1,56 @@ ++/* ++ * Copyright (C) 2020 Mikhail Zolotukhin ++ * ++ * 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 . ++ */ ++ ++#include ++ ++#include "configeditor.h" ++ ++void upgradeGtk2Theme(); ++void upgradeGtk3Theme(); ++ ++int main() { ++ upgradeGtk2Theme(); ++ upgradeGtk3Theme(); ++ return 0; ++} ++ ++void upgradeGtk2Theme() { ++ QString currentGtk2Theme = ConfigEditor::gtk2ConfigValue(QStringLiteral("gtk-theme-name")); ++ if (currentGtk2Theme.isEmpty() ++ || currentGtk2Theme == QStringLiteral("oxygen-gtk") ++ || currentGtk2Theme == QStringLiteral("BreezyGTK") ++ || currentGtk2Theme == QStringLiteral("Orion") ++ ) { ++ ConfigEditor::setGtk2ConfigValue(QStringLiteral("gtk-theme-name"), QStringLiteral("Breeze")); ++ } ++} ++ ++void upgradeGtk3Theme() { ++ QString currentGtk3Theme = ConfigEditor::gtk3ConfigValueSettingsIni(QStringLiteral("gtk-theme-name")); ++ if (currentGtk3Theme.isEmpty() ++ || currentGtk3Theme == QStringLiteral("oxygen-gtk") ++ || currentGtk3Theme == QStringLiteral("BreezyGTK") ++ || currentGtk3Theme == QStringLiteral("Orion") ++ ) { ++ ConfigEditor::setGtk3ConfigValueDconf(QStringLiteral("gtk-theme"), QStringLiteral("Breeze")); ++ ConfigEditor::setGtk3ConfigValueSettingsIni(QStringLiteral("gtk-theme-name"), QStringLiteral("Breeze")); ++ ConfigEditor::setGtk3ConfigValueXSettingsd(QStringLiteral("Net/ThemeName"), QStringLiteral("Breeze")); ++ } ++} +diff --git a/kded/configeditor.cpp b/kded/configeditor.cpp +index 244fe2c..3074f70 100644 +--- a/kded/configeditor.cpp ++++ b/kded/configeditor.cpp +@@ -109,7 +109,7 @@ QString ConfigEditor::gtk2ConfigValue(const QString& paramName) + } + } + +- return QStringLiteral("Breeze"); ++ return QString(); + } + + QString ConfigEditor::gtk3ConfigValueSettingsIni(const QString& paramName) +@@ -120,7 +120,7 @@ QString ConfigEditor::gtk3ConfigValueSettingsIni(const QString& paramName) + KSharedConfig::Ptr gtk3Config = KSharedConfig::openConfig(gtk3ConfigPath, KConfig::NoGlobals); + KConfigGroup group = gtk3Config->group(QStringLiteral("Settings")); + +- return group.readEntry(paramName, QStringLiteral("Breeze")); ++ return group.readEntry(paramName); + } + + +-- +2.23.0 + diff --git a/kde-gtk-config5.changes b/kde-gtk-config5.changes index 6d77f8a..ca6757e 100644 --- a/kde-gtk-config5.changes +++ b/kde-gtk-config5.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Jan 27 12:50:49 UTC 2020 - Fabian Vogt + +- Add patch to add kconf_update binary to set the initial config: + * 0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch + ------------------------------------------------------------------- Sat Jan 18 17:15:44 UTC 2020 - Fabian Vogt diff --git a/kde-gtk-config5.spec b/kde-gtk-config5.spec index e47a4c2..5ed6618 100644 --- a/kde-gtk-config5.spec +++ b/kde-gtk-config5.spec @@ -29,6 +29,8 @@ Source: https://download.kde.org/unstable/plasma/%{version}/kde-gtk-conf Source1: https://download.kde.org/unstable/plasma/%{version}/kde-gtk-config-%{version}.tar.xz.sig Source2: plasma.keyring %endif +# PATCH-FIX-UPSTREAM +Patch1: 0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch BuildRequires: extra-cmake-modules >= 0.0.9 BuildRequires: kf5-filesystem BuildRequires: xz @@ -92,6 +94,11 @@ the GTK3 application style from within the application style KCM %dir %{_kf5_sharedir}/kcm-gtk-module/ %{_kf5_sharedir}/kcm-gtk-module/preview.ui +%dir %{_kf5_sharedir}/kconf_update/ +%{_kf5_sharedir}/kconf_update/gtk_theme.upd +%dir %{_kf5_libdir}/kconf_update_bin/ +%{_kf5_libdir}/kconf_update_bin/gtk_theme + %files gtk2 %license COPYING* %{_kf5_libdir}/libexec/gtk_preview