kde-gtk-config5/0001-Upgrade-theme-to-Breeze-GTK-on-startup.patch
Fabian Vogt e0fc0f7bd6 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
2020-01-28 18:30:24 +00:00

191 lines
6.2 KiB
Diff

From 969b72c57c81cc5a9be549dd0d501c9e6d2129cb Mon Sep 17 00:00:00 2001
From: Mikhail Zolotukhin <zomial@protonmail.com>
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 <zomial@protonmail.com>
+ *
+ * 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 <QString>
+
+#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