Commit 5250ab3b authored by Fabian Vogt's avatar Fabian Vogt
Browse files

Drop kconf_update module, handled by kde-gtk-config now

Summary: D26891 introduces a kconf_update script which achieves the same.

Test Plan:
Ran make, no kconf_update anymore.
Default theme is still Breeze.

Reviewers: #plasma, gikari, davidedmundson

Reviewed By: #plasma, gikari, davidedmundson

Subscribers: ngraham, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D26947
parent 5ec01168
......@@ -18,7 +18,6 @@ set_package_properties(Breeze PROPERTIES TYPE REQUIRED PURPOSE "Required to buil
include(KDEInstallDirs)
add_subdirectory(kconf_update)
add_subdirectory(src)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
find_package(Qt5 REQUIRED COMPONENTS Core)
include(KDEInstallDirs)
add_executable(gtkbreeze5.5 main.cpp)
target_link_libraries(gtkbreeze5.5 Qt5::Core)
install(TARGETS gtkbreeze5.5 DESTINATION ${LIB_INSTALL_DIR}/kconf_update_bin/)
install(FILES gtkbreeze5.5.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
Version=5
Id=GTKBreeze5.5
Script=gtkbreeze5.5
/*
Copyright 2014 Jonathan Riddell <jriddell@ubuntu.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
// Wee program to be run at login by kconf_update
// checks if gtk theme is set
// if not or if it is set to oxygen, update to new theme which matches breeze theme
#include <QCoreApplication>
#include <QStandardPaths>
#include <QDebug>
#include <QFile>
#include <QLoggingCategory>
#include <QSettings>
#include <QDir>
Q_DECLARE_LOGGING_CATEGORY(GTKBREEZE)
Q_LOGGING_CATEGORY(GTKBREEZE, "gtkbreeze")
/*
* returns whether a GTK 3 theme with the given name is installed
* themeName: Name of gtk 3 theme
*/
static bool isGTK3ThemeInstalled(QString themeName)
{
// Check that the theme contains a gtk-3.* subdirectory
QStringList gtk3SubdirPattern{QStringLiteral("gtk-3.*")};
foreach (const QString& themesDir, QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "themes", QStandardPaths::LocateDirectory)) {
QDir themeDir(themesDir + QDir::separator() + themeName);
if (!themeDir.entryList(gtk3SubdirPattern, QDir::Dirs).isEmpty()) {
return true;
}
}
return false;
}
/*
* returns a path to the installed gtk if it can be found
* themeName: gtk theme
* settingsFile: a file installed with the theme to set default options
*/
static QString gtk2ThemePath(QString themeName, QString settingsFile)
{
foreach (const QString& themesDir, QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "themes", QStandardPaths::LocateDirectory)) {
if (QFile::exists(themesDir + QDir::separator() + themeName + QDir::separator() + settingsFile)) {
return themesDir + QDir::separator() + themeName;
}
}
return {};
}
/*
* Check if gtk theme is already set to oxygen, BreezyGTK or Orion, if it is then we want to upgrade to the breeze theme
* gtkSettingsFile: filename to use
* settingsKey: ini group to read from
* returns: full path to settings file
*/
bool isGtkThemeSetToOldTheme(QString gtkSettingsFile, QString settingsKey)
{
QString home = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first();
QString gtkSettingsPath;
if (!gtkSettingsFile.startsWith(home)) {
gtkSettingsPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first() + QDir::separator() + gtkSettingsFile;
} else {
gtkSettingsPath = gtkSettingsFile;
}
qCDebug(GTKBREEZE) << "looking for" << gtkSettingsPath;
if (QFile::exists(gtkSettingsPath)) {
qCDebug(GTKBREEZE) << "found settings file" << gtkSettingsPath;
QSettings gtkrcSettings(gtkSettingsPath, QSettings::IniFormat);
if (!settingsKey.isNull()) {
gtkrcSettings.beginGroup(settingsKey);
}
//if it is set to Oxygen, BreezyGTK or Orion then we want to upgrade it to Breeze
if (gtkrcSettings.value("gtk-theme-name") == QLatin1String("oxygen-gtk")
|| gtkrcSettings.value("gtk-theme-name") == QLatin1String("BreezyGTK")
|| gtkrcSettings.value("gtk-theme-name") == QLatin1String("Orion")) {
qCDebug(GTKBREEZE) << "using oxygen, BreezyGTK or orion " << gtkrcSettings.value("gtk-theme-name");
return true;
} else {
return false;
}
}
//if it doesn't exist then we also want to upgrade it
return true;
}
/*
* Set gtk2 theme if no theme is set or if oxygen is set and gtk theme is installed
*/
int setGtk2()
{
const QString gtk2Theme = QStringLiteral("Breeze");
const QString gtkrc2path = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first() + QDir::separator() + QStringLiteral(".gtkrc-2.0");
const QString gtk2ThemeSettings = QStringLiteral("gtk-2.0/gtkrc"); // system installed file to check for
const QString gtkThemeDirectory = gtk2ThemePath(gtk2Theme, gtk2ThemeSettings);
if (gtkThemeDirectory.isEmpty()) {
qCDebug(GTKBREEZE) << "Breeze GTK 2 not found, quitting";
return 0;
}
qCDebug(GTKBREEZE) << "found gtktheme: " << gtkThemeDirectory;
bool needsUpdate = isGtkThemeSetToOldTheme(gtkrc2path, QString());
if (needsUpdate == false) {
qCDebug(GTKBREEZE) << "gtkrc2 already exists and is not using oxygen, BreezyGTK or orion, quitting";
return 0;
}
qCDebug(GTKBREEZE) << "no gtkrc2 file or oxygen/BreezyGTK/orion being used, setting to new theme";
QFile gtkrc2writer(gtkrc2path);
bool opened = gtkrc2writer.open(QIODevice::WriteOnly | QIODevice::Text);
if (!opened) {
qCWarning(GTKBREEZE) << "failed to open " << gtkrc2path;
return 1;
}
QTextStream out(&gtkrc2writer);
out << QStringLiteral("include \"") << gtkThemeDirectory << QStringLiteral("/gtk-2.0/gtkrc\"\n");
out << QStringLiteral("style \"user-font\"\n");
out << QStringLiteral("{\n");
out << QStringLiteral(" font_name=\"Noto Sans Regular\"\n");
out << QStringLiteral("}\n");
out << QStringLiteral("widget_class \"*\" style \"user-font\"\n");
out << QStringLiteral("gtk-cursor-theme-name=\"breeze_cursors\"\n");
out << QStringLiteral("gtk-font-name=\"Noto Sans Regular 10\"\n"); // matches plasma-workspace:startkde/startkde.cmake
out << QStringLiteral("gtk-theme-name=\"Breeze\"\n");
out << QStringLiteral("gtk-icon-theme-name=\"breeze\"\n");
out << QStringLiteral("gtk-fallback-icon-theme=\"gnome\"\n");
out << QStringLiteral("gtk-toolbar-style=GTK_TOOLBAR_ICONS\n");
out << QStringLiteral("gtk-menu-images=1\n");
out << QStringLiteral("gtk-button-images=1\n");
qCDebug(GTKBREEZE) << "gtk2rc written";
return 0;
}
/*
* Set gtk3 theme if no theme is set or if oxygen is set and gtk theme is installed
*/
int setGtk3()
{
const QString gtk3Theme = QStringLiteral("Breeze");
if (!isGTK3ThemeInstalled(gtk3Theme)) {
qCDebug(GTKBREEZE) << "not found, quitting";
return 0;
}
qCDebug(GTKBREEZE) << "found gtk3theme";
QString configPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
QString gtkrc3path = configPath + "/gtk-3.0/settings.ini";
bool needsUpdate = isGtkThemeSetToOldTheme(gtkrc3path, "Settings");
if ( !needsUpdate ) {
qCDebug(GTKBREEZE) << "gtkrc3 already exists and is not using oxygen/BreezyGTK/orion, quitting";
return 0;
}
QDir dir = QFileInfo(gtkrc3path).dir();
dir.mkpath(dir.path());
qCDebug(GTKBREEZE) << "no gtkrc3 file or oxygen/BreezyGTK/orion being used, setting to new theme";
QFile gtkrc3writer(gtkrc3path);
bool opened = gtkrc3writer.open(QIODevice::WriteOnly | QIODevice::Text);
if (!opened) {
qCWarning(GTKBREEZE) << "failed to open " << gtkrc3path;
return 1;
}
QTextStream out(&gtkrc3writer);
out << QStringLiteral("[Settings]\n");
out << QStringLiteral("gtk-cursor-theme-name=breeze_cursors\n");
out << QStringLiteral("gtk-font-name=Noto Sans 10\n"); // matches plasma-workspace:startkde/startkde.cmake
out << QStringLiteral("gtk-theme-name=")+gtk3Theme+QStringLiteral("\n");
out << QStringLiteral("gtk-icon-theme-name=breeze\n");
out << QStringLiteral("gtk-fallback-icon-theme=gnome\n");
out << QStringLiteral("gtk-toolbar-style=GTK_TOOLBAR_ICONS\n");
out << QStringLiteral("gtk-menu-images=1\n");
out << QStringLiteral("gtk-button-images=1\n");
out << QStringLiteral("gtk-primary-button-warps-slider=0\n");
qCDebug(GTKBREEZE) << "gtk3rc written";
return 0;
}
int main(/*int argc, char **argv*/)
{
QString home = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first();
int resultGTK2 = 0;
int resultGTK3 = 0;
resultGTK2 = setGtk2();
resultGTK3 = setGtk3();
return resultGTK2 | resultGTK3;
}
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