kde-gtk-config: set GSettings schemas path

This commit is contained in:
Thomas Tuegel 2020-08-31 10:59:35 -05:00
parent 81b770fc8c
commit 69ec9ed4e6
No known key found for this signature in database
GPG Key ID: 22CBF5249D4B4D59
2 changed files with 24 additions and 0 deletions

View File

@ -0,0 +1,21 @@
diff --git a/kded/gtkconfig.cpp b/kded/gtkconfig.cpp
index 5303636..199c4d5 100644
--- a/kded/gtkconfig.cpp
+++ b/kded/gtkconfig.cpp
@@ -41,6 +41,16 @@ GtkConfig::GtkConfig(QObject *parent, const QVariantList&) :
kdeglobalsConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kdeglobals")))),
kwinConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kwinrc"))))
{
+ // Add GSETTINGS_SCHEMAS_PATH to the front of XDG_DATA_DIRS.
+ // Normally this would be done by wrapGAppsHook, but this plugin
+ // (shared object) cannot be wrapped.
+ QByteArray xdgdata = qgetenv("XDG_DATA_DIRS");
+ if (!xdgdata.isEmpty()) {
+ xdgdata.push_front(":");
+ }
+ xdgdata.push_front(QByteArray(GSETTINGS_SCHEMAS_PATH));
+ qputenv("XDG_DATA_DIRS", xdgdata);
+
QDBusConnection dbus = QDBusConnection::sessionBus();
dbus.registerService(QStringLiteral("org.kde.GtkConfig"));
dbus.registerObject(QStringLiteral("/GtkConfig"), this, QDBusConnection::ExportScriptableSlots);

View File

@ -18,6 +18,9 @@ mkDerivation {
"-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
"-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/"
];
# The gtkconfig KDED module will crash the daemon if the GSettings schemas
# aren't found.
patches = [ ./0001-gsettings-schemas-path.patch ];
preConfigure = ''
NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\""
'';