Как команда xdg-open узнает, какое приложение использовать для открытия файла?
21
Я ожидаю, что команда xdg-open будет использовать то же приложение, которое открывается, когда я дважды щелкаю файл в файловом менеджере по умолчанию, но это не всегда так.
Например, мой DE - это XFCE, мой файловый менеджер - Thunar, а мой просмотрщик картинок по умолчанию - Ristretto. Тем не менее, xdg-open example.pngоткрывается пример файла PNG в Пинта. Почему?
xdg-open - это независимый от рабочего стола инструмент для настройки приложений пользователя по умолчанию. Многие приложения вызывают команду xdg-open для внутреннего использования. В среде рабочего стола (например, GNOME, KDE или Xfce) xdg-open просто передает аргументы в приложение для открытия файлов в этой среде рабочего стола (например, gvfs-open, kde-open или exo-open). Это означает, что ассоциации оставлены на усмотрение рабочего стола. Если среда рабочего стола не обнаружена (например, когда запускается автономный оконный менеджер, например, Openbox), xdg-open будет использовать свои собственные файлы конфигурации.
Это можно считать формальным ответом, но на самом деле это не объясняет явление, которое я упомянул.
Иван
обновлено, пожалуйста, проверьте еще раз
oxnz
Благодарю. И это очень смешно: xdg-mime query default image/pngвозвращается wine-extension-png.desktop:-)
Иван
2
@Ivan Это, вероятно, происходит, потому что вы не указали правильный тип файла при запросе приложения по умолчанию. Важно то, как xdg вызывает этот конкретный тип файла. Это можно легко узнать, запустив
xdg-mime query filetype example.png
Например, если я сделаю это с определенным png-файлом на моем компьютере, он вернется image/x-apple-ios-png. Как только вы определили фактический тип файла, вы можете запустить
xdg-mime query default <new filetype>
и получите приложение, которое используется xdg для этого конкретного типа файла. Если для этого типа файла не определено приложение, xdg-open проверяет, /etc/debian_versionдоступен ли файл , если это так, он запустится run-mailcap, что очень похоже на xdg-open, и попытается найти программу для открытия файла. ,
Только если это тоже не удастся, xdg-open попросит пользователя определить программу для открытия файла.
oxny только упоминает, как установить и проверить приложение на наличие известного типа файла. Ему не хватает ссылки для xdg-mime query filetype example.pngпроверки типа файла определенного файла, потому что просто допустить, что файл .png также попадает в категорию image / png, не всегда правильно. Глядя на комментарии Ивана , думаю, что его проблема еще не решена.
xdg-mime query default image/png
возвращаетсяwine-extension-png.desktop
:-)@Ivan Это, вероятно, происходит, потому что вы не указали правильный тип файла при запросе приложения по умолчанию. Важно то, как xdg вызывает этот конкретный тип файла. Это можно легко узнать, запустив
Например, если я сделаю это с определенным png-файлом на моем компьютере, он вернется
image/x-apple-ios-png
. Как только вы определили фактический тип файла, вы можете запуститьи получите приложение, которое используется xdg для этого конкретного типа файла. Если для этого типа файла не определено приложение, xdg-open проверяет,
/etc/debian_version
доступен ли файл , если это так, он запуститсяrun-mailcap
, что очень похоже на xdg-open, и попытается найти программу для открытия файла. ,Только если это тоже не удастся, xdg-open попросит пользователя определить программу для открытия файла.
источник
xdg-mime query filetype example.png
проверки типа файла определенного файла, потому что просто допустить, что файл .png также попадает в категорию image / png, не всегда правильно. Глядя на комментарии Ивана , думаю, что его проблема еще не решена.