skroo:
Опять же X Server обеспечивает базовую функциональность - каким образом? Он предоставляет какой-то интерфейс (API) для кого-то?
Инетрфейс, да.
skroo:
Взаимодействие с мышью/клавой это как? Я передвинул курсор, изменились координаты, X Server куда-то их передает?
Если коротко:
сместили мышь;
драйвер получил эту информацию;
отдал в Хы;
Хы отобразили изменение положение курсора.
skroo:
В играх также всё через него взаимодействие?
А без него никуда.
skroo:
Если возьмем вывод на экран, цепочка такая: монитор - видеокарта - драйвер для видюхи - X Server. Так получается?
Эээ. Не совсем. Получается:
видеокарта формирует сцену;
отдает его Хам;
Хы рисуют на мониторе то, что пришло.
Что-то вроде как-то так на бытовом уровне. Но не уверен, что способен глубже объяснить, не мой профиль.
skroo:
Какое отношение ко всему этому имеет GTK/Qt/...? Это, я так понимаю, элементы управления - кнопки, всякие списки и т.д? Т.е. всё то, что внутри окна? Они работают с X Server для вывода на экран?
Qt/GTK и иже - это те самый фреймворки, силами которых реализуются возможности DE. И без Хов они ничего не выведут.
skroo:
Если WM отвечает за прорисовку окна, каким образом программы могут обходить это и создавать полностью кастомные окна - тот же chromium, у них вкладки в заголовке окна?
Если я правильно понял, Chromium использует свой рендер (отрисовшик) в своих(!) процессах (т.е. установки WM он не меняет):
- код выделить все
asmodeus 23964 23926 0 17:48 ? 00:00:00 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --lang=en-US --force-fieldtrials=Prerender/PrerenderEnabled/UMA-New-Install-Uniformity-Trial/Control/UMA-Session-Randomized-Uniformity-Trial-5-Percent/group_09/UMA-Uniformity-Trial-1-Percent/group_61/UMA-Uniformity-Trial-10-Percent/group_02/UMA-Uniformity-Trial-100-Percent/group_01/UMA-Uniformity-Trial-20-Percent/group_02/UMA-Uniformity-Trial-5-Percent/group_05/UMA-Uniformity-Trial-50-Percent/group_01/ --enable-deadline-scheduling --extension-process --disable-accelerated-video-decode --channel=23916.1.270787929
И таки WM как средство управления окнами он использует:
Как видите, закладки у него трапециевидные, хромовские, в то время как декорации окна (сего-голубого цвета) - общесистемные. И управление этим окном (изменение размера, сворачивание и т.п.) - одно на всех, не смотря на то, что хром порождает один процесс на каждую закладку:
- код выделить все
asmodeus 24030 23926 6 17:48 ? 00:00:34 /usr/lib/chromium-browser/chromium-browser --type=renderer ...
asmodeus 25661 23926 12 17:56 ? 00:00:00 /usr/lib/chromium-browser/chromium-browser --type=renderer ...
Обратите внимание на id родительского процесса (вторая цифра).
skroo:
Я так понимаю, что всё работает через X Server и если понять, каким именно образом он обеспечивает базовую функциональность, то всё станет гораздо понятнее.
По-моему, проще абстрагироваться:
вот Х Server, он отвечает за ввод/вывод;
вот WM, он отвечает за окна;
вот DE, оно отвечает за все остальное.
Потому как работу конкретно Х Server с оборудованием знать надо, если собираешься программировать его. И тут надо придется менять форум на x.org.