I was able to solve the issue. The problem was that in addition to regular GNOME VFS daemon (/usr/libexec/gvfsd
, or /usr/lib/gvfs/gvfsd
in older versions of Ubuntu), there was another daemon used by gThumb up to Ubuntu 18.04 - /usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
. This daemon is not present anymore in Ubuntu 20.04, so the old gThumb is not able to access files/folders on disk. It was needed to copy the daemon to Ubuntu 20.04, so that the application can use it.
The full solution to make the application run is as follows (this is long and probably nobody except me is interested in this, but as I solved the problem I post an answer, maybe somebody in the future can use it :)):
(BTW. I suppose that all this can be made into an AppImage package, if I only knew how to do it :))
- create a directory for the old gThumb application, for example
/opt/gthumb_old
.
- from working installation of 64-bit Ubuntu 10.04, copy the following files to
/opt/gthumb_old
(I had such an installation available; in case it isn't available, you need to identify packages containing these files, download them and extract the files, which requires more work):
/usr/bin/gthumb
/usr/lib/gthumb/libgthumb.so
/usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so
/usr/lib/glade/2.0/libbonobo.so
/usr/lib/glade/2.0/libcanvas.so
/usr/lib/glade/2.0/libgnome.so
/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
/usr/lib/libart_lgpl_2.so.2
/usr/lib/libaudiofile.so.0
/usr/lib/libbonobo-2.so.0
/usr/lib/libbonobo-activation.so.4
/usr/lib/libbonoboui-2.so.0
/usr/lib/libcanberra-gtk.so.0
/usr/lib/libcanberra.so.0
/usr/lib/libesd.so.0
/usr/lib/libfam.so.0
/lib/libgcrypt.so.11
/usr/lib/libglade-2.0.so.0
/usr/lib/libgnome-2.so.0
/usr/lib/libgnomecanvas-2.so.0
/usr/lib/libgnome-keyring.so.0
/usr/lib/libgnomeui-2.so.0
/usr/lib/libgnomevfs-2.so.0
/usr/lib/libgnutls.so.26
/usr/lib/libhal-storage.so.1
/usr/lib/libhal.so.1
/usr/lib/libiptcdata.so.0
/usr/lib/libopenrawgnome.so.1
/usr/lib/libopenraw.so.1
/usr/lib/libORBit-2.so.0
/usr/lib/libORBitCosNaming-2.so.0
/lib/libpng12.so.0
/usr/lib/libtasn1.so.3
/usr/lib/libtiff.so.4
The above /usr/lib/*.so.*
or /lib/*.so.*
files are symlinks to other files, so you have of course to copy the file the link points to, but the target name should be the one of the link. (If you use cp
or scp
to copy the above names, you don't have to worry about this, as this happens automatically.)
You need also to symlink /usr/lib/x86_64-linux-gnu/libjpeg.so.8
to libjpeg.so.62
in /opt/gthumb_old
. The application expects to link to libjpeg.so.62
but the original libjpeg.so.62
library copied from Ubuntu 10.04 does not work properly and JPEG files are not displayed; so we will use the present system library instead.
create a directory /opt/gthumb_old/glade
and copy contents of /usr/share/gthumb/glade
from Ubuntu 10.04 installation to this directory.
create a directory /opt/gthumb_old/modules
and copy contents of /usr/lib/gthumb/modules
from Ubuntu 10.04 installation to this directory.
create a directory /opt/gthumb_old/vfs_modules
and copy contents of /usr/lib/gnome-vfs-2.0/modules
from Ubuntu 10.04 installation to this directory.
create a directory /opt/gthumb_old/modules_conf
and copy contents of /etc/gnome-vfs-2.0/modules
from Ubuntu 10.04 installation to this directory.
create a subdirectory .gtk-2.0/x86_64-pc-linux-gnu/engines
in your /home/username
directory and copy the file /usr/lib/gtk-2.0/2.10.0/engines/libmurrine.so
from Ubuntu 10.04 to this directory. This is needed for menus and other UI gadgets to be displayed correctly (the application will work without this file, but the UI will be distorted a bit). If you don't have Adobe Reader 9 installed (the last available version for Linux), you can skip the intermediate x86_64-pc-linux-gnu
subdirectory and put the file just in .gtk-2.0/engines
. But if you have Adobe Reader installed (like I do), it needs a 32-bit version of the file libmurrine.so
, which should be located in .gtk-2.0/i686-pc-linux-gnu/engines
, therefore it is better to use the "longer" version.
create a symlink /usr/share/gthumb/glade
pointing to /opt/gthumb_old/glade
.
create a symlink /usr/lib/gthumb/modules
pointing to /opt/gthumb_old/modules
(the directory /usr/lib/gthumb
does not exist in standard installation of Ubuntu 20.04, so you have to create it first)
create a symlink /usr/lib/gnome-vfs-2.0/modules
pointing to /opt/gthumb_old/vfs_modules
(the directory /usr/lib/gnome-vfs-2.0
does not exist in standard installation of Ubuntu 20.04, so you have to create it first)
create a symlink /etc/gnome-vfs-2.0/modules
pointing to /opt/gthumb_old/modules_conf
(the directory /etc/gnome-vfs-2.0
does not exist in standard installation of Ubuntu 20.04, so you have to create it first)
create a script /opt/gthumb_old/gvfsd_wrapper
with the following contents (the file must be executable):
#!/bin/sh
GVFSD_DIR=`/usr/bin/dirname $0`
LD_LIBRARY_PATH=${GVFSD_DIR} ${GVFSD_DIR}/gnome-vfs-daemon
- copy the file
/usr/share/dbus-1/services/gnome-vfs-daemon.service
from Ubuntu 10.04 to the same directory on Ubuntu 20.04 (/usr/share/dbus-1/services
), then edit it as follows. The original file has the following contents:
[D-BUS Service]
Name=org.gnome.GnomeVFS.Daemon
Exec=/usr/lib/gnome-vfs-2.0/gnome-vfs-daemon
Change it to:
[D-BUS Service]
Name=org.gnome.GnomeVFS.Daemon
Exec=/opt/gthumb_old/gvfsd_wrapper
- Finally, create a script
/usr/local/bin/gthumb_old
to run the application:
#!/bin/sh
LD_LIBRARY_PATH=/opt/gthumb_old /opt/gthumb_old/gthumb
(you can also create a launcher in menu or GNOME panel referring to this script).
The application does not conflict with the existing gThumb 3.8.0 from Ubuntu 20.04 as it stores its configuration data in a different place. Both can be used independently, but there is one possible problem described below.
Note that the application crashes in an image directory that has a .comments
subdirectory containing comments created by newer version of gThumb. So in case when the application crashes after entering some directory, you should delete the .comments
subdir.
I also found a strange case with two particular image files (out of several thousand I have). The application crashed in a directory that contained symlinks to these two files that were in another directory (when I replaced the symlinks with copies of the files or hard links, there was no crash - it happened on those two files only). If you don't have any symlinks in your image dirs, this problem should not appear.
Final screenshot of the working application:
![enter image description here](https://i.stack.imgur.com/pHN7v.png)