Редактирование: Спецкурс по Linux, весна 2007, 11 лекция (от 04 мая)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1: Строка 1:
-
[[Спецкурс по Linux, весна 2007, 10 лекция (от 27 апреля)|Предыдущая лекция]] | [[Спецкурс по Linux, весна 2007, 12 лекция (от 11 мая)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
Остались только плохие темы, например, организация хостинга с апачем. Осталась локализация, но надо тащить программистов. Родилась тема, как устроен X Window. Она устроена забавно, и не все с этой забавностью на ты. По крайней мере, это такой пробел, который есть при переходе от консоли к графике.
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
Надо начать сначала. Была лекция о 4-уровневом представлении информации. Надо сказать, что linux и unix-подобные системы не нуждаются в графической оболочке. В отличие от Windows. Она не работает без графической оболочки. В случае линуха это вполне нормально, с другой стороны, для организации нормального рабочего стола нужна графика.
+
-
 
+
-
Разговор идёт об Х11 и как из него сделать рабочий стол. На лектории был сделан упор на десктоп, а здесь же более детально разберёмся с первой частью.
+
-
 
+
-
Для начала напишем список задач, которые делаются рабочим столом:
+
-
 
+
-
* Эмулятор текстовой консоли — терминал
+
-
* Несколько рабочих областей на экране — если раньше мы имели дело с ситуацией один экран – одна раб область, то теперь их несколько. Это требование опасно, ибо надо видеть не все сразу, а только то, что хочется, посему:
+
-
* Ограничение контекста
+
-
* Вот мы решили две задачи — у нас в разных местах разные программы и ими можно как-то управлять. От ГК: постоянное наличие информационных областей, например, уведомления, часы (даже терминалы это умели)
+
-
* Быстрый доступ
+
-
** К программам, к инструментам
+
-
** К ресурсам
+
-
* “Эстетические” соображения — должно быть красиво
+
-
* Управление рабочими областями
+
-
 
+
-
Только самые конкретные из этих задач могут быть решены так, чтобы всем нравилось, например, эмулятор терминала, хотя даже их несколько штук.
+
-
 
+
-
Что же по поводу остального, то там способы решения могут быть разные. В нашем мире мы ограничены идеями окна, но мы не можем сказать, что мы разработаем некоторое решение, и оно всем понравится. Например, ГК не любит иконки и когда на них что-то шевелится.
+
-
 
+
-
<div class="comment">
+
-
: ''Паша'': А часы?
+
-
: ''ГК'': А они раз в минуту шевелятся
+
-
: ''Паша'': А если с секундной стрелкой?
+
-
: ''ГК'': А если на шкаф влезть?
+
-
</div>
+
-
 
+
-
Х11&nbsp;— протокол клиент-серверного взаимодействия, где сервер что-то может, а клиент что-то хочет. Сервер&nbsp;— программа умеет рисовать и принимать события от устройств ввода, а клиент&nbsp;— программа, которая хочет рисовать и передаёт команды. Раньше можно было встретить X11R6, последний X11R7. Существует несколько реализаций этого протокола: X.org, Xfree86. Получившиеся реализации в запущенном виде это X Window System. Единственное, чего нет&nbsp;— X Windows, кроме, разве что, расшифровывать X WindowS как X Window System (Паша).
+
-
 
+
-
Раньше была The System, у ней была The W System, потом её оторвали и назвали The X Sysztem.
+
-
 
+
-
Очень много в эту систему вложено мозгов, она живёт и развивается до сих пор, особенно с появлением Хорг.
+
-
 
+
-
Архитектура: взаимодействие между клиентом и сервером. Клиент&nbsp;— наша программа, которая хочет рисовать и обрабатывать события.
+
-
 
+
-
Программа должна только знать, где находится сервер. Он может находиться на другом компьютере. Программа серверная&nbsp;— программа, которая запускается на компьютере с хорошей графкартой и устройствами ввода, и она обрабатывает команды клиентов и пересылает события.
+
-
 
+
-
Х сервер довольно универсальная программа, она может работать практически с любым устройством вывода и умеет различать всевозможные виды устройств ввода. Поэтому в его настройках довольно много пунктов.
+
-
 
+
-
Как клиент узнает, где у него сервер, и как сервер узнаёт, что клиент может управлять им?
+
-
* Существует переменная окружения DISPLAY, которая состоит из трёх частей: адрес:номер_сервера.номер_экрана. Несколько серверов бывают если воткнуты две видеокарты или в другом случае. Несколько дисплеев бывает, если карточка двухголовая.
+
-
* Как сервер узнаёт о том, что клиенту можно подсоединяться? Если бы это была передача данных, то можно было бы вводить пароль. Но при каждом старте программы вводить пароль это бред. Поэтому можно например, вводит пароль и генерить ключ. Осталось забыть про пароль и сказать, что сервер генерирует ключик, а коннектиться к нему могут все программы, которым этот ключик доступен.
+
-
** xhost&nbsp;— несекьюрный способ&nbsp;— разрешить ходить всем с определённых ip
+
-
** xauth&nbsp;— геренируется магическая печенька MIT, и теперь на него могут все ходить с печенькой. При запуске сервера говориться xauth, он геренирует ключ, кладёт его в файл, на который смотрят потом клиенты. Если клиент на другой машине, то на сервере ключ экспортируется, а на клиенте импортируется и всё хорошо.
+
-
 
+
-
== Окно ==
+
-
 
+
-
Каждый клиент может иметь несколько прямоугольных областей, внутренностями которого он может рулить. Область&nbsp;— понятие не аппаратное, ибо окна могут наслаиваться. Окно&nbsp;— прямоугольник, который зарегистрирован за определённой программой. На окна можно выводить, и содержимое окон можно читать. Второе свойство&nbsp;— если происходит событие, и оно связано с этим окном, то программа получает его себе. Раньше это было так: возили мышкой по экрану, и над каким окном мышь, того и события. Потом придумали фокус, и правила его передачи есть не наша проблема.
+
-
 
+
-
События: их очень много, и ими заведует xev. События могут быть не только от сервера, но и друг от друга. Есть даже специальная программа xse, которая может посылать события другим окнам.
+
-
 
+
-
Существуют некие не только события, но и они сами могут говорить Х-серверу, чего они хотят, например, свою геометрию. Существует некоторый специальный список свойств окна, которые можно задавать, например:
+
-
 
+
-
* Геометрия
+
-
* Позиция
+
-
* Z-ордер
+
-
* Хочет ли окно получать все события (является ли модальным)
+
-
и так далее.
+
-
 
+
-
Шрифты. Существует два подхода к тому, что собой представляют шрифты. Сначала был разработан подход серверный: приложение шрифтов не несёт, и просто говорит серверу “хочу такой” сервер говорит “нет такого, есть похожий”. Или “хочу шрифт 10 пикселов высотой, моноширинный, ...” сервер говорит: “есть 20 таких, вот тебе первый”. Чем идея хороша? Необязательно хранить шрифты на каждом клиенте. И получится такая забавная штука: в зависимости от того, на каком Х-сервере клиент запущен, программа видит по разному, и там, и там сносно довольно. Эта идея может быть развита дальше: совершенно необязательно шрифты хранить на той же машине, где и Х-сервер. Можно заиметь себе font-server, xfs, который их всем даёт. И тогда получается стройная картина.
+
-
 
+
-
В чём недостаток: недостаток первый&nbsp;— если вы используете очень дохлую машину, например, если используете LTSP (Linux terminal server Project), то каждый шрифт регистрируется и загружается в память сервера. И если один хочет выводить Хельветикой, другой Курьером (список шрифтов можно увидеть при помощи xfontsel, xlsfonts; в линуксе совершенно спокойно можно иметь 10000 шрифтов, в NT тоже) но если всеми шрифтами вывести хотя бы по одному символу, то память быстро сожрётся. Можно рендерить шрифты на стороне клиента и рисовать их как картинки. Например, xft так работает. Недостаток: при каждом клиенте должен быть свой набор шрифтов.
+
-
 
+
-
Откуда берутся сервера с номером больше 0:
+
-
* Несколько граф устройств вывода, например, две видеокарты
+
-
* Программы: xprint (вывод на принтер), xnest (программа, которая говорит, что она xserser), xvnc (X virtual network connection)
+
-
* Прокси. Можно установить секьюрное соединение и сказать “большая машина в шкафу, выводи все свои иксовые команды в сервер с номером 10”, но это не х-сервер, а прокси, который перекидывает команды с одной машины на другую. Это почти тоже самое, что указание адреса, но в качестве протокола можно использовать не голую пересылку команд, а ssh. короче, ssh -X
+
-
 
+
-
если речь идёт об архитектуре Х11, то на этом можно остановиться. Никакого рабочего стола эти возможности не дают.
+
-
 
+
-
Рабочий стол это не программа, это такие настройки.
+
-
 
+
-
Попробуем эти задачи решить:
+
-
* как сделать терминал? Достаточно воспользоваться любым PTMX, который выдаёт терминал, и потом пишете программу, которая одним концом смотрит на PTMХ, а другим на х-сервер.
+
-
* Несколько рабочих областей на экране. Окна. У них даже есть зачатки решения задачи ограничения контекста. Например, есть z-буффер и возможность превращения в иконку, или иметь состояние быть не нарисованным нигде (unmap)
+
-
* Ограничение контекста. Виртуальные экраны. У некоторых их до 20, работает это месяцами и зовут их Никита.
+
-
* Информационные области.
+
-
** Менюшки, иконки. Это такие организаторы быстрого доступа.
+
-
** Есть такие штуки, панели. Это такие полоски, которые всегда на экране и на которых что-то нарисовано. Она решает задачу информ областей и быстрого запуска.
+
-
 
+
-
Совершенно необязательно это одна и та же программа.
+
-
 
+
-
Остались две задачи: Если есть окна, то нужен механизм для их управления. Сам х-сервер ничего делать не будет. Вывод: есть окновод, который позволяет управлять окнами. Из консоли окнами управлять неудобно, хотя такие программы есть (wmctrl, xwit). Окновод – это клиент.
+
-
 
+
-
Почему панель это не window manager. Задача окновода это управлять окнами, у панели другая задача. Это могут быть вообще разные программы, например, 9wm. а есть монолитные среды.
+
-
 
+
-
Интегрированные, однородные среды. Рабочие столы: KDE, Gnome, xfce, rocks. Идея в том, чтобы под каждую из этих задач предложить своё решение. Идея гнома и кед дополнительно в том, что предлагается единый интерфейс. Плюс единство настроек. Всё настраивается в одном месте (правда это места до ужаса большое и напоминает одно место), с помощью гуёвой настроечной программы. Ну и всякие мелочи вроде драг-н-дропов... Какую цену мы платим: там одна парадигма на всех виндузообразная, и её не поменяешь. Ещё это начинает жрать безумное количество ресурсов.
+
-
 
+
-
Осталось: .xdefaults и .xinitrc
+
-
 
+
-
{{Спецкурс по Linux, весна 2007}}
+
-
{{Lection-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы