Skip to content

Commit 7d08f81

Browse files
committed
Settings: removes direct XFConf support in favor of DBus backend
1 parent 8822653 commit 7d08f81

File tree

4 files changed

+52
-70
lines changed

4 files changed

+52
-70
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
run: uname -a
3939

4040
- name: configure project
41-
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_DRM_AMDGPU=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_XFCONF=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OPENCL=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_ELF=OFF -DENABLE_DIRECTX_HEADERS=OFF -DENABLE_THREADS=OFF
41+
run: cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr . -DENABLE_VULKAN=OFF -DENABLE_WAYLAND=OFF -DENABLE_XCB_RANDR=OFF -DENABLE_XCB=OFF -DENABLE_XRANDR=OFF -DENABLE_X11=OFF -DENABLE_DRM=OFF -DENABLE_DRM_AMDGPU=OFF -DENABLE_GIO=OFF -DENABLE_DCONF=OFF -DENABLE_DBUS=OFF -DENABLE_SQLITE3=OFF -DENABLE_RPM=OFF -DENABLE_IMAGEMAGICK7=OFF -DENABLE_IMAGEMAGICK6=OFF -DENABLE_CHAFA=OFF -DENABLE_ZLIB=OFF -DENABLE_EGL=OFF -DENABLE_GLX=OFF -DENABLE_OPENCL=OFF -DENABLE_FREETYPE=OFF -DENABLE_PULSE=OFF -DENABLE_DDCUTIL=OFF -DENABLE_ELF=OFF -DENABLE_DIRECTX_HEADERS=OFF -DENABLE_THREADS=OFF
4242

4343
- name: build project
4444
run: cmake --build . --target package --verbose -j4
@@ -83,7 +83,7 @@ jobs:
8383
run: cat /proc/cpuinfo
8484

8585
- name: install required packages
86-
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev libddcutil-dev directx-headers-dev
86+
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev libddcutil-dev directx-headers-dev
8787

8888
- name: install linuxbrew packages
8989
run: |
@@ -152,7 +152,7 @@ jobs:
152152
run: cat /proc/cpuinfo
153153

154154
- name: install required packages
155-
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev libchafa-dev libddcutil-dev rpm
155+
run: sudo apt-get update && sudo apt-get install -y libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev libchafa-dev libddcutil-dev rpm
156156

157157
- name: install linuxbrew packages
158158
run: |
@@ -216,7 +216,7 @@ jobs:
216216
# CMake installed by apt has bug `list sub-command REMOVE_ITEM requires two or more arguments`
217217
wget --no-check-certificate https://apt.kitware.com/ubuntu/pool/main/c/cmake/{cmake_3.29.2-0kitware1ubuntu20.04.1_armhf.deb,cmake-data_3.29.2-0kitware1ubuntu20.04.1_all.deb}
218218
dpkg -i *.deb
219-
apt-get install -y make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev rpm
219+
apt-get install -y make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev rpm
220220
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
221221
cmake --build . --target package --verbose -j4
222222
./fastfetch --list-features
@@ -252,7 +252,7 @@ jobs:
252252
run: |
253253
uname -a
254254
apt-get update && apt-get install -y wget
255-
apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev rpm
255+
apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libelf-dev directx-headers-dev rpm
256256
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
257257
cmake --build . --target package --verbose -j4
258258
./fastfetch --list-features
@@ -287,7 +287,7 @@ jobs:
287287
githubToken: ${{ github.token }}
288288
run: |
289289
uname -a
290-
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev libelf-dev directx-headers-dev rpm
290+
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libddcutil-dev libchafa-dev libelf-dev directx-headers-dev rpm
291291
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
292292
cmake --build . --target package --verbose -j4
293293
./fastfetch --list-features
@@ -322,7 +322,7 @@ jobs:
322322
githubToken: ${{ github.token }}
323323
run: |
324324
uname -a
325-
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libchafa-dev libelf-dev directx-headers-dev rpm
325+
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libchafa-dev libelf-dev directx-headers-dev rpm
326326
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
327327
cmake --build . --target package --verbose -j4
328328
./fastfetch --list-features
@@ -357,7 +357,7 @@ jobs:
357357
githubToken: ${{ github.token }}
358358
run: |
359359
uname -a
360-
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libxfconf-0-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libchafa-dev libelf-dev directx-headers-dev rpm
360+
apt-get update && apt-get install -y cmake make g++ libvulkan-dev libwayland-dev libxrandr-dev libxcb-randr0-dev libdconf-dev libdbus-1-dev libmagickcore-dev libsqlite3-dev librpm-dev libegl-dev libglx-dev ocl-icd-opencl-dev libpulse-dev libdrm-dev libchafa-dev libelf-dev directx-headers-dev rpm
361361
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DCMAKE_INSTALL_PREFIX=/usr .
362362
cmake --build . --target package --verbose -j4
363363
./fastfetch --list-features
@@ -386,7 +386,7 @@ jobs:
386386
run: |
387387
cat /etc/alpine-release
388388
uname -a
389-
apk add cmake samurai vulkan-loader-dev libxcb-dev libxrandr-dev rpm-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev xfconf-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev elfutils-dev gcc g++
389+
apk add cmake samurai vulkan-loader-dev libxcb-dev libxrandr-dev rpm-dev wayland-dev libdrm-dev dconf-dev imagemagick-dev chafa-dev zlib-dev dbus-dev mesa-dev opencl-dev sqlite-dev networkmanager-dev pulseaudio-dev ddcutil-dev elfutils-dev gcc g++
390390
shell: alpine.sh --root {0}
391391

