Submission: immich plugin

Gilles Caulier caulier.gilles at gmail.com
Mon Oct 19 03:26:59 BST 2026


Hi Christian,

after to run the Immich Export, digiKam crash at end of the session:

Thread 1 "digikam" received signal SIGSEGV, Segmentation fault.
0x0000fffff3dd44e0 in QShortcutMap::removeShortcut(int, QObject*,
QKeySequence const&) () from /opt/qt6/lib/libQt6Gui.so.6
(gdb) bt
#0  0x0000fffff3dd44e0 in QShortcutMap::removeShortcut(int, QObject*,
QKeySequence const&) () at /opt/qt6/lib/libQt6Gui.so.6
#1  0x0000fffff441be58 in QWidget::releaseShortcut(int) () at
/opt/qt6/lib/libQt6Widgets.so.6
#2  0x0000fffff4560c18 in QLabelPrivate::clearContents() () at
/opt/qt6/lib/libQt6Widgets.so.6
#3  0x0000fffff4560ca8 in QLabel::~QLabel() () at
/opt/qt6/lib/libQt6Widgets.so.6
#4  0x0000fffff4560d38 in QLabel::~QLabel() () at
/opt/qt6/lib/libQt6Widgets.so.6
#5  0x0000fffff32a2664 in QObjectPrivate::deleteChildren() () at
/opt/qt6/lib/libQt6Core.so.6
#6  0x0000fffff442fef0 in QWidget::~QWidget() () at
/opt/qt6/lib/libQt6Widgets.so.6
#7  0x0000ffff8cbf1e70 in
DigikamGenericImmichPlugin::ImmichWindow::~ImmichWindow
(this=0xaaaaca7f7db0)
   at /home/gilles/Devel/immich-digikam/plugin/immichwindow.cpp:805
#8  0x0000ffff8cbf1e9c in
DigikamGenericImmichPlugin::ImmichWindow::~ImmichWindow
(this=0xaaaaca7f7db0)
   at /home/gilles/Devel/immich-digikam/plugin/immichwindow.cpp:805
#9  0x0000ffff8cbc3248 in
DigikamGenericImmichPlugin::ImmichPlugin::~ImmichPlugin
(this=0xaaaac283c020)
   at /home/gilles/Devel/immich-digikam/plugin/immichplugin.cpp:37
#10 0x0000ffff8cbc32ac in
DigikamGenericImmichPlugin::ImmichPlugin::~ImmichPlugin
(this=0xaaaac283c020)
   at /home/gilles/Devel/immich-digikam/plugin/immichplugin.cpp:39
#11 0x0000fffff356056c in
QLibraryPrivate::unload(QLibraryPrivate::UnloadFlag) () at
/opt/qt6/lib/libQt6Core.so.6
#12 0x0000fffff3560948 in (anonymous
namespace)::qlibraryCleanup_dtor_class_::~qlibraryCleanup_dtor_class_() ()
at /opt/qt6/lib/libQt6Core.so.6
#13 0x0000fffff2c2aca0 in __cxa_finalize (d=0xfffff37e0000) at
./stdlib/cxa_finalize.c:97
#14 0x0000fffff3186800 [PAC] in __do_global_dtors_aux () at
/opt/qt6/lib/libQt6Core.so.6
#15 0x0000fffff7fbeda8 [PAC] in _dl_call_fini
(closure_map=closure_map at entry=0xfffff7ff0020)
at ./elf/dl-call_fini.c:43
#16 0x0000fffff7fc2b78 [PAC] in _dl_fini () at ./elf/dl-fini.c:120
#17 0x0000fffff2c2b30c [PAC] in __run_exit_handlers
   (status=0, listp=0xfffff2db0588 <__exit_funcs>,
run_list_atexit=run_list_atexit at entry=true, run_dtors=run_dtors at entry=true)
   at ./stdlib/exit.c:118
#18 0x0000fffff2c2b400 [PAC] in __GI_exit (status=<optimized out>) at
./stdlib/exit.c:148
#19 0x0000fffff2c12f20 [PAC] in __libc_start_call_main
   (main=main at entry=0xaaaaaaaa4ba8 <main(int, char**)>, argc=argc at entry=1,
argv=argv at entry=0xffffffffe8a8)
   at ../sysdeps/nptl/libc_start_call_main.h:83
