Я пытаюсь открыть файлы в локальном приложении в системе LTSP. Но если имя пути содержит символы с диакритическими знаками, например é
, его нельзя открыть, потому что кажется, что URI закодирован неправильно.
Проблемы, похоже, связаны с тем, как gvfs-open отправляет URI файла:
gvfs-open /home/user/testé/test.mov
VLC is unable to open the MRL 'file:///home/user/test303251/test.mov'.
Открытие того же файла из самого приложения (через Файл> Открыть ..) не вызывает никаких проблем.
Пробелы и запятые вроде бы закодированы по-разному, с% 20, и не доставляют никаких проблем.
gvfs-open /home/user/this is testé/test.mov
VLC is unable to open the MRL 'file:///home/user/this%20is%20test303251/test.mov'.
Есть идеи, как это можно исправить?
Я нашел решение и сообщил об этом: https://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/1451915
Это было вызвано тем, как LTSP открывает локальные приложения: LTSP устанавливает свойство X, содержащее команду и аргументы, которое читается на клиенте и затем выполняется.
/usr/bin/vlc --started-from-file %U
заменяется на клиентах
xprop -root -f LTSP_COMMAND 8s -set LTSP_COMMAND "/usr/bin/vlc --started-from-file %U"
Но здесь используется 8-битная кодировка. Если вы измените «8s» на «8u», он будет использовать строку Unicode UTF-8, что, похоже, решит проблему.
Файл, который необходимо изменить:
/opt/ltsp/i386/usr/bin/ltsp-genmenu