Виджеты для Unix/Linux систем

Виджеты для Unix/Linux систем

16.02.2018 09:37:20 Просмотров 17 Источник

Здравствуйте. Может кто-нибудь объяснить на пальцах или кинуть статейку, о том, каким образом для unix/linux систем создаются виджеты? Ведь там нет родного API наподобие WinApi или COCOA для создания GUI.

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1235996_786220
что ты понимаешь под словом «виджет»?
https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1236001_786220
@Fat-Zer элемент GUI
https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1236002_786220
базовые классы элементов GUI в объектно-ориентированных библиотеках тулкитов?
https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1236011_786220
@Fat-Zer элемент графического интерфейса (кнопка, слайдер, текстовое поле...). Unix/Linux по дефолту не имеют родного API для создания GUI, т.е. грубо говоря используется консолька для взаимодействия с ядром, а вот к примеру Windows и Mac OS имеют родной API для создания GUI. Так вот, мне интересно, каким образом в Unix/Linux делают GUI.
https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1236198_786220
Видимо, виджеты - это та хренотень, которая замусоривает десктоп?
https://ru.stackoverflow.com/questions/786220/%d0%92%d0%b8%d0%b4%d0%b6%d0%b5%d1%82%d1%8b-%d0%b4%d0%bb%d1%8f-unix-linux-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc#comment1236199_786220
См документацию по DE.

Ответы - Виджеты для Unix/Linux систем / Виджеты для Unix/Linux систем

Является ответом!
Fat-Zer

18.02.2018 10:50:31

Описывать весь графический стек *nix систем довольно проблематично т.к. он содержит в себе множество исторических наслоений и достаточно разнообразен. Но базовая структура на большинстве текущих систем такая:

Есть X сервер (сервер дисплея) — это программа, работающая на машине с дисплеем и клавиатурой. Она взаимодействует с драйверами и отвечает за отрисовку на экран.

Есть клиентские приложения, по факту это прикладные программы, которые подключаются к X серверу и общаются с ним по формализованному протоколу. Подключение может быть как локальным так и удалённым (скорее историческая особенность, нежели достоинство). Протокол включает в себя средства управления окнами, рисования графических примитивов (линии, прямоугольники, текст в заданном шрифте итп), вывода готовых pixmap'ов, а также многое другое. Кроме основного протокола существует также значительное количество расширений для него. Это всё в совокупности можно считать API-0.

Обычно клиентские приложения не сами реализуют протокол, а используют для этого специальную библиотеку, обычно ей является Xlib. Она содержит минимальные надстройки над протоколом и фактически является минимальным интерфейсом, который интересен пользователю. Её С API является базой, которую используют вышестоящие библиотеки. Для большинства расширений протокола также есть свои эталонные реализации клиентских библиотек.

Выше по стеку находятся библиотеки тулкитов две основные — Gtk+ и Qt; менее популярные в наше время — fltk, Xt/Motif, EFL и др. Они в большинстве своём уже являются кроссплатформенными и предоставляют базовые графические примитивы такие как «кнопки», «слайдеры», «текстовые поля». Назвать кого-то из них стандартным нельзя т.к. те кто используют остальные сразу обижаются.

В последнее время пытаются отказаться от X в пользу других серверов, таких как Wayland, mir и др., но пока полностью это получилось сделать только у всяких отщепенцев вроде android'а и MacOs. Наиболее перспективным вариант на сегодня для десктопных Linux систем, пожалуй. является Wayland.

Закрыть X