И снова возвращаюсь к работе над меню "Пуск" в дистрибутиве Chimbalix
Внезапно вернёмся к многострадальному меню "Пуск", которое всё исправляю, да никак не исправлю чтобы действительно хорошо работало, и начнём с "документации"...
реклама
Документация для "Desktop Entry" конечно существует, и писатели вероятно плевать хотели на "пользователей", особое внимание заслуживает "пример" файла Desktop Entry, такое ощущение, что этот пример написали просто чтобы "было", ибо реальной пользы от него мало т. к. не соответствует текущей версии спецификации:
Пришлось изрядно потанцевать с бубном, чтобы скурить "документацию" и начать делать полноценные "примеры", которые легко можно применить в деле, ибо обычно в линуксах один файл так, другой сяк, и разбирайтесь как хотите с кашей, так не пойдёт, нужен порядок:
С примерами использования разобрались, теперь разберёмся с именами, слева меню работает как в типичном Linux, всё разбросано, надо наизусть заучивать имена и описания, например FeatherPad выполняющий роль текстового редактора, тем временем у моего дистрибутива есть иерархия имён, и пользователю не нужно ничего заучивать для поиска необходимого софта:
реклама
Однако моя система сейчас весьма сырая, причём конфликтует со спецификациями, хотя это последняя на очереди забота.
Если кто-то подумал что проблема имён всплывает только в меню "Пуск", это не так, при поиске приложений проблем ничуть не меньше, вот нужно открыть документ нетипичным софтом, банально человек забыл заковыристое название просмотрщика изображений, обычно в линуксах введя "image viewer" выдаёт что угодно, но не искомый "Nomacs":
И эта проблема работает в обе стороны, если пользователь запомнил конкретное имя, поиск не выдаст искомое в моём дистрибутиве, ведь у меня название приложения Nomacs начинается с Image Viewer, метаданные в данном случае, как я заметил, игнорируются системным поисковиком:
реклама
По-хорошему следует переделать механизмы поиска софта, но как много людей это могут сделать? Чтобы точно всё нормально работало, и никто не утонул в месиве метаданных/имён...
Это тот случай, когда необходимо найти компромисс, и он уже давно найден, что видно на скриншотах выше, правда он не всем придётся по нраву, особенно учитывая конфликты спецификаций и имеющиеся проблемы.
В моём дистрибутиве имена приложений структурированы, и вот предварительный шаблон:
реклама
Сначала идёт категория, например "Редактор Видео", через разделитель идёт имя, в скобках после имени указана дополнительная важная информация, конструкция простая и рабочая, но конфликтует со спецификациями, которые завещают что поле "Name" должно содержать имя приложения, а поле "GenericName" должно содержать то самое "Редактор Видео"...
К чему приводит работа по спецификациям многие прекрасно видят сами, разработчики пляшут как могут, пытаясь ужаться в ограничения, которых в той же Windows никогда не было, а пользователю головная боль при попытке найти нужный софт для конкретной задачи:
Можно включить показ описаний, но это перегружает восприятие массой информации, для пущей извращённости можно включить показ "GenericName" вместо имён, что вообще наводит полнейший хаос и неразбериху, когда перед глазами целых пять "Image Viewer", два из которых имеют одинаковые значки и описания, хотя являются совершенно разными "вещами":
Сейчас была наглядная демонстрация, почему нарушение спецификаций это последняя в списке забота... Мне нужно было это разжевать, иначе выглядит так, будто я просто ненавижу линуксы, и якобы поливаю говном незаслуженно.
Ещё обратим внимание на имена ярлыков:
Ведь они тоже пляшут как попало, но я не собираюсь здесь разрабатывать правила, просто явно неадекватные элементы подправлю, чтобы было понятно к чему относиться тот, или иной файл:
Как-то так, согласитесь, гораздо приятнее теперь выглядит:
Вот так, файл за файлом начинаю совершенствование системной панели управления, а после проработаю и элементы меню "Пуск":
Прошло несколько дней...
Наконец я разобрался с панелью управления своего дистрибутива Chimbalix, пришлось прилично поработать над именами элементов, чтобы смотря на элемент "Welcome Screen" в разделе "Themes and appearance" было сразу понятно - это настройки экрана приветствия, а не что-то там связанное с LightDM GTK+:
Ещё можно заметить раздел "Unsorted", в него будут падать ярлыки, которые не подготовлены для моего дистрибутива, проще говоря вся Linux помойка особняком отгорожена, и не сможет наводить хаос в системе.
Так выглядит панель управления в оригинальном MX Linux, мало того все ярлыки попадают в поиск системы, и никак не отличаются от нормальных программ, так ещё всё разбросано:
А если зайти в меню "Пуск" оригинального MX Linux, можно заметить, что элементы панели управления продублированы и в разделе "Accessories", именно там, где должны находится калькуляторы, "записки" и прочий подручный софт, но ни в коем случае не настройки экрана приветствия:
В своём дистрибутиве такую дикость я сразу пресёк, один ярлык - один раздел, а для любителей "классики" был предусмотрен альтернативный вариант отображения названий, если вдруг жизнь кажется слишком скучной и простой:
Да, в GenericName помещено имя приложения, это противоречит спецификациям, но иного выхода не вижу с весьма ограничительной "базой"...
А что насчёт правил, они, как видно выше, находятся на стадии формирования, нельзя просто взять, и адаптировать существующую систему до приемлемого состояния, мне нужно больше, чем позволяют спецификации:
Собственно вот наглядная разница между типичным Linux подходом (слева), и моим (справа):
Кстати, вероятно некоторые заметили что мой подход основан на категориях, но лишь отчасти, в моём случае главенствуют общие основные разделы, например "Редакторы", и уже подразделов может быть множество, причём важно отметить, есть общие категории вроде "Редактор Изображений", а есть специфические вроде "PDF Редактор":
Если приложение не является узкоспециализированным и позволяет редактировать разнообразные форматы изображений, оно должно иметь общую категорию "Редактор Изображений", если же в первую очередь предназначено для редактирования GIF файлов, оно должно иметь специализированную категорию "GIF Редактор", даже если умеет редактировать другие форматы изображений, ничего сложного:
Такой подход позволяет иметь множество разнообразных категорий на усмотрение разработчиков, и не происходит перемешивания софта несмотря на ограниченность линуксоидной системы меню, иначе говоря недостаток превратился в преимущество, если конечно следовать простым правилам:
Могут конечно появиться сложности при отнесении софта к какой-либо категории, ведь некоторые разработчики сначала делают, а потом думают, но тут уж придётся решить, для выполнения какой задачи была создана программа...
Если изначально разработчики могли размазывать свой софт как фекалии по всем категориям подряд, то в моём дистрибутиве разработчик уже будет заинтересован в правильном выборе одной единственной категории как минимум для того, чтобы пользователю не мозолить глаза вызывая отвращение.
Хм, про что я забыл... Точно! Не хватает шаблонов! Негоже заставлять пользователей учить порой весьма посредственные документации, чтобы создать ярлык или веб ссылку! Да и мне самому удобнее двумя кликами создать нужный файл по шаблону вместо того, чтобы заниматься ковырянием "исходного кода":
Правда "Desktop Entry" был переименован в "Application", но это уже за кадром.
Единственная проблема сейчас состоит в невозможности указать "раздел" через стандартный редактор ярлыков, некоторые пользователи наверняка полезут создавать свои ярлыки для меню "Пуск", и будут недоумевать, почему ярлык создали, но ничего не появилось:
Правильно создать файл указав категорию недостаточно, ведь линуксоидная система кэширует ярлыки, но автоматически не отслеживает изменения в каталоге, это может ввести новичков в заблуждение создав видимость, что система не работает, однако на самом деле нужно просто пнуть дряхлого пингвина под зад, чтобы заработало:
Осталось только придумать костыль, ведь "update-desktop-database / xdg-desktop-menu forceupdate" попросту не работают как положено, что типичная ситуация для Linux, когда инструменты работают неправильно, или делают не то что ожидается...
По итогу рабочим решением оказалось "пнуть" дряхлого пингвина следующим образом:
sudo touch /etc/xdg/menus/xfce-applications.menu
Универсальный вариант "пинает" все файлы в каталоге "menus", такое подойдёт остальным дистрибутивам Linux:
sudo touch /etc/xdg/menus/*.menu
Иных адекватных вариантов обновить меню "Пуск" без перезапуска сессии найти не удалось, разве только изменить ярлык через Редактор Лаунчера, но такой вариант не является надёжным, впрочем, есть ли хоть что-то надёжное в Linux...
Похоже пора закругляться, и так слишком затянулся процесс, по итогу не вышло полностью закончить работу над меню "Пуск", косяков и недоработок оказалось слишком много, чтобы всё исправить одним махом.
Кстати, совсем забыл, ведь моя система будет не очень совместима с GNOME поделками, но при желании можно использовать вместо обычного Name поле GenericName для вывода имён, правда сомневаюсь что это особо поможет пользователям всяких Ubuntu:
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила