Bug 48600

Summary: Неправильные категории приложений при наличии altlinux-freedesktop-menu-{nested-menu,cinnamon}
Product: Sisyphus Reporter: Artem Varaksa <varaksaaa>
Component: altlinux-freedesktop-menuAssignee: viy <viy>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, viy
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 48618    
Attachments:
Description Flags
Скриншоты none

Description Artem Varaksa 2023-11-27 16:37:55 MSK
Шаги
====

1. # apt-get install -y cinnamon altlinux-freedesktop-menu-{cinnamon,nested-menu}
2. # apt-get remove -y altlinux-freedesktop-menu-shallow-menu
3. # reboot
4. На экране входа выбрать оболочку Cinnamon.

Фактический результат
=====================

Категории Офис, Сеть, Системные в меню приложений пустые. В p10 категория Другие исчезла совсем (проверяется до исправления https://bugzilla.altlinux.org/42811, в ней было приложение Параметры системы).

Все приложения из этих категорий попали в категорию Наука.

Ожидаемый результат
===================

Корректное расположение приложений в категориях. Или конфликт между пакетами, не позволяющий установить оба пакета одновременно.

Дополнительно
=============

При установке altlinux-freedesktop-menu-cinnamon автоматически ставится altlinux-freedesktop-menu-shallow-menu, но даже если удалить его и перезагрузиться, поведение не меняется.

Воспроизводимость
=================

Воспроизводится на виртуальных машинах:

[p10] workstation-10.1-x86-64
# rpm -qa | grep freedesktop
sound-theme-freedesktop-0.8-alt1.noarch
altlinux-freedesktop-menu-nested-menu-0.68-alt1.noarch
altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
altlinux-freedesktop-menu-cinnamon-0.68-alt1.noarch
altlinux-freedesktop-menu-common-0.68-alt1.noarch
wm-common-freedesktop-1.3-alt1.noarch

[sisyphus] workstation-10.1-x86-64
# rpm -qa | grep freedesktop  
altlinux-freedesktop-menu-nested-menu-0.69-alt1.noarch  
sound-theme-freedesktop-0.8-alt1.noarch  
altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch  
wm-common-freedesktop-1.3-alt1.noarch  
altlinux-freedesktop-menu-common-0.69-alt1.noarch  
altlinux-freedesktop-menu-cinnamon-0.69-alt1.noarch
Comment 1 viy 2023-11-27 18:26:04 MSK
стандартные меню
altlinux-freedesktop-menu-shallow-menu
altlinux-freedesktop-menu-nested-menu
предоставляют альтернативами %_sysconfdir/xdg/menus/applications.menu
Которым cinnamon ранее не пользовался. Вместо этого он пользовался
своим собственным
%_sysconfdir/xdg/menus/cinnamon-applications.menu
из altlinux-freedesktop-menu-cinnamon.
Для этого cinnamon выставлял переменную XDG_MENU_PREFIX=cinnamon-

То, что он начал реагировать на %_sysconfdir/xdg/menus/applications.menu
означает, что где-то что-то сломалось, и это может быть как сам cinnamon,
так и способ его запуска. Скорее всего, не выставляется переменная 
XDG_MENU_PREFIX=

Это очень интересно, но сильно прошу прощения, сейчас мне негде посмотреть.
Если у вас есть возможность,
хотел бы попросить вас провести несколько экспериментов и приложить скриншоты.
Для каждого эксперимента хотелось бы 
1) скриншоты увидеть,
2) что показывает
 rpm -qa | grep altlinux-freedesktop-menu 
3) что показывает у пользователя
 env | grep XDG_

1) если с нуля ставить cinnamon (т.е. 
на новом пользователе, или у старого очистить домашнюю директорию,
и почистить следы cinnamon в /var, если такие есть)
 нормальные ли в нем меню?
и ломаются сразу после altlinux-freedesktop-menu-nested-menu,
логаут-логин не помогает?
2) если сначала поставить altlinux-freedesktop-menu-nested-menu
а потом с нуля ставить cinnamon, то тоже ломаются?
Comment 2 Artem Varaksa 2023-11-28 14:44:38 MSK
Created attachment 15119 [details]
Скриншоты

