Вопрос или проблема
Я использую GNOME на Arch Linux.
Согласно спецификации меню freedesktop, файлы .desktop
находятся в $XDG_DATA_DIRS/applications/
.
Но когда я чистил записи рабочего стола сегодня, заметил, что нет /home/<имя пользователя>/.local/share/
в $XDG_DATA_DIRS
, но файлы .desktop
, находящиеся в ~/.local/share/applications/
, отображаются в GNOME Launcher.
Я упускаю что-то важное?
Путь должен находиться в $XDG_DATA_DIRS
только если он должен обновляться автоматически. Поскольку ~/.local/share
не находится в $XDG_DATA_DIRS
, любые изменения, сделанные в любом файле рабочего стола в ~/.local/share/applications
, не вступят в силу, если вы не перезайдете в сессию.
.
Ответ или решение
Вы используете GNOME на Arch Linux и заметили некоторую неконгруэнтность между документацией freedesktop и фактическим поведением системы. Согласно спецификации меню freedesktop, .desktop
файлы должны находиться в $XDG_DATA_DIRS/applications/
. Однако, вы обнаружили, что файлы .desktop
, находящиеся в ~/.local/share/applications/
, отображаются в GNOME Launcher, несмотря на то, что ~/.local/share/
не включен в $XDG_DATA_DIRS
.
Причина этого проста: GNOME и другие среды рабочего стола Linux следуют концепции XDG Base Directory Specification, которая предполагает, что личные настройки и данные пользователя будут храниться в одном месте, независимо от системных переменных среды. Вариант с размещением пользовательских .desktop
файлов в ~/.local/share/applications/
— это стандартный идиоматический способ для Linux-платформ, позволяющий пользователям создавать и изменять ярлыки приложений без изменения системных директорий.
Фактически, GNOME автоматически проверяет наличие и изменения в ~/.local/share/applications/
даже если этот путь не включен в $XDG_DATA_DIRS
. Таким образом, любой .desktop
файл, помещенный в эту директорию, будет обнаружен и обработан GNOME Launcher.
Следует учесть, что изменения, внесенные в .desktop
файлы в ~/.local/share/applications/
, могут отразиться не сразу. Чтобы их учесть, может потребоваться перезайти в сеанс или вручную обновить кеш среды рабочего стола.
Такое поведение обеспечивает баланс между удобством пользовательской настройки и стабильностью системы, избегая вмешательства в глобальные параметры и настройки, которое может повлиять на всех пользователей системы. Через это достигается строгая изоляция пользовательских настроек, что является важным аспектом безопасности и конфиденциальности.
Таким образом, ваша ситуация – это не ошибка или упущение, а часть продуманного проектирования, которое обеспечивает гибкость и простоту работы с пользовательскими данными в экосистеме UNIX-подобных систем.