diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ include(KDEInstallDirs) -add_subdirectory(kconf_update) add_subdirectory(src) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/kconf_update/CMakeLists.txt b/kconf_update/CMakeLists.txt deleted file mode 100644 --- a/kconf_update/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -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}) diff --git a/kconf_update/gtkbreeze5.5.upd b/kconf_update/gtkbreeze5.5.upd deleted file mode 100644 --- a/kconf_update/gtkbreeze5.5.upd +++ /dev/null @@ -1,3 +0,0 @@ -Version=5 -Id=GTKBreeze5.5 -Script=gtkbreeze5.5 diff --git a/kconf_update/main.cpp b/kconf_update/main.cpp deleted file mode 100644 --- a/kconf_update/main.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - Copyright 2014 Jonathan Riddell - - 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 . -*/ - -// 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 -#include -#include -#include -#include -#include -#include - -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(>krc2writer); - 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(>krc3writer); - 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; -}