=====
TL;DR
=====

* Порядок установки не влияет. При наличии nested-menu, после выхода/входа или перезагрузки меню ломается (одинаковым образом).

* Последующие выходы/входы и перезагрузки не исправляют меню.

* Во 2 эксперименте в MATE меню не сломано. Однако после установки cinnamon и входа в сессию Cinnamon в категории Администрирование в меню MATE приложения задублировались (возможно, отдельная проблема) и появились новые категории, например Полезное.

* XDG_MENU_PREFIX=cinnamon-

========
Подробно
========

Начальное состояние
===================

Начальное состояние одинаковое для обоих экспериментов. На чистой виртуальной машине workstation-10.1-x86-64, обновлённой до Sisyphus:

> # rpm -qa | grep altlinux-freedesktop-menu
> altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
> altlinux-freedesktop-menu-common-0.69-alt1.noarch

Пока что сессия - MATE:

> # rpm -qa | grep cinnamon
> (ничего)

> $ env | grep XDG_
> XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
> XDG_SEAT=seat0
> XDG_SESSION_DESKTOP=mate
> XDG_SESSION_TYPE=x11
> XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/test
> XDG_CURRENT_DESKTOP=MATE
> XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
> XDG_ACTIVATION_TOKEN=mate-menu.py-3083-workstation-10-1-x86-64-20231108.localdomain-mate-terminal-0_TIME396771
> XDG_SESSION_CLASS=user
> XDG_VTNR=1
> XDG_SESSION_ID=6
> XDG_RUNTIME_DIR=/run/user/500

Эксперимент 1
=============

Часть 1: установка сinnamon
---------------------------

> # apt-get install -y cinnamon
> # reboot
На экране входа выбираю сессию Cinnamon.

> # rpm -qa | grep altlinux-freedesktop-menu
> altlinux-freedesktop-menu-shallow-menu-0.69-alt1.noarch
> altlinux-freedesktop-menu-cinnamon-0.69-alt1.noarch
> altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
> altlinux-freedesktop-menu-common-0.69-alt1.noarch

> # rpm -qa | grep cinnamon
> cinnamon-settings-daemon-5.8.1-alt1.x86_64
> muffin-cinnamon-5.8.1-alt1.noarch
> libcinnamon-screensaver-5.8.1-alt1.gitd5ad373.x86_64
> cinnamon-desktop-data-5.8.0-alt1.x86_64
> libcinnamon-menus-5.8.0-alt1.x86_64
> libcinnamon-desktop-5.8.0-alt1.x86_64
> altlinux-freedesktop-menu-cinnamon-0.69-alt1.noarch
> cinnamon-session-translations-5.8.2-alt1.noarch
> cinnamon-5.8.4-alt2.git69727ba.x86_64
> cinnamon-screensaver-translations-5.8.2-alt1.noarch
> libcinnamon-desktop-gir-5.8.0-alt1.x86_64
> cinnamon-data-5.8.4-alt2.git69727ba.noarch
> cinnamon-control-center-translations-5.8.2-alt1.noarch
> cinnamon-translations-5.8.2-alt1.noarch
> cinnamon-control-center-data-5.8.2-alt1.noarch
> cinnamon-screensaver-5.8.1-alt1.gitd5ad373.x86_64
> libcinnamon-screensaver-gir-5.8.1-alt1.gitd5ad373.x86_64
> cinnamon-desktop-schemas-5.8.0-alt1.noarch
> libcinnamon-menus-gir-5.8.0-alt1.x86_64
> cinnamon-control-center-5.8.2-alt1.x86_64
> cinnamon-settings-daemon-translations-5.8.2-alt1.noarch
> cinnamon-session-5.8.1-alt1.x86_64

