как устроена графика в linux

Графический интерфейс в Linux

На протяжении предыдущих лекций Мефодию ни разу не потребовалось для выполнения своих задач покидать пределы текстового терминала. Что и понятно, в основном он занимался освоением самой системы Linux, а главные средства управления ею — командная строка и текстовый редактор. Тем не менее, для современного пользователя персональный (да и вообще любой) компьютер — это не в последнюю очередь устройство с широкими графическими возможностями, и часть задач, которые должен выполнять компьютер для пользователя, — непосредственно графической природы, например, показ фильмов или создание изображений. Но такими специфическими задачами использование графического интерфейса не ограничивается.

Графические средства ввода-вывода поволяют организовать интерфейс, принципиально отличающийся от терминала — оконный. На сегодняшнй день любому пользователю компьютера знакома такая модель организации графического интерфейса: окна, меню, кнопки. Оконный интерфейс позволяет использовать пространство экрана гораздо более эффективно, чем обыкновенный текстовый терминал на виртуальной консоли: здесь одновременно можно открыть несколько окон, относящихся к разным задачам, и наблюдать за их работой одновременно. Собственно, в рамках окна может выполняться любая задача, в частности — текстовый терминал! При помощи оконного интерфейса пользователь Linux может следить за несколькими задачами на разных терминалах одновременно, а не по очереди.

оконный интерфейс Модель интерфейса, в которой пространством ресурсов является экран — прямоугольная область, в которой организуется ввод и вывод. Субъектами в оконном интерфейсе выступают задачи, вводящие и выводящие данные в рамках окна — области в рамках экрана.

Однако все задачи управления системой в Linux решаются посредством текстового терминала, да и очень многие задачи пользователя — как заметил Мефодий даже по своему небольшому опыту — тоже, поэтому никакой системной необходимости в графических средствах ввода-вывода в Linux нет. Графический интерфейс в Linux — это отдельная задача, наподобие системной службы или демона, поэтому в некоторых системах может даже вовсе отсутствовать программное обеспечение для организации графического интерфейса1. Такая задача получает единоличный доступ к устройству графического вывода (видеокарта), а программам, использующим графические ресурсы, она предоставляет объектную модель графических примитивов (функции рисования линий, прямоугольников, отображения цвета и т. п.), набодобие того, как ядро предоставляет доступ к ресурсам жёсткого диска в терминах объектной модели файловой системы. Поэтому весь комплекс программ для работы с графическими устройствами принято называть графической подсистемой.

Каким пользователям разрешено запускать и останавливать графическую систему — зависит от профиля системы.


Иллюстрация 1. Запуск графической подсистемы из командной строки

В некоторое недоумение поставил Мефодия предложенный ему выбор из нескольких кнопок. Проконсультировавшись у Гуревича, он выяснил, что каждая из кнопок соответствует программе, по-своему организующей графический интерфейс, и что он может попробовать все по очереди и выбрать ту, которая будет наиболее подходящей для его стиля работы. Не мудрствуя лукаво, Мефодий нажал на первую же кнопку, обозначенную « KDE ».


Иллюстрация 2. Запуск KDE

После некоторого ожидания на мониторе возникло всё то, что Мефодий ожидал увидеть в графическом интерфейсе: иконки, панель с кнопками внизу экрана, меню. Однако если бы после запуска startx Мефодий выбрал другую кнопку вместо « KDE », графический интерфес предстал бы перед ним совсем в другом виде и предоставлял бы несколько другие возможности и приёмы работы. Далее в лекции объясняется устройство графической подсистемы в Linux. Станет понятно, почему процесс запуска графического интерфейса оказался таким двуступенчатым и почему работа с графическим интерфейсом в Linux может быть организована по-разному.

Источник

Анатомия GNU/Linux

Какое-то время назад на Хабре была небольшая волна постов на тему «Почему я [не] выбрал Linux». Как порядочный фанатик я стриггерился, однако решил, что продуктивнее что-нибудь рассказать о своей любимой системе, чем ломать копии в комментариях.

