Well it sure looks much more aesthetically pleasing now! Good job with the new Qt version!
There is a tricky situation with libraw: currently, it’s not actually being used from within the AppImage. Here is why. rawkit uses ctypes, and as discussed at that previous link, when python’s ctypes goes looking for the library file, it’s looking everywhere but inside the AppImage! The solution is to hard code the filename, instead of using ctypes.util.findlibrary(). This is the point at which the rawkit code needs to be changed: rawkit/bindings.py at ede197ae5235c022eb100ce7de2b921cbbbc993c · photoshell/rawkit · GitHub. I haven’t seen what the name of the libraw library is in your AppImage, but that line of code should be changed to something like
libraw = 'libraw.so.16'. The question is, how do we do that? Do we have to fork rawkit? Or is it easy for the AppImage build script to download the rawkit source, patch it, and then include it?
There is another problem too: it seems the AppImage is actually not self-contained in the sense that it can run code from outside itself. For example, when I run the AppImage on my main development machine it’s actually running newer Python code from my home directory. It can do that because my development code is on the python module search path. I don’t think the AppImage should be able to do that, personally. Is that something that can be changed? It might just be a matter of setting the environment variable PYTHONPATH to a default value? (As long as that doesn’t affect the host system!).
I stated earlier that the version of gstreamer bundled with the AppImage has a bug that means that it is unable to generate thumbnails for any video files. However I was perhaps wrong about that. The problem could be with PyGObject, not gstreamer. I realized it only now when adding additional version reporting to Rapid Photo Downloader when it starts up. Here are some combinations that do and do not work with respect to extracting video thumbnails:
- Ubuntu 16.04: Gstreamer 1.8.3 PyGObject 3.20.0 success
- Ubuntu 16.10: Gstreamer 1.8.3 PyGObject 3.22.0. failure
- Ubuntu 17.04: Gstreamer: 1.10.4 PyGObject: 3.22.0 failure
- Ubuntu 17.10: Gstreamer: 1.12.1 PyGObject: 3.24.1 success
- Fedora 24: Gstreamer: 1.8.3 PyGObject: 3.20.1 failure
- Fedora 25: Gstreamer: 1.10.4 PyGObject: 3.22.0 failure
- Korora 25 (Fedora derivative) Gstreamer: 1.10.4 PyGObject: 3.22.0 success
- LinuxMint 18.0 Gstreamer: 1.8.3 PyGObject: 3.20.0 failure
- LinuxMint 18.1: Gstreamer: 1.8.3 PyGObject: 3.20.0 failure
- openSUSE 42.2: Gstreamer: 1.8.3 PyGObject: 3.20.1 failure
- openSUSE Tumbleweed: Gstreamer: 1.12.0 PyGObject: 3.24.1 failure
- Debian 9: Gstreamer: 1.10.4 PyGObject: 3.22.0 success
As you can see, some combinations that work in one distro do not work in another. It’s difficult to understand how this makes sense, but perhaps some distros are applying a patch and others are not?
Regarding the unmount problem, a related problem is that GIO volume monitor is not always being informed that a new device has been mounted or unmounted either. To me that indicates something is not right with the GIO install in the AppImage. I’ve turned on some verbose debug messages relating to GIO that I had turned off some time ago, because they’re often too verbose. But they might help in this case.