Fabian Vogt
e0fc0f7bd6
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
191 lines
6.2 KiB
Diff
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
|
|
|