У меня сложилось впечатление, что многие пользователи GNU/Linux слабо представляют, из чего сделана эта операционная система, поэтому утверждают, что она сляпана из попавшихся под руку кусков. В то же время, архитектура большинства дистрибутивов является устоявшейся и регламентируется рядом стандартов, включая стандарт графического окружения freedesktop.org и Linux Standard Base, расширяющий стандарты Unix. Мне при знакомстве с GNU/Linux несколько лет назад для погружения не хватало простой анатомической карты типичного дистрибутива, поэтому я попробую рассказать об этом сам.

Загрузчик

Сеанс операционной системы начинается с загрузчика, как театр с вешалки. Дефолтным загрузчиком сегодня является GNU GRUB, известный так же как GRUB 2. По-прежнему доступна первая ветка, называемая теперь «GRUB Legacy». Другой загрузчик с давней историей — Syslinux.

Задача загрузчика — инициализировать ядро Linux. Для этого, в общем случае, нужно знать, где ядро лежит, и уметь прочитать это место (раздел Ext4, скажем). Ядру в помощь загрузчик обычно так же подтягивает начальный образ загрузки, о котором скажем позже. GRUB умеет много прочего, типа построения весьма сложных меню и чейнлоадинга других загрузчиков (Windows Boot Manager например). GRUB имеет конфигурационный синтаксис, отдалённо напоминающий шелл, и расширяется модулями.

GRUB велик и могуч, порой даже слишком, и встраиваемые системы часто используют компактный Das U-Boot.

В рамках одного дистрибутива может поддерживаться несколько вариантов ядра, например:

mainline («основное»);

LTS (с расширенной поддержкой);

rt (патченное для поддержки исполнения в режиме реального времени);

с различными патчами для повышения производительности или защищённости (zen, hardened etc);

libre (почищенное от проприетарных блобов ядро, ожидаемо поддерживающее мало оборудования).

совсем экзотичные варианты с не-Linux ядром типа Debian GNU/Hurd (с ядром GNU Hurd) и Debian GNU/kFreeBSD (с ядром FreeBSD соответственно). Это уже, конечно, не GNU/Linux.

Начальный образ загрузки

Начальный образ загрузки известен так же как initrd и initramfs. Представляет собой архив с образом файловой системы, развёртываемой в оперативную память в начале процесса загрузки. Несёт в себе различные драйверы и скрипты, позволяющие инициализировать оборудование и смонтировать файловые системы.

Содержимое начального образа загрузки зависит от версии ядра и потребностей пользователя (кто-то использует ZFS, а у кого-то корень зашифрован LUKS). Поэтому образ не поставляется в дистрибутивах. В дистрибутивах поставляются фреймворки для создания начальных образов по мере необходимости. Так, обычно создание свежего образа инициируется при обновлении ядра. Вот несколько популярных фреймворков:

initramfs-tools — детище Debian.

Dracut (произносится созвучно с сушёной кошкой) — в RHEL и производных (CentOS, Scientific Linux etc.). Наиболее гибкий и современный инструмент из перечисленных, если спросите меня.

mkinitcpio поставляется в Archlinux, хотя мейнтейнеры подумывают о Dracut, который уже включён в репозиторий и установочные образы.

make-initrd — свой путь у замечательного отечественного дистрибутива Alt Linux.

Тут же упомянем Plymouth, размещаемый в начальном образе. Это заставка (сплэш-скрин), позволяющая заменить вывод ядра при загрузке на произвольную анимированную картинку, например логотип дистрибутива, что принято в «дружелюбных к пользователю»™ дистрибутивах типа Ubuntu и Fedora.

Командная оболочка

Наиболее распространены сегодня следующие оболочки:

Bourne shell (sh) — «тот самый шелл», сложно найти дистрибутив без него.

Bourne again shell (bash) — принят по умолчанию в качестве пользователькой оболочки в большинстве GNU/Linux дистрибутивов и предлагает ряд удобств по сравнению с sh.

Debian Almquist shell (dash) — компактная облочка, совместимая с sh. Традиционно используется в Debian, где /usr/bin/sh на неё ссылается.

Z shell (zsh) — похож на bash, но предлагает оригинальные фишечки для интерактивного ввода. Редко идёт из коробки, но обычно поставляется в репозитории.

Графический сервер

Демон, отвечающий за отрисовку окошек. Золотой стандарт графического сервера — X Window System с нами аж с 1984 года. Это именно стандарт, архитектура и набор протоколов. Реализаций за прошедшие годы была уйма, в каждой собственнической Unix-системе была своя. В GNU/Linux (и BSD) долгое время применялся Xfree86. Теперь с нами X.Org Server, или просто Xorg, он отпочковался от XFree86.

X Window System — мощная и богатая система, так, одна из возможностей — сетевая прозрачность. Вы можете запустить на своём хосте графическое приложение с другой машины, даже когда на той машине графический сервер не запущен. При помощи SSH это можно сделать, например, так (может потребоваться небольшая донастройка sshd):

Надо сказать, терминология X Window System контринтуитивна: клиентом называется графическое приложение, а сервером — отрисовывающее. На этот счёт прошлись в классической монографии «The UNIX-HATERS Handbook».

Другая возможность X, отрисовка графических примитивов и текстовых глифов, использовалась в старые времена, когда мужчины были мужчинами и рисовали окошки сами, без тулкитов.

В окружениях рабочих столов активно используется X keyboard extension, расширение, отображающее нажатие клавиш на различные раскладки.

«Иксам» пророчат скорую кончину. Именно обширность и сложность стандарта побудила разработчиков СПО начать работу над новым стандартом — протоколом Wayland. Wayland достиг определённой стадии зрелости и с переменным успехом внедряется дистрибутивами как графический сервер по умолчанию. Тем не менее, проект Wayland начат в 2008 году, а стандарт X ещё не спешит уходить с голубых экранов.

Оконный менеджер Weston

После старта графический сервер обслуживает иерархию окон. Существует понятие «корневое окно» (root window), оно, в свою очередь, «владеет» окнами панелей, приложений. Окна приложений «владеют» своими модальными окнами. Обычно обои рабочего стола отрисовываются в корневом окне.

Дисплейный менеджер

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

Жизнь без DM Жизнь c SDDM

Типичные представители дисплейных менеджеров:

GDM из набора GNOME;

SDDM из комплекта KDE;

LightDM — универсальный вариант;

FlyDM — из поставки Astra Linux.

Окружение рабочего стола

Окружения рабочего стола (DE) состоит из ряда стандартных компонентов, таких, как:

панель с треем и меню запуска приложений;

хранитель экрана, он же блокировщик экрана;

браузер, которым никто не пользуется;

почтовый клиент (у зажиточных окружений);

Два могучих окружения, GNOME и KDE, сражаются за сердца простых пользователей, а остальные массовые десктопы им завидуют нередко пользуются их наработками. Некоторые хардкорные пользователи предпочитают собирать окружение рабочего стола самостоятельно на базе оконных менеджеров типа Awesome и i3.

Оконный менеджер Window Maker

На скриншоте оконный менеджер Window Maker из состава GNUstep. GNUstep воспроизводит окружение NeXTSTEP. Поставляется в репозиториях большинства дистрибутивов.

Графические тулкиты

Графический тулкит — библиотека или фреймворк, упрощающая рисование формочек и кнопочек, причём в едином стиле. То, чем занимается Windows Forms на ОС другого производителя, а так же занимался некогда полулярный Motif на старых юниксах (Open Motif доступен поныне).

Флагманами в этой категории долгое время были и остаются GTK и Qt. GTK родился как тулкит для свободного графического редактора GIMP и позже переполз под крыло GNOME. Написан на чистом C с классами, имеет официальные байндинги к Python и C++, а ещё породил целый язык общего назначения Vala. Qt — изначально коммерческий проприетарный тулкит, сейчас является свободным ПО (но по-прежнему коммерческим). Написан на C++ с размахом, заменяя стандартную библиотеку и кучу других библиотек и предлагая метаобъектный компилятор (кодогенератор). Имеет байндинги к куче языков. KDE гордо зиждется на этом великолепии.

