Вы поклонник Linux? Вы ненавидите все делать легко? Вы профессионал, который любит рисковать жизнью своего компьютера, экспериментировать и настраивать его так, чтобы получить полное удовлетворение? Добро пожаловать в клуб, малыш.

Лучшее в Linux - это то, что это не массивный черный ящик, как Windows или Mac, а скорее шедевр, сделанный из блоков Lego, и мы будем говорить о нем. очень импортная часть этого шедевра - X сервер-клиент. Основа современной среды графического интерфейса пользователя для UNIX-подобных систем.

«Те, кто не понимает Linux, обречены изобретать его заново, но плохо».

Почему?

Последовательное и хорошо разработанное программное обеспечение всегда выдерживало испытание временем. Архитектура X Server-Client не исключение. Он был разработан в 1987 году лабораторией Массачусетского технологического института и с тех пор используется во всех UNIX-подобных системах, известных человеку. В настоящее время он находится на 11-й итерации, поэтому он также известен как «X11» или просто как «. Если есть GUI, есть X-сервер. Это дает ОС преимущество; независимость от реализаций графического интерфейса пользователя, что означает, что операционная система может быть очень легкой и может поставляться полностью функциональной без графического интерфейса пользователя, если этого требует машина. Например, блейд-серверы, установленные в огромных фермах серверов, никогда не будут нуждаться в графическом интерфейсе, поэтому мы не будем перегружать их ненужным графическим интерфейсом, и, следовательно, его ресурсы используются хорошо.

Это также дает разработчикам преимущество, поскольку архитектура X-сервер-клиент была спроектирована как кроссплатформенная, разработчик может выбрать фреймворк для написания кода пользовательского интерфейса (например, фреймворк QT) и может быть уверен, что пользовательский интерфейс будет отрисован. правильно X-сервером, независимо от оборудования. В свою очередь, это дает пользователям очень плавный и последовательный графический интерфейс. Затем графический интерфейс, который необходимо будет создать для каждого приложения, будет передан на аутсорсинг X, и, следовательно, приложению не нужно беспокоиться о типе оборудования или варианте дистрибутива Linux, который использует человек.

И, честно говоря, не всем нравится хакерская атмосфера, которая возникает при использовании текстового терминала TTY. Есть нормальные люди, которым нравится красивый графический интерфейс. Так что неплохо было бы взглянуть на то, что происходит за кулисами.

Суть

Видите ли, Linux и UNIX-подобные системы используются на мощных серверных машинах, которые обладают большой вычислительной мощностью, но могут быть не очень портативными. Кроме того, эти машины очень дороги вначале. Так что умные ребята придумали решение, архитектуру - X сервер-клиент. Несмотря на то, что SSH можно использовать для удаленного доступа к машине, вывод может отображаться только на терминале, а не в окне, способном отображать графическое содержимое (отображение Bitmap). Следовательно, X-серверы тесно связаны с отображением графического содержимого. Например, вы не сможете просматривать веб-страницы на своем терминале, как в Firefox.

Мы подробно поговорим о клиенте и сервере, и, наконец, я расскажу вам, как это дает вам возможность настраивать. Давайте погрузимся в….

X клиент

Давайте сначала уберем это с нашего пути. Любое приложение, которому требуется графический интерфейс и совместимо с X-сервером, называется X-клиентом. Mozilla firefox, Xterm и т. Д. - некоторые из примеров. Терминал, который вы используете в Ubuntu, также является X-клиентом !! Ну, это ведь графические терминалы? Честно говоря, это эмуляторы терминала, которые используются для эмуляции реального терминала TTY в графической среде.

Если вы не понимаете, что такое TTY, терминал и оболочка, проверьте эту ссылку.

PS: Терминальная часть может сбивать с толку, давайте взглянем еще раз. В старые добрые времена невозможно было установить компьютер на каждом столе (слишком большой, слишком дорогой). Таким образом, у них были терминалы / консоли, которые были машинами, которые только принимали ввод, отправляли его на главную машину и отображали вывод обратно на консоль. Поэтому они и получили название TTY (телетайп). Они также есть на вашей машине Linux. Попробуйте Ctrl + Alt + F1. Чтобы выйти из него, нажмите Ctrl + Alt + F7. В этом тоже слишком много теории, но я подробно остановлюсь на ней во второй половине статьи. Просто помните, что терминал, который вы используете на своем рабочем столе, является эмулятором и фактически является X-клиентом.

Чтобы получить более подробную информацию, перейдите по этой ссылке

X сервер

Это реальная сделка. Работа X-сервера состоит в том, чтобы принимать входные данные с клавиатуры, мыши или любого другого устройства ввода, и в зависимости от текущего запущенного X-клиента он отправляет эти данные в ядро ​​для дальнейшей обработки (все, что должен делать ваш X-клиент, получает сделано здесь). Затем результат снова передается на X-сервер, и теперь X-сервер отображает его на вашем экране. довольно аккуратно, правда?

