Вопрос или проблема
Я использую XFCE около недели; наконец-то отказался от KDE на моем рабочем столе из-за множества проблем с настройкой там (переключение между несколькими пользователями с несколькими X-серверами, работающими с разными WM/DE комбинациями, три монитора и две видеокарты; похоже, именно эта последняя часть стала препятствием для KDE при переключении пользователей/X инстансов).
В любом случае, XFCE оказался очень стабильным в этом контексте и подтолкнул меня к использованию XDG файлов для меню панели, которые кажутся очень простыми; у меня есть файл меню, который выглядит так:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Name>GoldilocksDE</Name>
<AppDir>/home/goldilocks/xdg/applications</AppDir>
<Include>
<Category>Goldilocks-favourites</Category>
</Include>
</Menu>
Тогда каждый раз, когда я хочу добавить приложение в этот список, я просто помещаю его файл desktop в /home/goldilocks/xdg/applications
, и оно добавляется в меню без необходимости перезагрузки, перезапуска или каких-либо дополнительных действий. Очень приятно.
В основном, я просто копирую их из /usr/share/applications
и добавляю Goldilocks-favourites
в Categories
.
По-прежнему есть меню панели по умолчанию с кучей подменю, содержащих все, и я не заморачиваюсь редактированием этого или использованием xdg-desktop-menu
; настроенное меню выше предназначено только для полудюжины или около того вещей, которые я использую чаще всего. Я использую собственный путь вместо ~/.local/share/applications
, так как система/установщики/менеджер пакетов используют это. Я также копировал оттуда записи.
Но теперь я запутался. Я пытался скопировать запись для okular
; нашел два на системе, одно осталось в /usr/share/applications/kde4
(на самом деле, там куча okularApplication_foo.desktop
, которые, похоже, относятся к разным mime типам), и одно в ~/.local/share/applications
. Ни одно из них не работает при копировании в пользовательскую /home/goldilocks/xdg/applications
. Я также взял одно для приложения, которое работает, и просто заменил несколько значений соответственно.
[Desktop Entry]
Version=1.0
Name=Okular
Comment=Document viewer
Exec=okular
Icon=okular
Type=Application
Terminal=false
Categories=Goldilocks-favourites
X-Desktop-File-Install-Version=0.22
Не получилось. Его просто нет в меню. XFCE, похоже, не ведет журнал ошибок или что-то такое, насколько я могу судить (в /var/log/syslog
ничего нет, и я получаю копию всего, что использует syslog, там; journald работает в основном усеченно и никогда не показывает ничего дополнительного).
Поэтому я просматривал man страницы, найденные с помощью apropos xdg
, там не так много информации, и эта страница freedesktop делает формат звучащим таким же простым и открытым, как я думаю, за исключением “конвенции ‘обратного DNS’, например, org.example.FooViewer.desktop”, которой никто из desktop файлов на системе не следует. Я также не могу найти файл Okular.desktop, используемый большим меню по умолчанию (/etc/xdg/menus/xfce-applications.menu
), несмотря на то что прочитал это и отметил содержимое env | grep XDG
. Кажется, это не один из вышеупомянутых файлов, так как если я изменяю их (например, изменяю значок), это не влияет на меню.
Кто-нибудь понимает, в чем проблема?
Это не особенно ответ, поскольку он не включает объяснение, почему это может быть справедливо для некоторых desktop файлов, но не для других, но после перезагрузки сегодня утром запись окулар появилась.
Система была включена больше недели, вероятно, до моего перехода с KDE на XFCE. Однако, я заметил ту же проблему сразу при добавлении записи для sylpheed
, и так как ничего другого в тот момент не происходило,1 вошел и вышел из XFCE и вуаля, там был sylpheed.
Обратите внимание, что я минимизировал записи — без mime типов и прочего — и они все очень похожи в большинстве аспектов, так что я не вижу причины в этом.
1. Я не использую управление сессиями ни с чем, так как никогда не находил систему восстановления, которая не включала какого-то рода сбой. Это означает, что вход и выход может быть проблемой для меня.
.
Ответ или решение
Теория
Когда речь идет о конфигурации меню и файлов рабочего стола в окружении XFCE, важно понимать роль XDG стандартов. XDG — это группа стандартов, разработанных FreeDesktop.org, для обеспечения интероперабельности между разными окружениями рабочего стола в Unix-подобных системах. В частности, XDG определяет, как должны быть организованы и формированы файлы рабочих столов (desktop files), а также структуры меню.
XFCE, как легковесное окружение рабочего стола, придерживается именно этих стандартов для обеспечения гибкости и стабильности при работе с различными конфигурациями систем. Основная идея фреймворка XDG заключается в унификации: приложения и окружения позволяют пользователям настраивать и модифицировать их так, чтобы это не влияло на системную стабильность и поддерживалось всеми поддерживаемыми окружениями пользователя.
Пример
Вы привели пример использования файлов рабочего стола для кастомного меню панелей в XFCE. Ваш пример:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Name>GoldilocksDE</Name>
<AppDir>/home/goldilocks/xdg/applications</AppDir>
<Include>
<Category>Goldilocks-favourites</Category>
</Include>
</Menu>
Этот файл меню использует стандартные теги XML, чтобы определить базовую конфигурацию для пользовательского меню. Он указывает каталог <AppDir>
, где располагаются desktop-файлы для приложений, включаемых в данное меню. Эти файлы должны содержать набор метаданных, таких как имя приложения, иконка, команда для запуска и категории.
Проблемы возникают, когда подобные файлы не распознаются системой как ожидается. В случае Okular и Sylpheed, ваши описания для них не отображались в меню до тех пор, пока вы не перезагрузили или не перезашли в систему.
Применение
Для решения таких проблем необходим методический подход. Вот развернутый план действий, который можно предпринять:
-
Проверка валидности файлов: Убедитесь, что все desktop-файлы соответствуют спецификациям XDG и XML. Малейшая ошибка в формате, например, лишняя запятая или пропущенная кавычка, может вызвать проблемы в их интерпретации.
-
Кэширование меню: В XFCE и других окружениях может существовать система кэширования меню, что обуславливает необходимость перезагрузки или выхода из системы для обновления интерфейсов. Это объясняет, почему после логина ваши изменения становились видимыми.
-
Обработчики логов: Поскольку XFCE может не записывать ошибки в стандартные системы логирования, рекомендуется искать специализированные трассировки ошибок XFCE или включать расширенное логирование, чтобы выявить причины проблем во время разработки и отладки.
-
Разграничение пользователей: Ваша структура настроек подразумевает использование конкретных пользовательских директорий для ограниченного круга задач. Это полезно для экспериментов и предотвращает влияние изменений на системные файлы.
-
Учет MIME типов: Хотя вы упомянули, что минимизировали записи, это может исключить важную информацию, необходимую для корректной работы некоторых приложений, например, поддержка различных форматов файлов.
-
Стандарты именования: Использование стандартов «обратного DNS», хотя и не обязательное, может упростить идентификацию и управление многочисленными файлами, обеспечивая уникальность имен и, возможно, уменьшая конфликты.
-
Документация и ресурсы: Иногда, детальное изучение документации FreeDesktop и XFCE может дать ключи к решению, включая известные ошибки и шаги по их исправлению.
Решение таких проблем требует последовательного подхода, который учитывает все аспекты взаимодействия приложений, конфигураций и окружения рабочего стола. Именно внимание к деталям, системное тестирование и обновление конфигураций помогут вам эффективно адаптировать рабочее окружение под свои нужды.