Как устроен MATE-десктоп?

блог всячепуза
 
кто рисует меню в MATE ?
какая программа рисует главное меню?
как ту программу заменить?
какие есть стандарты?
Какие программы запускаются в каком порядке?

Второй подход

пробуем искать по словам mate menu

находится репозиторий
https://github.com/mate-desktop/mate-menus
library that implements the "Desktop Menu Specification" from freedesktop.org
http://www.mate-desktop.org

Возможно на том сайте есть оглавление и из него станут ясны ответы на все мои вопросы?
нет там такого оглавления (сразу не видно), зато есть отсылка на wiki
http://wiki.mate-desktop.org/download
а там есть совет обратиться на канал #mate в freenode
http://wiki.mate-desktop.org/board:manifesto - манифест проработан недостаточно детально
почитаем роадмэп - http://wiki.mate-desktop.org/roadmap
Официальный репозиторий - https://github.com/mate-desktop/
Инструкция по сборке - http://wiki.mate-desktop.org/building
Руководство пользователя - https://github.com/mate-desktop/mate-user-guide
1.10 release notes - http://mate-desktop.org/blog/2015-06-11-mate-1-10-released/

http://wiki.mate-desktop.org/session (форк gnome-session http://linux.die.net/man/1/gnome-session)
To start mate-desktop, you should add mate-session to ~/.xinitrc file (Without a display manager)
(ну вот, это уже хоть какая-то конкретика)
If you have authorization problems (e.g. when mounting disks), try adding dbus-launch after ck-launch-session.

GDM, KDM, LightDM, LXDM - should autodetect Mate Desktop.
Что такое display manager и зачем он нужен? Если нужен, то как работает без него?

https://en.wikipedia.org/wiki/X_display_manager_(program_type)
When the display manager runs on the user's computer, it starts the X server before presenting the user the login screen, optionally repeating when the user logs out. In this condition, the DM realizes in the X Window System the functionality of getty and login on character-mode terminals. When the display manager runs on a remote computer, it acts like a telnet server, requesting username and password and starting a remote session.

Нужно больше конкретики - что как называется, где лежит, кто кого и как запускает.
как узнать, какой DM активен (запущен)?
как узнать, какой сконфигурирован (будет запущен в следующий раз)?

окей, ладно, вот тут https://wiki.gentoo.org/wiki/Display_manager написано
In major Linux operating systems display managers are started automatically on boot. In order for this to happen automatically a script must be added to the proper init system's runlevel.

# systemctl list-unit-files | grep dm
lightdm.service

то есть, ядро запускает init-процесс
init-процесс-запускает systemd

gsettings - http://wiki.mate-desktop.org/docs:gsettings
systemd запускает всё подряд и в частности lightdm
lightdm запускает X Server и выводит окошко для логина, после чего создаёт сессию
(а что значит "создаёт сессию"? запускает какую-то программу? какую?)
mate-session - чем она занимается?
http://linux.die.net/man/1/gnome-session
This command is typically executed by your login manager (either gdm, xdm, or from your X startup scripts, such as startx).
window manager is called "marco", it is started by mate-session:
https://wiki.archlinux.org/index.php/MATE#Use_a_different_window_manager_with_MATE

The MATE Panel 1.8.1, почему у The Mate Panel в About Box иконка гномьей пятки?
кто занимается запуском gnome-panel?
Это именно эта программа рисует главное меню или какая-то другая?

I'm greeted by my wallpaper, and nothing else. Gnome-Panel does not launch. I can use the hotkey (Ctrl + Alt + T) and then launch gnome-panel manually, and it works fine. It is not malfunctioning, but when I login, it doesn't start automatically.
gconftool --recursive-unset /apps/panel
pkill gnome-panel

run gconf-editor in a terminal. Then go to /desktop/gnome/session/required_components
see the name 'panel' and confirm that gnome-panel is written as its value.

вероятно mate-panel запускает
Notification Area 1.8.1

редактор меню:
http://wiki.mate-desktop.org/docs:mozo (fork of GNOME Alacarte)
https://github.com/GNOME/alacarte
a menu editor for GNOME using the freedesktop.org menu specification.

вот спека на меню:
http://standards.freedesktop.org/menu-spec/latest/
http://linux.m2osw.com/autohide-gnome-panel-when-two-panels-are-bottom
https://www.maketecheasier.com/4-great-alternatives-to-gnome-menu-bar/
~/.config/menus

Applets
https://developer.gnome.org/panel-applet/stable/

http://ubuntuforums.org/showthread.php?t=6517

Tomboy Gnome Panel Applet - https://lists.ubuntu.com/archives/ubuntu-mono/2013-October/042394.html
https://github.com/mate-desktop/mate-applets
GNOME at default mode don't have Default Provider in gnome.session (only in fall-back mode).
http://askubuntu.com/questions/350488/use-notify-osd-instead-notification-daemon-in-gnome-shell
Notify OSD — Notification server for Unity.

Main Menu

меню на панель добавляется:
http://linux.about.com/library/gnome/blgnome4n7.htm
то есть, если почитать описание того, как делать добавки для gnome-panel (они называется Panel Object), то можно будеть сделать своё другое меню, которое можно будет добавлять на панель.

нотификации



mate-notification-daemon - вот это интересное название (fork of gnome-notification-daemon), но нет гиперссылки. Что же он делает?
Это сервер нотификаций:
https://wiki.archlinux.org/index.php/Desktop_notifications
А ещё есть библиотека, которую используют приложения

автозапуск приложений

The auto-start application in Gnome were using sessions before. That worked great in older versions (10.04) but somehow stopped now. Instead, you have to write a little script file here:

/home/alexis/.config/autostart/gnome-terminal.desktop

[Desktop Entry]
Type=Application
Exec=/usr/bin/gnome-terminal --load-config=/home/alexis/.gnome2/terminal.ini
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Gnome Terminal
Name=Gnome Terminal
Comment[en_US]=Load terminal using ~/.gnome2/terminal.ini
Comment=Load your Gnome terminal from ~/.gnome2/terminal.ini file

Первый подход

Что обычные люди могут узнать глядя на десктоп? Практически ничего. Никакие компоненты не подписаны ни непосредственно, ни в тултипах, и нет специальной утилиты, которая выдавала бы справку при наведении на элемент интерфейса.

Как люди получают знания об устройстве десктопа? Они просматривают форум с описанием проблем и выделяют наиболее часто встречающиеся необычные слова, по которым затем пытаются восстановить общую картину какие из этих слов являются компонентами и как эти компоненты взаимодействуют.
Это очень долго и непродуктивно, даже если использовать продвинутый текстовый процессор типа wiki

mate
это, наверное, название desktop environment (DE)
marko
менеджер окон по-умолчанию
gnome-panel
gnome-panel --replace
gnome-shell
???
редактор конфигурации MATE
позволяет задавать менеджер окон. Менеджер окон по-умолчанию - marko
менеджер окон
зачем вообще нужен менеджер окон, какие функции он выполняет/реализовывает?
иксы и их настройки
Файлика .xinitrc нет - иксы работают на общесистемных настройках.
compiz
в качестве менеджера окон
Есть два варианта запуска:
- через настройки, изменяемые редактором конфигурации MATE
- через "запускаемые приложения" командой compiz --replace
при зависании файл .xsession-errors раздувается до 6-7 мегабайт за счёт многократно повторяющейся одной строки:
"Предупреждение менеджера окон: У экрана 0 дисплея «:0» уже есть менеджер окон. Попробуйте использовать параметр --replace, чтобы заместить текущий менеджер окон."
gnome 3
это, наверное, название DE
cinnamon
это, наверное, название DE