Назад | Перейти на главную страницу

xdg-open использует неправильную кодировку символов в LTSP

Я пытаюсь открыть файлы в локальном приложении в системе 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