392392
- name: build
@@ -560,7 +560,7 @@ jobs:
560560
run: |
561561
uname -a
562562
sudo pkg update
563-
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf egl opencl ocl-icd v4l_compat chafa
563+
sudo pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl egl opencl ocl-icd v4l_compat chafa
564564
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
565565
cmake --build . --target package --verbose -j4
566566
./fastfetch --list-features
@@ -596,7 +596,7 @@ jobs:
596596
version: '7.7'
597597
run: |
598598
uname -a
599-
sudo pkg_add -r cmake git pkgconf wayland vulkan-headers vulkan-loader glib2 dconf dbus sqlite3 xfconf imagemagick chafa
599+
sudo pkg_add -r cmake git pkgconf wayland vulkan-headers vulkan-loader glib2 dconf dbus sqlite3 imagemagick chafa
600600
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .
601601
cmake --build . --target package --verbose -j4
602602
./fastfetch --list-features
@@ -665,7 +665,7 @@ jobs:
665665
prepare: |
666666
uname -a
667667
pkg update
668-
pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl xfce4-conf egl opencl ocl-icd v4l_compat chafa libelf
668+
pkg install -y cmake git pkgconf binutils wayland vulkan-headers vulkan-loader libxcb libXrandr libX11 libdrm glib dconf dbus sqlite3-tcl egl opencl ocl-icd v4l_compat chafa libelf
669669
670670
run: |
671671
cmake -DSET_TWEAK=Off -DBUILD_TESTS=On -DENABLE_EMBEDDED_PCIIDS=On -DENABLE_EMBEDDED_AMDGPUIDS=On .