> $ env | grep XDG_
> XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
> XDG_MENU_PREFIX=cinnamon-
> XDG_SEAT=seat0
> XDG_SESSION_DESKTOP=cinnamon
> XDG_SESSION_TYPE=x11
> XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/test
> XDG_CURRENT_DESKTOP=X-Cinnamon
> XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
> XDG_ACTIVATION_TOKEN=cinnamon-3038-workstation-10-1-x86-64-20231108.localdomain-mate-terminal-0_TIME209424
> XDG_SESSION_CLASS=user
> XDG_VTNR=1
> XDG_SESSION_ID=3
> XDG_RUNTIME_DIR=/run/user/500
> XDG_DATA_DIRS=/usr/share/gnome:/usr/share:/usr/local/share:/var/lib/flatpak/exports/share:/home/test/.local/share/flatpak/exports/share

> # ll /etc/xdg/menus/
> итого 136
> drwxr-xr-x 4 root root 4096 ноя 28 13:08 ./
> lrwxrwxrwx 1 root root 65 ноя 28 13:08 altlinux-applications.menu -> '/etc/alternatives/links/|etc|xdg|menus|altlinux-applications.menu'
> -rw-r--r-- 1 root root 2102 ноя 28 13:08 cinnamon-applications.menu
> drwxr-xr-x 2 root root 4096 ноя 28 13:08 cinnamon-applications-merged/
> drwxr-xr-x 6 root root 4096 ноя 27 16:05 ../
> -rw-r--r-- 1 root root 4983 ноя 27 16:04 altlinux-utility.menu
> drwxr-xr-x 2 root root 4096 ноя 27 16:04 applications-merged/
> -rw-r--r-- 1 root root 4827 ноя 27 16:04 altlinux-office.menu
> -rw-r--r-- 1 root root 3687 ноя 27 16:04 altlinux-science.menu
> -rw-r--r-- 1 root root 9330 ноя 27 16:04 altlinux-settings.menu
> -rw-r--r-- 1 root root 3118 ноя 27 16:04 altlinux-system.menu
> -rw-r--r-- 1 root root 8304 ноя 27 16:04 altlinux-education.menu
> -rw-r--r-- 1 root root 3655 ноя 27 16:04 altlinux-games.menu
> -rw-r--r-- 1 root root 3353 ноя 27 16:04 altlinux-graphics.menu
> -rw-r--r-- 1 root root 4699 ноя 27 16:04 altlinux-multimedia.menu
> -rw-r--r-- 1 root root 3783 ноя 27 16:04 altlinux-network.menu
> -rw-r--r-- 1 root root 3741 ноя 27 16:04 altlinux-applications-mate-like.menu
> -rw-r--r-- 1 root root 1984 ноя 27 16:04 altlinux-applications-nested.menu
> -rw-r--r-- 1 root root 3721 ноя 27 16:04 altlinux-applications-shallow.menu
> -rw-r--r-- 1 root root 3939 ноя 27 16:04 altlinux-development.menu
> -rw-r--r-- 1 root root 4561 окт 26 22:35 matecc.menu
> -rw-r--r-- 1 root root 487 окт 26 22:35 mate-screensavers.menu
> -rw-r--r-- 1 root root 1494 окт 26 22:25 mate-settings.menu
> -rw-r--r-- 1 root root 4147 окт 26 22:25 mate-applications.menu
> -rw-r--r-- 1 root root 3242 окт 26 22:25 mate-preferences-categories.menu

Папки {,cinnamon-}applications-merged - пустые.

Интересно, что присутствует altlinux-applications-nested.menu, хотя пакет altlinux-freedesktop-menu-nested-menu не установлен - он предоставляется пакетом common:

> # rpm -qf /etc/xdg/menus/altlinux-applications-nested.menu
> altlinux-freedesktop-menu-common-0.69-alt1.noarch

На данный момент категории меню корректные (см. скриншоты > Эксперимент 1 > 1 cinnamon).

Часть 2: установка altlinux-freedesktop-menu-nested-menu
--------------------------------------------------------

> # apt-get install -y altlinux-freedesktop-menu-nested-menu

> # rpm -qa | grep altlinux-freedesktop-menu
> altlinux-freedesktop-menu-shallow-menu-0.69-alt1.noarch
> altlinux-freedesktop-menu-cinnamon-0.69-alt1.noarch
> altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
> altlinux-freedesktop-menu-nested-menu-0.69-alt1.noarch
> altlinux-freedesktop-menu-common-0.69-alt1.noarch

