Доброго, джентльмены!
Задался я вопросами эстетики по версии 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-файле ссылаться на скрипт?