You are not logged in.

#1 2025-04-01 09:40:36

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,929
Website

lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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

#2 2025-04-01 10:36:40

WorMzy
Administrator
From: Scotland
Registered: 2010-06-16
Posts: 13,237
Website

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

Please edit your topic title to actually describe your issue, which I assume is that lxappearance segfaults.

https://wiki.archlinux.org/title/Core_d … _core_dump


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

#3 2025-04-01 11:20:43

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,929
Website

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

Sorry done!


Mr Green

Offline

#4 2025-04-01 15:25:41

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 72,262

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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.

Offline

#5 2025-04-01 17:15:14

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,929
Website

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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

#6 2025-04-01 18:59:38

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 72,262

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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)                   = 0

are 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.

Offline

#7 2025-04-02 08:53:08

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,929
Website

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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 4

Might 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

#8 2025-04-02 13:32:32

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 72,262

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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 big_smile

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.

Offline

#9 2025-04-02 17:06:06

Mr Green
Forum Fellow
From: U.K.
Registered: 2003-12-21
Posts: 5,929
Website

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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

#10 2025-04-02 19:45:37

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 72,262

Re: lxappearance-obconf-gtk3 obconf removed from repos? [Solved]

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.

Offline

Board footer

Powered by FluxBB