А теперь самое интересное

Между этими обработанными данными и окончательным результатом находятся два важных компонента. Как показано на изображении; один - Диспетчер окон, а другой - Диспетчер отображения / графический интерфейс. Именно эта вещь дает вам возможность настроить и выбрать то, что, по вашему мнению, вам больше всего подходит ...

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

Если бы вы открыли приложение с оконным менеджером, не работающим в фоновом режиме, вы не смогли бы изменить положение или даже размер ваших окон. У вас даже не будет кнопок закрытия, развертывания / восстановления и свертывания, поскольку у вас не будет строки заголовка. Эти вещи являются частью оконного менеджера. Он также решает, как ваши окна должны быть собраны вместе (стопка, плитка и т. Д.). Сейчас доступно множество оконных менеджеров - Compiz, I3, Awesome, Openbox и т. Д. Они также бывают разных типов - мозаика, стекирование и т. Д. Так что все зависит от вас, какой из них вы хотите использовать. По умолчанию для Ubuntu используется Compiz.

PS: Сейчас многие X-клиенты поставляются с клиентским оформлением, которое включает в себя строку заголовка с самим клиентом, что означает, что они будут работать без оконного менеджера, но не для всех клиентов. На самом деле терминал Ubuntu не поставляется с клиентским оформлением.

Взгляните еще раз на схему.

Диспетчер отображения

Диспетчер отображения - это, по сути, среда рабочего стола. Это этап, на котором размещаются все окна приложения. Диспетчеры окон, обозреватели файлов, док-станция и т. Д. Работают рука об руку со средой рабочего стола, чтобы обеспечить единообразие взаимодействия с пользователем. Есть много различных сред на выбор - KDE, Unity, GNOME и т. Д. Вы всегда можете установить более одной из этих сред на вашем компьютере и переключаться между ними, когда захотите.

Взгляните еще раз на схему.

Основная идея здесь в том, что вся ОС остается такой, какая она есть (ядро, disto, файловая система; все), но ваши компоненты графического интерфейса можно менять местами, как блоки Lego. Разве это не круто?

Истинная сила

Все, что я сказал вам до сих пор, может быть полезно для косметики вашей машины, но давайте посмотрим, какую силу это позволяет нам использовать.

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

Эта архитектура действительно сияет, когда мы используем ее в сети компьютеров. Теперь рассмотрим это; на вашем компьютере нет браузера (Firefox), но у вашего друга он есть. Что ж, вы можете использовать ssh, но проблема в том, что Firefox нужен графический интерфейс, и, как я уже сказал, графический интерфейс не может отображаться на терминале. Итак, что вам нужно сделать, это использовать функцию X-переадресация. По сути, это позволяет вам отправлять входные данные по сети X-клиенту вашего друга и получать выходные данные (команды о том, как визуализировать графический интерфейс) на ваш X-сервер, следовательно, пересылка. Таким образом, графический интерфейс, который генерирует машина вашего друга, отображается на вашем дисплее. GUI по сети. Разве это не круто?

PS: Обратите внимание, что если на вашем компьютере установлен Firefox с темами и всем остальным, а Firefox вашего друга полностью необработанный, то при перенаправлении X с его компьютера будет отображаться необработанная версия Firefox на вашем компьютере, что указывает на то, что команды для рендеринга Firefox действительно исходят с машины вашего друга.

Это отличное видео Джо Коллинза, которое послужит практическим руководством к этой статье

Полезные термины и определения

Интересный факт

Если вы смотрели видео Джео Коллинза, о котором я вам рассказывал, то вы, должно быть, заметили, как он развертывает оконный менеджер со своего терминала TTY. Как только ваша система загружается, она открывает 8 неграфических терминалов TTY, к которым вы можете получить доступ, используя Ctrl + Alt + (F1 - F8). Ваш графический интерфейс развернут на 7-м терминале, поэтому вы возвращаетесь к своему графическому интерфейсу, когда нажимаете Ctrl + Alt + F7. Это означает, что вы можете войти в систему с этих 7 терминалов как другие пользователи и также развернуть там среду рабочего стола. Количество терминалов по умолчанию - 8, что вы можете случайно, если хотите.

Несколько слов перед тем, как я уйду ...

Быть пользователем Linux - это ответственность; обязанность учиться, совершенствоваться и проповедовать. Никогда не бойтесь экспериментировать и никогда не подавляйте желание измениться. Принимать вещи как должное - преступление, всегда заглядывайте под капот ...

Обучение - это путешествие, давайте учиться вместе - Mindorks