CMakeLists.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ cmake_dependent_option(ENABLE_DRM_AMDGPU "Enable libdrm_amdgpu" ON "LINUX OR Fre
6767
cmake_dependent_option(ENABLE_GIO "Enable gio-2.0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
6868
cmake_dependent_option(ENABLE_DCONF "Enable dconf" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
6969
cmake_dependent_option(ENABLE_DBUS "Enable dbus-1" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR Haiku OR GNU" OFF)
70-
cmake_dependent_option(ENABLE_XFCONF "Enable libxfconf-0" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR ANDROID OR SunOS OR GNU" OFF)
7170
cmake_dependent_option(ENABLE_SQLITE3 "Enable sqlite3" ON "LINUX OR FreeBSD OR APPLE OR OpenBSD OR NetBSD OR SunOS OR GNU" OFF)
7271
cmake_dependent_option(ENABLE_RPM "Enable rpm" ON "LINUX OR GNU" OFF)
7372
cmake_dependent_option(ENABLE_IMAGEMAGICK7 "Enable imagemagick 7" ON "LINUX OR FreeBSD OR OpenBSD OR NetBSD OR APPLE OR ANDROID OR WIN32 OR SunOS OR Haiku OR GNU" OFF)
@@ -1539,10 +1538,6 @@ ff_lib_enable(DBUS
15391538
"dbus-1"
15401539
"DBus"
15411540
)
1542-
ff_lib_enable(XFCONF
1543-
"libxfconf-0"
1544-
"XFConf"
1545-
)
15461541
ff_lib_enable(SQLITE3
15471542
"sqlite3"
15481543
"SQLite3"

src/common/init.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ void ffListFeatures(void)
208208
#if FF_HAVE_ZLIB
209209
"zlib\n"
210210
#endif
211-
#if FF_HAVE_XFCONF
212-
"xfconf\n"
213-
#endif
214211
#if FF_HAVE_SQLITE3
215212
"sqlite3\n"
216213
#endif

src/common/settings.c

Lines changed: 40 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -196,77 +196,67 @@ FFvariant ffSettingsGet(const char* dconfKey, const char* gsettingsSchemaName, c
196196
return ffSettingsGetDConf(dconfKey, type);
197197
}
198198

199-
#ifdef FF_HAVE_XFCONF
200-
#include <xfconf/xfconf.h>
201-
202-
typedef struct XFConfData
203-
{
204-
FF_LIBRARY_SYMBOL(xfconf_channel_get)
205-
FF_LIBRARY_SYMBOL(xfconf_channel_has_property)
206-
FF_LIBRARY_SYMBOL(xfconf_channel_get_string)
207-
FF_LIBRARY_SYMBOL(xfconf_channel_get_bool)
208-
FF_LIBRARY_SYMBOL(xfconf_channel_get_int)
209-
FF_LIBRARY_SYMBOL(xfconf_init)
210-
211-
bool inited;
212-
} XFConfData;
213-
214-
static const XFConfData* getXFConfData(void)
215-
{
216-
static XFConfData data;
217-
218-
if (!data.inited)
219-
{
220-
data.inited = true;
221-
FF_LIBRARY_LOAD(libxfconf, NULL, "libxfconf-0" FF_LIBRARY_EXTENSION, 4);
222-
223-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_channel_get, NULL)
224-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_channel_has_property, NULL)
225-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_channel_get_string, NULL)
226-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_channel_get_bool, NULL)
227-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_channel_get_int, NULL)
228-
FF_LIBRARY_LOAD_SYMBOL_VAR(libxfconf, data, xfconf_init, NULL)
229-
if(!data.ffxfconf_init(NULL))
230-
data.ffxfconf_init = NULL;
231-
else
232-
libxfconf = NULL;
233-
}
234-
235-
if(!data.ffxfconf_init)
236-
return NULL;
237-
238-
return &data;
239-
}
199+
#ifdef FF_HAVE_DBUS
200+
#include "common/dbus.h"
240201

241202
FFvariant ffSettingsGetXFConf(const char* channelName, const char* propertyName, FFvarianttype type)
242203
{
243-
const XFConfData* data = getXFConfData();
244-
if(data == NULL)
204+
FFDBusData dbus;
205+
if (ffDBusLoadData(DBUS_BUS_SESSION, &dbus) != NULL)
245206
return FF_VARIANT_NULL;
246207

247-
XfconfChannel* channel = data->ffxfconf_channel_get(channelName); // Never fails according to documentation but rather returns an empty channel
208+
DBusMessage* reply = ffDBusGetMethodReply(&dbus, "org.xfce.Xfconf", "/org/xfce/Xfconf", "org.xfce.Xfconf", "GetProperty", channelName, propertyName);
209+
if(!reply)
210+
return FF_VARIANT_NULL;
248211

249-
if(!data->ffxfconf_channel_has_property(channel, propertyName))
212+
DBusMessageIter rootIterator;
213+
if(!dbus.lib->ffdbus_message_iter_init(reply, &rootIterator))
214+
{
215+
dbus.lib->ffdbus_message_unref(reply);
250216
return FF_VARIANT_NULL;
217+
}
251218

252219
if(type == FF_VARIANT_TYPE_INT)
253-
return (FFvariant) {.intValue = data->ffxfconf_channel_get_int(channel, propertyName, 0)};
220+
{
221+
int32_t value;
222+
if (ffDBusGetInt(&dbus, &rootIterator, &value))
223+
{
224+
dbus.lib->ffdbus_message_unref(reply);
225+
return (FFvariant) { .intValue = value };
226+
}
227+
return FF_VARIANT_NULL;
228+
}
254229

255230
if(type == FF_VARIANT_TYPE_STRING)
256-
return (FFvariant) {.strValue = data->ffxfconf_channel_get_string(channel, propertyName, NULL)};
231+
{
232+
FFstrbuf value = ffStrbufCreate();
233+
if (ffDBusGetString(&dbus, &rootIterator, &value))
234+
{
235+
dbus.lib->ffdbus_message_unref(reply);
236+
return (FFvariant) { .strValue = value.chars }; // Leaks value.chars
237+
}
238+
return FF_VARIANT_NULL;
239+
}
257240

258241
if(type == FF_VARIANT_TYPE_BOOL)
259-
return (FFvariant) {.boolValue = data->ffxfconf_channel_get_bool(channel, propertyName, false), .boolValueSet = true};
242+
{
243+
bool value;
244+
if (ffDBusGetBool(&dbus, &rootIterator, &value))
245+
{
246+
dbus.lib->ffdbus_message_unref(reply);
247+
return (FFvariant) { .boolValue = value, .boolValueSet = true };
248+
}
249+
}
260250

261251
return FF_VARIANT_NULL;
262252
}
263-
#else //FF_HAVE_XFCONF
253+
#else //FF_HAVE_DBUS
264254
FFvariant ffSettingsGetXFConf(const char* channelName, const char* propertyName, FFvarianttype type)
265255
{
266256
FF_UNUSED(channelName, propertyName, type)
267257
return FF_VARIANT_NULL;
268258
}
269-
#endif //FF_HAVE_XFCONF
259+
#endif //FF_HAVE_DBUS
270260

271261
#ifdef FF_HAVE_SQLITE3
272262
#include <sqlite3.h>

0 commit comments

Comments
 (0)