Возможно Вам поможет этот опыт - уже несколько лет после обновления Qt в KDE у некоторых приложений стали появляться проблемы с открытием каталогов/файлов. Решить (пока по крайней мере) удалось только сейчас.
В некоторых qt приложениях при запуске файлового диалога происходит зависание и проблема с отображением non-latin utf имен.
Одно из решений: запуск с темой gtk2. Например:
export QT_QPA_PLATFORMTHEME=gtk2; sqlitebrowser
Можно прописать в .bashrc alias:
alias sqlitebrowser="(export QT_QPA_PLATFORMTHEME=gtk2; sqlitebrowser)"
Другое решение (если пишем сами или есть исходники) использовать опцию QFileDialog.DontUseNativeDialog:
на PyQt5: .setOption(QFileDialog.DontUseNativeDialog)
UPD: проблема не исчезала во многих случаях (при этом у другого пользователя на этом же хосте все работало без проблем).
strace показывает, что приложения, использующие QFileDialog пытаются открывать файлы конфигурации:
access("/home/user/.config/QtProject.conf", F_OK) = 0
access("/home/user/.config/kdedefaults/QtProject.conf", F_OK) = -1 ENOENT (Нет такого файла или каталога)
access("/etc/xdg/QtProject.conf", F_OK) = -1 ENOENT (Нет такого файла или каталога)
access("/usr/share/desktop-base/kf5-settings/QtProject.conf", F_OK) = -1 ENOENT (Нет такого файла или каталога)
в моем случае для пользователя user файл /home/user/.config/QtProject.conf имел размер ~500Mb
далее шли попытки проверки каталогов
stat("/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("/", R_OK) = 0
access("/", W_OK) = -1 EACCES (Отказано в доступе)
access("/", X_OK) = 0
stat("//home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
access("//home", R_OK) = 0
access("//home", W_OK) = -1 EACCES (Отказано в доступе)
access("//home", X_OK) = 0
stat("//home/user", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
access("//home/user", R_OK) = 0
access("//home/user", W_OK) = 0
access("//home/user", X_OK) = 0
stat("//home/user/tmp", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
access("//home/user/tmp", R_OK) = 0
access("//home/user/tmp", W_OK) = 0
access("//home/user/tmp", X_OK) = 0
access("//home/user/\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\202\303\203\302\202\303 ..... 03\203\302"..., F_OK) = -1 ENAMETOOLONG (Слишком длинное имя файла)
Внутри ... - ОЧЕНЬ длинная последовательность (\303\203\302\203\303\202\302). Это либо имя одного из каталогов в домашем каталоге,
либо каталог из списка history (recent), либо "точки доступа" KDE.
В strace log: есть строка:
write(16, "[FileDialog]\nhistory=
file:///hom"..., 658) = 658
При этом, если все же дождаться зависший диалог открытия каталогов, то можно увидеть non-latin имена каталогов как неверно декодированные.
Сама эта последовательность декодируется python (отрывок строки)
b'\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\203\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\202\303\203\302\202\303\202\302\202\303\203\302\203\303\202\302\203\303\203\302\202\303\202\302\203\303\203\302\203\303\202'.decode('utf-8')
как
'Ã\x83Â\x83Ã\x82Â\x83Ã\x83Â\x82Ã\x82Â\x83Ã\x83Â\x83Ã\x82Â\x82Ã\x83Â\x82Ã\x82Â\x83Ã\x83Â\x83Ã\x82Â\x83Ã\x83Â\x82Ã\x82Â\x82Ã\x83Â\x83Ã\x82Â\x82Ã\x83Â\x82Ã\x82Â\x83Ã\x83Â\x83Ã\x82Â\x83Ã\x83Â\x82Ã\x82Â\x83Ã\x83Â\x83Ã\x82Â\x82Ã\x83Â\x82Ã\x82Â\x82Ã\x83Â\x83Ã\x82Â\x83Ã\x83Â'
Вся строка не декодируется - пишет ошибку
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 4082: unexpected end of data
ИТОГОВОЕ РЕШЕНИЕ (на данный момент) - удалить файл home/user/.config/QtProject.conf
Диалоги стали открываться без проблем. По крайней мере пока.