Вопрос или проблема
Как гном определяет, какие приложения поддерживают GIO и GVFS?
Пример: Я открываю текстовый файл в gedit
, gvfs используется прозрачно, но если я открою его в kate
(аналог KDE), он автоматически отобразится как ~/.gvfs/<путь_к_файлу>
Строка Exec= из файла приложения определяет, что оно может обрабатывать.
Пример: /usr/share/applications/gedit.desktop
использует %U, что означает, что оно может обрабатывать URL-адреса, поэтому gvfs будет использован.
Смотрите https://specifications.freedesktop.org/desktop-entry-spec/latest/exec-variables.html для подробностей.
Ответ или решение
GNOME определяет, какие приложения поддерживают GIO (GNOME Input/Output) и GVFS (GNOME Virtual File System), через использование файлов .desktop, которые описывают поведение приложений. Эти файлы находятся в каталогах, таких как /usr/share/applications/
и ~/.local/share/applications/
. Важным элементом этих файлов является строка Exec=
, которая определяет, какие параметры поддерживает приложение при запуске.
Например, в файле /usr/share/applications/gedit.desktop
вы можете найти строку, содержащую %U
. Этот символ обозначает, что приложение gedit может обрабатывать URL и URI, что подразумевает использование GIO для доступа к различным типам файлов, включая сетевые ресурсы. Это позволяет GNOME встраивать поддержку GIO и GVFS transparently, т.е. без дополнительных настроек со стороны пользователя.
В отличие от gedit, некоторые приложения, такие как kate (KDE), могут не указывать поддержку URL в своих .desktop-файлах или использовать другой способ обработки файлов, который не подразумевает использование GIO. В результате, при попытке открытия файла в таких приложениях, система может автоматически перенаправлять запрос к каталогу ~/.gvfs/<path_to_file>
, что является особенностью реализации GVFS в некоторых окружениях рабочего стола.
Также стоит отметить, что наличие соответствующих функций в приложении зависит не только от файла .desktop, но и от того, насколько хорошо само приложение интегрировано с GIO и GVFS на уровне кода. Чтобы узнать больше о возможностях и спецификациях этих переменных, можно ознакомиться с документацией по спецификации файлов .desktop.
Таким образом, GNOME использует информацию из файлов .desktop и механизм GIO для определения, какие приложения могут обрабатывать файлы с использованием GVFS, обеспечивая таким образом единообразный и бесшовный доступ к файлам разного типа.