Графическое API

Mesa — это каркас для видеовывода. Меза предоставляет API OpenGL и, с не столь давних пор, Vulkan (и несколько других API типа VDPAU и VAAPI). Можно сказать, что Mesa берёт на себя вопросы графики, которыми обычно занимается DirectX в ОС другого производителя.

Безопасность

Обширная часть системы, и я недостаточно компетентен, чтобы в неё углубляться, тем не менее, обзорно рассмотрим.

PAM — Pluggable Authentication Modules — модульная система авторизации. Отвечает, как понятно из названия, за авторизацию пользователей в системе, причём разными способами. Через PAM авторизуются в том числе доменные пользователи, в таком случае PAM действует в связке с имплементацией Kerberos (обычно MIT’овский krb5), поскольку сам по себе PAM не работает с удалёнными клиентами. Модули представляют собой разделяемые библиотеки (исполняемые файлы с суффиксом so ) и позволяют делать интересные штуки при входе пользователя. Например, можно создавать домашнюю директорию при первом входе ( pam_mkhomedir.so ) или монтировать файловые системы ( pam_mount.so ).

Классическая утилита su и более молодая sudo предназначены для исполнения комманд от имени другого пользователя (по умолчанию root ). Наиболее значимая разница — su требует пароль пользователя, из-под которого вы хотите работать, а sudo — ваш пароль. sudo гибко настраивается, позволяя запускать только определённые команды определённым пользователям из-под других определённых пользователей, как-то так.

Менеджер авторизации Polkit позволяет непривилегированным процессам взаимодействовать с привилегированными. По сути он похож на sudo, но обладает превосходящей гибкостью и предназначен в первую очередь для приложений, в то время как sudo — утилита для пользователя. Правила пишутся, внезапно, на JavaScript’е.

Linux Security Modules (LSM) — фреймворк внутри ядра Linux, позволяющий накладывать на систему дополнительные моде́ли безопасности. Это достигается при помощи мо́дулей безопасности, не путать с модулями ядра. Наиболее популярные модули безопасности — SELinux и AppArmor. Первый явлен миру АНБ и развивается Red Hat, второй рождён в рамках ОС Immunix и сегодня развивается Canonical Ltd. Соответственно, SELinux поставляется в RHEL и производных, а AppArmor — в Ubuntu. Оба модуля имеют сходное назначение и привносят в систему мандатное управление доступом. Оба модуля повышают безопасность системы, не позволяя приложениям делать то, что от них не ожидается. Так, сконфигурированные модули безопасности не дадут веб-серверу шариться по диску вне нескольких ожидаемых директорий. Обратной стороной является необходимость конфигурировать систему безопасности для каждого мало-мальски нестандартно настроенного приложения. Не у многих на это хватает энтузиазма, так что обычно модуль безопасности просто переключается в разрешающий режим.

Антивирусные программы для GNU/Linux существуют, но мне не встречались дистрибутивы, где бы они шли из коробки, кроме специализированных решений для сканирования системы.

Подсистема печати

CUPS — «общая система печати UNIX», рождённая компанией Apple. Система модульная, поддерживает огромное количество устройств и, насколько мне известно, на сегодня не имеет альтернатив. А ещё CUPS имеет веб-интерфейс (по умолчанию на localhost:631).

Морда CUPS

Звуковая подсистема

Продолжительное время основной звуковой подсистемой ядра является ALSA. Некоторые пользователи ошибочно считают, что PulseAudio заменил ALSA. Это не так, PulseAudio — это звуковой сервер, являющийся лишь слоем абстракции, упрощающим управление аудиопотоками. Другим аудиосервером является JACK, который предназначен для профессиональной работы с аудио. Он не столь удобен для пользователя, но обеспечивает низкие задержки и предоставляет гибкую маршрутизацию MIDI-потоков.

Red Hat готовит нам PipeWire на замену PulseAudio и JACK. Следим за событиями.

Межпроцессное взаимодействие