#20 0x0000fffff2c1305c [PAC] in __libc_start_main_impl
   (main=0xaaaaaaaa4ba8 <main(int, char**)>, argc=1, argv=0xffffffffe8a8,
init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, sta
ck_end=<optimized out>) at ../csu/libc-start.c:360
#21 0x0000aaaaaaaa4ab0 [PAC] in _start ()
(gdb)

Notes : i run the Import function, and the GUI layout looks better... I
don't have an Immich local web service to test. I just run the dialog and
close it.

Best regards

Gilles Caulier

Le lun. 19 oct. 2026 à 22:27, Gilles Caulier <caulier.gilles at gmail.com> a
écrit :

> Hi Christian,
>
> There is no problem to compile this code under Linux (here arm64):
>
>
> https://www.flickr.com/photos/185465119@N02/55600062161/in/dateposted-public/
>
> A first look to the GUI revelate some improvements to do :
>
> - the layout is broken on the top/left.
> - I don't understand the interface, how to start, and how to do it. A
> better mapping of the widget can help the users to quickly drive the tool.
> - The thumbnails : you don't use the cache mechanism from digiKam. Looks
> like HEIF is not rendered, where digiKam supports it very well.
> - No action button, Hel, close, upload, etc, typically on the bottom of
> the dialog.
>
> I look quickly at the code improvements that can be done a lot, as private
> classes C++ objects can be hidden. There is a cpp file more than 100Kb. The
> cpp must be separated by feature to help in the code maintenance. Look how
> i do with the 3rd party Gmicqt plugin that i wrap in this repository:
>
> https://github.com/cgilles/digikam-gmic-qt/tree/master/src/bqm
>
> It's usual to limit the cpp file size to 10-20 Kb when it's possible. .h
> cannot be cut in small parts.
>
> I recommend also to pass the open source static analyzers, as cppcheck or
> clazy. Look at the scripts here :
>
> https://github.com/cgilles/digikam-gmic-qt/tree/master/src/reports
>
> My best regards
>
> Gilles Caulier
>
> Le lun. 19 oct. 2026 à 21:57, Gilles Caulier <caulier.gilles at gmail.com> a
> écrit :
>
>> Hi Christian,
>>
>> Thanks for your work. Please add me in your project in the github
>> repository, i will review the code and give you some guidance
>>
>> My account : https://github.com/cgilles
>>
>> I will check out the code and look to compile. When all will be fine, We
>> can plan to include it in the digiKam bundles as the G'MIC-qt plugin for ex.
>>
>> Best regards
>>
>> Gilles Caulier
>>
>> Le lun. 19 oct. 2026 à 19:42, Christian McHugh <mmchugh at silverapple.eu>
>> a écrit :
>>
>>> Hello everyone,
>>>
>>> I have been writing a generic plugin that connects digiKam to a
>>> self-hosted Immich server, and before taking it further I wanted to ask
>>> whether the project would be interested in it as an in-tree web-service
>>> plugin, alongside Piwigo and the others.
>>>
>>> While vibe coded, it is working software and was made to allow my family
>>> to more easily access and edit their photos through Immich. The
>>> repository is at https://github.com/mchugh19/immich-digikam/tree/main
>>> and it currently provides:
>>>
>>> - Import of an album or a tag's contents into a local folder.
>>> - Export of the digiKam selection to the Immich library or album.
>>> - Metadata round-tripping through XMP sidecars (tags, rating, caption,
>>> GPS), which one mechanism both applications read and write. Metadata
>>> edited on either side is synced onto the existing Immich asset rather
>>> than re-uploaded.
>>> - Edited files are recognized as new versions of photos already in
>>> Immich (by name, capture time, dimensions and a pixel comparison) and
>>> can replace the old copy as the primary of a stack, or overwrite it,
>>> instead of accumulating duplicates.
>>> - It is developed and tested against Immich 3.3.3 and digiKam 9.1, and
>>> it has unit tests for its pure logic plus contract tests against a stub
>>> server.
>>>
>>> I use it against my own server, and I am prepared to help maintain it,
>>> including following Immich API changes.
>>>
>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/digikam-devel/attachments/20261019/cc3cf292/attachment-0001.htm>


More information about the Digikam-devel mailing list