LINUX.ORG.RU

desktop-файлы, mime-спецификации, wine и start.exe

 , , ,


0

3

Доброго, джентльмены!

Задался я вопросами эстетики по версии standards.freedesktop.org.

Имею пару-тройку версий одного необсуждаемого софта, установленного в разные префиксы wine (winemenubuilder.exe предусмотрительно отключен в каждом из них):

  • ~/wine-soft1;
  • ~/wine-soft2.

Собственно у каждой из версий есть, типовая для коммерческого ПО дешёвого эшелона проблема — несовместимые (при отсутствии нововведений в объектной модели документа) от версии к версии форматы файлов с расширением .ext. Посему хочется иметь возможность ассоциации с типом файлов каждой из версий. Плюс, хотелось бы запускать каждую из программ из меню с категориями freedesktop.

Вроде бы всё ясно. Читаю http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-... и http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html, создаю x-wine-cadsoft.xml

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/x-wine-extension-ext">
    <glob pattern="*.ext"/>
    <icon name="wine_ext.0"/>
    <comment>CAD Soft File Format</comment>
  </mime-type>
</mime-info>

Также пишу два файла cadsoft-v1.desktop и cadsoft-v2.desktop с содержимым вроде:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=CAD Soft
Comment=CAD Soft Editor
Comment[ru]=Редактор CAD Soft
Exec=env WINEPREFIX=~/wine-soft1 wine start /ProgIDOpen CADSoftV1File %f
Icon=wine_cad_soft.0
NoDisplay=false
StartupNotify=true
Terminal=0
Categories=Electronics;Engineering;
MimeType=application/x-wine-extension-ext;

Дальше делаю обновление кеша:

$ update-desktop-database ~/.local/share/applications
$ update-mime-database ~/.local/share/mime/

Пункты меню расставились, ассоциации файлов поправились. Всё здорово: файлы открываются (аргументом в команду передаётся unix-имя, но start.exe передаёт в cadsoft.exe уже то, что нужно). Есть одна проблема: start.exe от свежего wine считает параметр имени файла строго обязательным, т.е. когда я запускаю свою цацу просто из меню, то имя файла не передаётся, а выполнение start.exe завершается ошибкой, а не запуском cadsoft.exe.

Рекомендуете решить проверку наличия аргумента с именем файла на sh-скрикпте за пять минут и в desktop-файле ссылаться на скрипт?


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.