Здесь речь не про низкоуровневые POSIX-штуки типа разделяемой памяти и сокеты. За свой век GNU/Linux повидал несколько подсистем, призванных упростить межпроцессное взаимодействие (IPC) десктоп-приложений. Сейчас правит бал шина сообщений D-Bus, а об остальных позабыли. Для чего это нужно? Например, некая служба посылает в шину сообщение об изменении своего состояния, а апплет панели слушает его и изменяет свой индикатор. Так обычно работают апплеты громкости и клавиатурной раскладки.

Работоспособность WiFi-устройств, как правило, обеспечивает демон WPA supplicant, у которого есть конкурент iwd, написанный ни много ни мало, компанией Intel.

Тут же хочется упомянуть демон Bluez, обеспечивающий работу с Bluetooth-устройствами.

Межсетевой экран

Слава iptables гремит далеко за узким кругом бородатых админов. Это не фильтр сам по себе, а лишь набор утилит в пространстве пользователя, работающий с подсистемой Linux Netfilter. Недавно (в историческом масштабе) добавилась подсистема ядра nftables и соответствующая пользовательская утилита nft. Это было сделано, в первую очередь, для унификации интерфейсов таблиц маршрутизации IPv4, IPv6, ARP и софтовых L2-коммутаторов. В современных дистрибутивах команды iptables являются лишь обёрткой для nftables и не рекомендуются к использованию. В целом, конфиг nft выглядит опрятнее дампа iptables.

Существует пачка высокоуровневых фаерволлов-обёрток над nftables (в том числе графических), так в RHEL и производых из коробки идёт firewalld, а в Ubuntu — UFW.

Пакетный менеджер

Пакетный менеджер — это сердце дистрибутива. Наиболее именитые и с длинной историей — это RPM из мира Red Hat и dpkg из семества Debian. Пример более современного — pacman из Arch Linux. Старожилы RPM и dpkg работают только с локальными пакетами: они их распаковывают, устанавливают и проверяют, что все зависимости удовлетворены. Работой с репозиториями занимаются другие утилиты, являющиеся как бы фронтендом к самому пакетному менеджеру. В RHEL ранее поставлялась утилита yum, на замену которой пришла dnf, в Debian раньше были apt-get и apt-cache, затем их увязали в одну команду apt. Более молодой pacman не имеет видимого пользователю разделения на несколько утилит и предлагает очень простой формат пакетов, которые можно собирать буквально на коленке. Есть и множество других, со своими особенностями. Например nix, который позволяет иметь в системе несколько версий одного пакета.

Новое в исторических масштабах явление — кросс-дистрибутивные системы поставки приложений. Появились в попытке преодолеть ад зависимостей, облегчить труд разработчиков и мейнтейнеров (избавив их от необходимости создавать десятки пакетов под разные версии и ветки GNU/Linux). Наиболее популярные проекты: Flatpack от Gnome, Snap от Canonical и AppImage сам по себе. Они несколько отличаются подходами, но в общем случае обеспечивают установку приложений со всем рантаймом и некоторой степенью изоляции от системы. Штуки удобные, однако подход несколько напоминает традиции тащить все зависимости с устанавливаемой программой в популярной ОС другого производителя. Простоты и порядка в систему не добавляют.

Для перечисленного добра есть красивые обёртки в виде магазинов приложений, два самых ходовых — GNOME Software и KDE Discover.

KDE Discover GNOME Software с фирменной кнопочкой в заголовке окна

Заключение

Краткая результирующая диаграмма:

Современный GNU/Linux в представлении художника

Если присмотреться к перечисленным составляющим GNU/Linux, можно заметить, что львиная доля технологий привносится несколькими крупными организациями. К ним относятся:

проект GNU под эгидой Free Software Foundation;

Red Hat, производитель коммерческого дистрибутива, недавно вошедший в состав IBM;

сообщество kernel.org при поддержке Linux Foundation.

В интернете ради флейма часто вкидывают, мол, поглядите — эти ваши линуксы делают клятые корпорации, где ваше хвалёное сообщество? Я думаю, не стоит противопоставлять отдельных энтузиастов и организации: все они вращают колесо open source. В конце концов, в больших организациях трудятся обычные люди. В итоге мы имеем очень динамичную систему, в которой не без причины компоненты сменяются один за другим, всё это куда-то движется, и, в общем-то, год от года хорошеет. Я надеюсь, в этом очерке удалось дать представление об анатомии GNU/Linux, а может быть и заинтересовать кого-нибудь закопаться поглубже.

Большое спасибо @ajijiadduh, который отловил огромное количество опечаток сразу после публикации, и всем прочим пользователям, указавшим на ошибки.

Правки и предложения вы можете присылать по адресу https://gitlab.com/bergentroll/gnu-linux-anatomy.

Copyright © 2020 Антон «bergentroll» Карманов.

Источник

Как организован стек графики linux?

Может ли кто-нибудь объяснить (надеюсь, с картинкой), как устроен стек linux-графики? Я все время слышу о X / GTK / GNOME / KDE и т. Д., Но я действительно не знаю, что они на самом деле делают, и как они взаимодействуют друг с другом и другими частями стека. Как вступают Unity и Wayland?

Система X Window использует архитектуру клиент-сервер. X-сервер работает на компьютере с дисплеем (мониторы + устройства ввода), а клиенты X могут работать на любой другой машине и подключаться к X-серверу с использованием протокола X (не напрямую, а с помощью библиотеки, например Xlib, или более современный неблокирующий XCB, управляемый событиями). Протокол X разработан как расширяемый и имеет множество расширений (см. xdpyinfo(1) ).

Настольные среды представляют собой коллекции программ, предназначенных для обеспечения единого пользовательского интерфейса. Настольные среды обычно предоставляют панели, пусковые установки приложений, системные лотки, панели управления, конфигурационную инфраструктуру (где сохранять настройки). Некоторые известные настольные среды – это KDE (построенный с использованием инструментария Qt), Gnome (с использованием GTK), Enlightenment (с использованием собственных библиотек инструментальных средств), …

Таким образом, со сложностью обработки устройств в настоящее время в основном вне X, стало легче экспериментировать с упрощенными оконными системами. Wayland – это оконная система, основанная на концепции составного менеджера, то есть оконная система является составным менеджером. Wayland использует обработку устройства, которая вышла из X и отображает с помощью OpenGL.

Что касается Unity, это среда рабочего стола, предназначенная для использования пользовательского интерфейса, подходящего для нетбуков.

Традиционный стек построен на трех основных компонентах:

Архитектура X была создана сеть, что позволило клиентам быть на отдельном хосте, а затем на сервере.

Все идет нормально. Однако это был образ с обратной стороны. В настоящее время процессор не обрабатывает графику, а графический процессор. Были предприняты различные попытки включить его в модель – и место, когда ядро ​​расширяется.

Во-первых, были сделаны некоторые предположения относительно использования графической карты. Например, предполагалось только отображение на экране. Я не могу найти эту информацию в википедии прямо сейчас, но DRI 1 также предположил, что только одно приложение будет использовать OpenGL в одно и то же время (я не могу сразу привести цитату, но я могу выкопать ошибку там, где она была близка, как WONTFIX с запиской, чтобы дождаться DRI 2).

Было предложено несколько временных решений для косвенного рендеринга (необходимых для составного WM):

Начаты работы над новой архитектурой (DRI 2). Это включало:

Как-то ортогонально, чтобы перейти к ядру, началась работа над драйверами Gallium. Библиотека Mesa началась с реализации OpenGL на процессоре, а затем начала использовать ускорение GPU. Он всегда подтягивался к OpenGL. В OpenGL 3.0 модель значительно изменилась, и переписывание библиотеки было неизбежным. Тем не менее, они используют возможность разделить код на несколько слоев, извлекая общий код и предоставляя низкоуровневый API, позволяющий реализовать на нем различные 3D API – например, Wine, чтобы DirectX разговаривал напрямую с Gallium вместо того, чтобы проходить через OpenGL API (который может не иметь прямых вызовов 1-1).

Wayland – это проекты, которые считают вышеизложенное немного сложным и слишком «историческим». Конструкция с 1984 года (хотя сильно модифицирована и адаптирована) не соответствует началу 21 в. по словам сторонников.

Предполагается предложить большую гибкость и лучшую производительность, хотя по-прежнему отсутствуют некоторые важные функции, такие как полная поддержка OpenGL (и важная для некоторых – поддержка сети).

Немного больше о средах рабочего стола и менеджерах окон. Диспетчер окон – это приложение, ответственное за то, как будет вести себя окно – например, оно отвечает за управление рабочими пространствами, рисование заголовка (вещь сверху экрана с заголовком Windo и кнопки минимизации / максимизации / закрытия) и т. Д.

Во-первых, использовался только минимальный WM, но потом пользователь начал искать среду рабочего стола – то есть более функциональную версию, включающую запуск меню, фон рабочего стола и т. Д. Однако большинство частей среды рабочего стола не является оконным менеджером, хотя они часто интегрируются.

Через некоторое время был введен составной WM, который использует OpenGL и косвенную визуализацию для выполнения своей работы. Они обеспечивают не только графические эффекты, но также позволяют упростить реализацию некоторых функций доступности (например, лупы).

Прежде всего, на самом деле нет графического стека Linux. Linux не имеет графических возможностей отображения.

Однако приложения Linux могут использовать графические дисплеи, и для этого существует множество различных систем. Самые распространенные из них построены поверх X окон.

X – это сетевой протокол, поскольку в середине стека протокола X вы можете иметь сеть как стандартный компонент. Давайте посмотрим на конкретный вариант использования. Физик в Берлине хочет провести эксперимент в ЦЕРНе в Швейцарии на одном из коллайдеров ядерных частиц. Он регистрируется удаленно и запускает программу анализа данных на одном из суперкомпьютерных массивов CERN и отображает результаты на экране.

Затем в Швейцарии приложение подключается к дисплею с использованием протокола X и отправляет команды графического отображения, такие как «рисовать прямоугольник» или «альфа-смесь». Приложение, вероятно, использует графическую библиотеку высокого уровня, и эта библиотека, в свою очередь, будет основана на библиотеке более низкого уровня. Например, приложение может быть написано на Python с помощью инструментария WxWidget, который построен поверх GTK, который использует библиотеку Cairo для основных графических команд рисования. Также может быть OPENGL также над Каиром. Слои могут быть такими: WxWidgets-> GTK-> Cairo-> X Toolkit-> X protocol. Очевидно, что протокол в середине соединяет вещи, и поскольку Linux также поддерживает UNIX-сокеты, полностью внутренний транспорт для данных, эти два типа вещей могут работать на одной машине, если вы хотите.

X относится к протоколу и всему, что имеет фундаментальное значение для архитектуры, такой как X-сервер, который запускает графический дисплей, указывающее устройство и клавиатуру.

GTK и QT – это две общие GUI-библиотеки общего назначения, которые поддерживают окна, диалоги, кнопки и т. Д.

GNOME и KDE – это две среды рабочего стола, которые управляют окнами на графическом рабочем столе, предоставляют полезные апплеты и предметы, такие как кнопки. Они также позволяют нескольким приложениям общаться через X-сервер (X-терминальное устройство), даже если приложения работают на разных удаленных компьютерах. Например, копирование и вставка – это форма взаимодействия между приложениями. GNOME построен поверх GTK. KDE построен поверх QT. И можно запускать приложения GNOME на рабочем столе KDE или приложения KDE на рабочем столе GNOME, потому что все они работают с одним и тем же базовым X-протоколом.

Это его организация, вы узнаете больше из этой картины, что с нескольких страниц текста:

Linux на рабочем столе и на некоторых серверах все еще есть графика X и фреймов. В X-окне – Приходит GTK + и Qt, YES BOTH использует систему X, снова есть множество настольных сред – Gnome, KDE использует X-дисплей и их оболочки и т. Д.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • как устроен виндовс подробно
  • как устранить системные прерывания на виндовс 10
  • как устранить синий экран на windows 10 2021
  • как устранить растянутое изображение на мониторе в windows 10
  • как устранить размытость экрана в windows 10

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии