Закончено исходное погружение. Я написал и вошел в простое приложение Eclipse, которое получает браузер по умолчанию только так, как это делает сама Eclipse (IDE) ( в org.eclipse.ui.internal.browser.SystemBrowserInstance ):
Program.findProgram("html")
Оказывается, Eclipse идентифицирует мой «рабочий стол» как DESKTOP_GIO , потому что у меня установлена библиотека GIO как часть некоторой зависимости GNOME. Поскольку это ID меня как таковой, он вызывает эту функцию libgio:
g_app_info_get_default_for_type("text/html", false)
Согласно документам , приложения GIO используют «стандарт» X Desktop Group (XDG) Общая база данных MIME-info для поиска приложений, поддерживающих данный тип MIME.
В моем случае, я никогда не регистрировал ни одного приложения в качестве обработчика по умолчанию для text / html, но Eclipse просто выбирает первое возвращаемое (что бывает winebrowser
, поскольку у него есть запись wine-extension-html.desktop
в моем ~/.local/share/applications/
каталог).
В итоге я использовал:
desktop-file-install \
--rebuild-mime-info-cache \
--dir ~/.local/share/applications \
custom-script.desktop
чтобы добавить запись на рабочий стол для моего собственного скрипта, и:
xdg-mime default custom-script.desktop text/html
, чтобы установить его по умолчанию для файлов "html".