Commit d892dc2b authored by Mikhail Zolotukhin's avatar Mikhail Zolotukhin
Browse files

Upgrade theme to Breeze GTK on startup

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).

Also kded module updates config for theme on every start, if it is
empty.

Summary:
BUG: 416635
FIXED-IN: 5.18.0

Test Plan:

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D26891
parent 9f0a1b69
......@@ -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)
......
add_executable(gtk_theme gtktheme.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
gtkconfig.upd
DESTINATION
${KCONF_UPDATE_INSTALL_DIR}
)
Version=5
Id=gtk_theme
Script=gtk_theme
/*
* 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"));
}
}
......@@ -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);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment