You are not logged in.
I have just noticed that obconf has gone from main repos. It is now in AUR. So I figured I would switch to using lxappearance-obconf-gtk3, on running it just seg faults [at least on my machine]. However all is not lost I can run and use lxappearance-obconf package which is gtk2.
It is a shame that obconf was removed from repos, but I guess it is to make room for all the hyprland toys ;-)
[mrgreen@arch ~]$ lxappearance
(lxappearance:22678): GLib-CRITICAL **: 10:41:42.690: g_utf8_collate: assertion 'str1 != NULL' failed
(lxappearance:22678): GLib-CRITICAL **: 10:41:42.690: g_utf8_collate: assertion 'str2 != NULL' failed
(lxappearance:22678): GLib-CRITICAL **: 10:41:42.691: g_utf8_collate: assertion 'str2 != NULL' failed
Segmentation fault (core dumped)Last edited by Mr Green (2025-04-03 09:00:48)
Mr Green
Offline
Please edit your topic title to actually describe your issue, which I assume is that lxappearance segfaults.
Sakura:-
Mobo: MSI MAG X570S TORPEDO MAX // Processor: AMD Ryzen 9 5950X @4.9GHz // GFX: AMD Radeon RX 5700 XT // RAM: 32GB (4x 8GB) Corsair DDR4 (@ 3000MHz) // Storage: 1x 3TB HDD, 6x 1TB SSD, 2x 120GB SSD, 1x 275GB M2 SSD
Making lemonade from lemons since 2015.
Offline
Sorry done!
Mr Green
Offline
https://wiki.archlinux.org/title/Core_d … _core_dump but it seems that it tries to compare empty strings of whatever - do you get the same w/ a fresh user account (assuming some bogus config file being parsed)?
Maybe also "strace -f lxappearance" to see what input is being processed here.
Online
Strace does give me a whole load of output which I have piped into a file...
https://gist.github.com/mrgreen3/6c816a … d73d5892bc
I did have to switch themes but it still does not run, where as obconf [which is currently installed] does.
Mr Green
Offline
So it reads /usr/share/themes/Clearlooks/openbox-3/themerc, fails to open every single /usr/share/themes/Clearlooks/openbox-3/*.xbm (I don't have such either), talks a bit to the X11 server and then segfaults.
The assertions beforehand
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/Adwaita/index.theme", O_RDONLY|O_CLOEXEC) = 11
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=3312, ...}) = 0
[pid 4021] read(11, "[Icon Theme]\nName=Adwaita\nCommen"..., 4096) = 3312
[pid 4021] read(11, "", 4096) = 0
[pid 4021] close(11) = 0
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/Adwaita/cursors", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
[pid 4021] getpeername(2, 0x7ffdd4dd69e0, [128]) = -1 ENOTSOCK (Socket operation on non-socket)
[pid 4021] futex(0x72aa4778afe8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
[pid 4021] ioctl(2, TCGETS, 0x7ffdd4dd69b0) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 4021] getpid() = 4021
[pid 4021] openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 11
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=3664, ...}) = 0
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=3664, ...}) = 0
[pid 4021] read(11, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 3664
[pid 4021] lseek(11, -2329, SEEK_CUR) = 1335
[pid 4021] read(11, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 2329
[pid 4021] close(11) = 0
[pid 4021] write(2, "\n(lxappearance:4021): GLib-CRITI"..., 102
(lxappearance:4021): GLib-CRITICAL **: 18:05:12.755: g_utf8_collate: assertion 'str1 != NULL' failed
) = 102
[pid 4021] access("/usr/share/icons", W_OK) = -1 EACCES (Permission denied)
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/Tango/index.theme", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/Tango/cursors", 0x7ffdd4dd6d00, 0) = -1 ENOENT (No such file or directory)
[pid 4021] access("/usr/share/icons", W_OK) = -1 EACCES (Permission denied)
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/breeze/index.theme", O_RDONLY|O_CLOEXEC) = 11
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=19372, ...}) = 0
[pid 4021] read(11, "[Icon Theme]\nName=Breeze\nName[ar"..., 4096) = 4096
[pid 4021] read(11, "ScaledDirectories=actions/16@2x,"..., 4096) = 4096
[pid 4021] read(11, "text=Applications\nType=Fixed\n\n#1"..., 4096) = 4096
[pid 4021] read(11, "_ANYWHERE_ELSE - Monochrome\n[dev"..., 4096) = 4096
[pid 4021] read(11, "r icons >!!!ONLY!!!< - DO_NOT_US"..., 4096) = 2988
[pid 4021] read(11, "", 4096) = 0
[pid 4021] close(11) = 0
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/breeze/cursors", 0x7ffdd4dd6d00, 0) = -1 ENOENT (No such file or directory)
[pid 4021] ioctl(2, TCGETS, 0x7ffdd4dd69b0) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 4021] getpid() = 4021
[pid 4021] write(2, "\n(lxappearance:4021): GLib-CRITI"..., 102
(lxappearance:4021): GLib-CRITICAL **: 18:05:12.755: g_utf8_collate: assertion 'str2 != NULL' failed
) = 102
[pid 4021] access("/usr/share/icons", W_OK) = -1 EACCES (Permission denied)
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/AdwaitaLegacy/index.theme", O_RDONLY|O_CLOEXEC) = 11
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=4045, ...}) = 0
[pid 4021] read(11, "[Icon Theme]\nName=AdwaitaLegacy\n"..., 4096) = 4045
[pid 4021] read(11, "", 4096) = 0
[pid 4021] close(11) = 0
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/AdwaitaLegacy/cursors", 0x7ffdd4dd6d00, 0) = -1 ENOENT (No such file or directory)
[pid 4021] access("/usr/share/icons", W_OK) = -1 EACCES (Permission denied)
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/wl-color-picker.png/index.theme", O_RDONLY|O_CLOEXEC) = -1 ENOTDIR (Not a directory)
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/wl-color-picker.png/cursors", 0x7ffdd4dd6d00, 0) = -1 ENOTDIR (Not a directory)
[pid 4021] access("/usr/share/icons", W_OK) = -1 EACCES (Permission denied)
[pid 4021] openat(AT_FDCWD, "/usr/share/icons/Tela-circle-green-light/index.theme", O_RDONLY|O_CLOEXEC) = 11
[pid 4021] fstat(11, {st_mode=S_IFREG|0644, st_size=7939, ...}) = 0
[pid 4021] read(11, "[Icon Theme]\nName=Tela circle gr"..., 4096) = 4096
[pid 4021] read(11, "16\nMinSize=16\nMaxSize=512\nType=S"..., 4096) = 3843
[pid 4021] read(11, "", 4096) = 0
[pid 4021] close(11) = 0
[pid 4021] newfstatat(AT_FDCWD, "/usr/share/icons/Tela-circle-green-light/cursors", 0x7ffdd4dd6d00, 0) = -1 ENOENT (No such file or directory)
[pid 4021] ioctl(2, TCGETS, 0x7ffdd4dd69b0) = -1 ENOTTY (Inappropriate ioctl for device)
[pid 4021] getpid() = 4021
[pid 4021] write(2, "\n(lxappearance:4021): GLib-CRITI"..., 102
(lxappearance:4021): GLib-CRITICAL **: 18:05:12.756: g_utf8_collate: assertion 'str2 != NULL' failed
) = 102
[pid 4021] getdents64(10, 0x5d5edfb77b30 /* 0 entries */, 32768) = 0
[pid 4021] close(10) = 0are from your cursor themes…
At least Adwaita is known to be "broken", https://bbs.archlinux.org/viewtopic.php … 1#p2082761 (script to complete cursor themes)
But idk whether that can really cause trouble *here*.
Did you check the coredump?
I start to doubt that the assertion is really what crashes lxappearance.
Online
I thought I would build from source [PKGBUILD] and get this
src/preview.c: In function 'preview_menu':
src/preview.c:146:15: error: implicit declaration of function 'cairo_xlib_surface_create'; did you mean 'cairo_image_surface_create'? [-Wimplicit-function-declaration]
146 | surface = cairo_xlib_surface_create(dpy,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| cairo_image_surface_create
src/preview.c:146:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
146 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:175:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
175 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:205:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
205 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:235:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
235 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:263:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
263 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:290:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
290 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:318:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
318 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:347:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
347 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:376:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
376 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c: In function 'preview_window':
src/preview.c:434:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
434 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:495:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
495 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:529:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
529 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:617:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
617 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:654:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
654 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:692:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
692 | surface = cairo_xlib_surface_create(dpy,
| ^
src/preview.c:716:13: error: assignment to 'cairo_surface_t *' {aka 'struct _cairo_surface *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
716 | surface = cairo_xlib_surface_create(dpy,
| ^
make[2]: *** [Makefile:667: src/src_obconf_la-preview.lo] Error 1
make[2]: Leaving directory '/home/mrgreen/Downloads/lxappearance-obconf-gtk3-main/src/lxappearance-obconf-0.2.3'
make[1]: *** [Makefile:732: all-recursive] Error 1
make[1]: Leaving directory '/home/mrgreen/Downloads/lxappearance-obconf-gtk3-main/src/lxappearance-obconf-0.2.3'
make: *** [Makefile:493: all] Error 2
==> ERROR: A failure occurred in build().
Aborting...Even tried obconf from AUR [which I know is not supported by Arch]
rc/main.c: In function ‘main’:
src/main.c:265:25: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
265 | xmlErrorPtr e = xmlGetLastError();
| ^~~~~~~~~~~~~~~
src/main.c:292:9: error: implicit declaration of function ‘moveresize_setup_tab’; did you mean ‘mouse_setup_tab’? [-Wimplicit-function-declaration]
292 | moveresize_setup_tab();
| ^~~~~~~~~~~~~~~~~~~~
| mouse_setup_tab
src/main.c:294:9: error: implicit declaration of function ‘desktops_setup_tab’; did you mean ‘desktops_setup_num’? [-Wimplicit-function-declaration]
294 | desktops_setup_tab();
| ^~~~~~~~~~~~~~~~~~
| desktops_setup_num
src/main.c: In function ‘obconf_show_main’:
src/main.c:356:9: warning: ‘gdk_screen_get_number’ is deprecated [-Wdeprecated-declarations]
356 | (sn_d, gdk_screen_get_number(gdk_display_get_default_screen
| ^
In file included from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
from /usr/include/gtk-3.0/gdk/gdk.h:32,
from /usr/include/gtk-3.0/gtk/gtk.h:30,
from src/main.h:27,
from src/main.c:20:
/usr/include/gtk-3.0/gdk/gdkscreen.h:56:14: note: declared here
56 | gint gdk_screen_get_number (GdkScreen *screen);
| ^~~~~~~~~~~~~~~~~~~~~
make[1]: *** [Makefile:811: src/obconf-main.o] Error 1
make[1]: Leaving directory '/home/mrgreen/.cache/yay/obconf/src/obconf-2.0.4'
make: *** [Makefile:1006: all-recursive] Error 1
==> ERROR: A failure occurred in build().
Aborting...
-> error making: obconf-exit status 4
-> Failed to install the following packages. Manual intervention is required:
obconf - exit status 4Might put a bug report in, if I still can log in ;-)...
Can go gdb route at some point but something seems broken, unless it is just me!
Mr Green
Offline
I'd say obconf is bitrot, http://git.openbox.org/?p=dana/obconf.git;a=summary
That's probably why it has been dropped into the AUR.
wiki.lxde.org is 404, afaiu the focus has shifted to lxqt.
However the lxqt config dialog currently seems to only span obconf… might as well try fluxbox ![]()
The build issues in obconf aren't wild, though.
diff -pru obconf-2.0.4/src/appearance.c obconf-2.0.4.patch/src/appearance.c
--- obconf-2.0.4/src/appearance.c 2025-04-02 15:31:29.634490956 +0200
+++ obconf-2.0.4.patch/src/appearance.c 2025-04-02 15:31:23.957803372 +0200
@@ -17,6 +17,7 @@
See the COPYING file for a copy of the GNU General Public License.
*/
+#include "ctype.h"
#include "main.h"
#include "tree.h"
#include "preview_update.h"
diff -pru obconf-2.0.4/src/desktops.h obconf-2.0.4.patch/src/desktops.h
--- obconf-2.0.4/src/desktops.h 2025-04-02 15:31:32.801169288 +0200
+++ obconf-2.0.4.patch/src/desktops.h 2025-04-02 15:31:23.957803372 +0200
@@ -24,5 +24,6 @@
void desktops_setup_num(GtkWidget *w);
void desktops_setup_names(GtkWidget *w);
+void desktops_setup_tab();
#endif
diff -pru obconf-2.0.4/src/main.c obconf-2.0.4.patch/src/main.c
--- obconf-2.0.4/src/main.c 2025-04-02 15:31:36.217848539 +0200
+++ obconf-2.0.4.patch/src/main.c 2025-04-02 15:31:23.961136718 +0200
@@ -26,6 +26,7 @@
#include "mouse.h"
#include "desktops.h"
#include "dock.h"
+#include "moveresize.h"
#include "preview_update.h"
#include "gettext.h"builds and executes here.
Online
As you have said obconf was dropped due to issues with gtk3 patch...
lxappearance-obconf-gtk3 might suffer the same fate.
obconf will build more likely because it is gtk2 based.
Fluxbox what is that? ;-)
obconf-qt is also fine, personally I open configs in vim....
Maybe something will happen upstream, one thing to note [if off topic] arch wiki will need to be updated.
Thanks for your help... x
Last edited by Mr Green (2025-04-02 17:06:46)
Mr Green
Offline
obconf-qt is also fine, personally I open configs in vim....
\o/
Please always remember to mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.
one thing to note [if off topic] arch wiki will need to be updated.
Done, thanks for the heads up.
Online