Сразу меню не меняется. После выхода из сессии и входа обратно меню ломается (см. скриншоты > Эксперимент 1 > 2 nested-menu).

> $ env | grep XDG_
> (особо изменений нет, только:)
> -XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
> +XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1
> -XDG_ACTIVATION_TOKEN=cinnamon-3038-workstation-10-1-x86-64-20231108.localdomain-mate-terminal-0_TIME209424
> +XDG_ACTIVATION_TOKEN=cinnamon-5188-workstation-10-1-x86-64-20231108.localdomain-mate-terminal-0_TIME1603791
> -XDG_SESSION_ID=3
> +XDG_SESSION_ID=9

> # ll /etc/xdg/menus/
> (без изменений)

Если ещё раз выйти и войти или перезагрузиться, меню не исправляется.

Эксперимент 2
=============

Часть 1: установка altlinux-freedesktop-menu-nested-menu
--------------------------------------------------------

> # apt-get install -y altlinux-freedesktop-menu-nested-menu

> # rpm -qa | grep altlinux-freedesktop-menu
> altlinux-freedesktop-menu-nested-menu-0.69-alt1.noarch
> altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
> altlinux-freedesktop-menu-common-0.69-alt1.noarch

На данном этапе Cinnamon ещё нет, но после выхода/входа видно, что меню в MATE не ломается и не меняется (подкатегорий нет) (см. скриншот Эксперимент 2 > 1 nested-menu > mate menu офис).

Часть 2: установка сinnamon
---------------------------

> # apt-get install -y cinnamon
> # reboot
На экране входа выбираю сессию Cinnamon.

Теперь ...-shallow-menu не установился:
> # rpm -qa | grep altlinux-freedesktop-menu
> altlinux-freedesktop-menu-nested-menu-0.69-alt1.noarch
> altlinux-freedesktop-menu-icon-theme-default-0.0.26-alt1.noarch
> altlinux-freedesktop-menu-common-0.69-alt1.noarch
> altlinux-freedesktop-menu-cinnamon-0.69-alt1.noarch

В $ env | grep XDG_ изменений кроме ожидаемых не заметно.

Меню сломано так же, как и в эксперименте 1, и выход/вход, перезагрузка не помогают.

Если выйти из сессии и зайти в MATE, там меню всё ещё не сломано. Однако появились дубликаты приложений в категории Администрирование (см. скриншот Эксперимент 2 > 2 cinnamon > mate menu администрирование) и появились новые категории, например Полезное - не уверен, связано это с данной ошибкой или нет. До установки cinnamon и входа в сессию Cinnamon дубликатов нет.
Comment 3 viy 2023-11-28 21:24:20 MSK
Благодарю!
Благодаря вашим экспериментам разобрался и вспомнил, как оно на самом деле устроено. Текущая ситуация возникла из-за недотестирования, и, соответственно, недоразвешивания багов по апстримам. Благодаря вашим усилиям, есть шанс наконец сдвинуть это дало с места.

Итак, для показа меню cinnamon сливает в одно целое

/etc/xdg/menus/cinnamon-applications.menu
(altlinux-freedesktop-menu-cinnamon)

+
/etc/xdg/menus/applications.menu
(альтернативами altlinux-freedesktop-menu-shallow-menu | altlinux-freedesktop-menu-nested-menu)
+
редактирование меню у пользователя -
~/.config/menus/*

Здесь все пока по
https://specifications.freedesktop.org/menu-spec/latest/

Также ничего злодейского нет в altlinux-freedesktop-menu-nested-menu.
Это простое многоуровневое меню основная категория > подкатегория > приложения
как и altlinux-freedesktop-menu-shallow-menu
простое одноуровневое меню основная категория > приложения

Но видимо майнтайнер cinnamon пользовался только shallow-menu
и вписал в altlinux-freedesktop-menu-cinnamon 
ряд редактирований для изменения вида, специфических для shallow-menu.
Похоже, эти подстройки не работают как ожидалось для nested-menu.

Буду разбираться.
Comment 4 viy 2023-11-30 23:21:19 MSK
У меня намечается задержка, пересобран perl, и теперь надо чинить пакеты.
Поэтому 3-4 дня не будет движений.