Редактирование: UNИX, осень 2007, 05 лекция (от 02 ноября)
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 29: | Строка 29: | ||
=== X-сервер === | === X-сервер === | ||
- | Почему графическая среда устроена так гибко? Почему всё необязательно? А что обязательно? Обязательна ровно одна вещь — X-сервер. Много-много лет назад существовала такая ОС, которая называлась The V System. Поскольку она была никакая | + | Почему графическая среда устроена так гибко? Почему всё необязательно? А что обязательно? Обязательна ровно одна вещь — X-сервер. Много-много лет назад существовала такая ОС, которая называлась The V System. Поскольку она была никакая несвободная, неоткрытая и была ровно до тех пор, пока её какая-то контора занималась. Для неё была граф. оболочка W System, она каким-то чудом выжила и перекочевала в МИТ, гнде продолжила развиваться по уже университетским стандартам и называлась Xwindow System. Эта графоболочка построена по клиент-серверной технологии. Сервер умеет выполнять какие-то графические команды: нарисуй прямоугольник, напечатай то-то. Это не простые команды, а специализированные под взаимодействие с другими программами. Второе свойство Х-сервера --- он опрашивает устройства ввода-вывода --- мышь и клавиатура. То есть, граф. сервер это такой терминал в самом общем понятии, то есть оконная программа, которая взаимодействует с пользователем. Это называется Х-сервер. Существует множество программ Х-клиентов, которые делают ровно то же самое, но со своей клиентской части, то есть посылают команды и обрабатывают данные об устройствах ввода-вывода. Взаимодействие между клиентом и сервером происходит любым способом: через сеть, через файл-дырку... |
Где-то в то же время изобреталась оконная система, и понятие окно тесно связано с клиент-сервером. То есть, приложению выделяется место, при попаданию курсором (например) в которое все события будут передаваться ему. Потом выяснилось, что курсор --- неудобно, и появилось понятие фокуса, нам необязательно опираться на положение курсора, мы просто говорим, что есть окно, и оно получает события. Понятно, что это понятие условное, и пикселы возбуждения не испытывают от того, что он в фокусе. Фокус мышкой удобен, когда она рядом, если же она уползает постоянно, то это не очень удобно. Бывают и другие способы. Опять же, вспоминаем другие не столь гибкие оболочки, где всё это прибито гвоздями. | Где-то в то же время изобреталась оконная система, и понятие окно тесно связано с клиент-сервером. То есть, приложению выделяется место, при попаданию курсором (например) в которое все события будут передаваться ему. Потом выяснилось, что курсор --- неудобно, и появилось понятие фокуса, нам необязательно опираться на положение курсора, мы просто говорим, что есть окно, и оно получает события. Понятно, что это понятие условное, и пикселы возбуждения не испытывают от того, что он в фокусе. Фокус мышкой удобен, когда она рядом, если же она уползает постоянно, то это не очень удобно. Бывают и другие способы. Опять же, вспоминаем другие не столь гибкие оболочки, где всё это прибито гвоздями. | ||
Строка 41: | Строка 41: | ||
В переменной окружения DISPLAY указывается адрес х-сервера, по умолчанию :0.0 (формат address:screen:display) | В переменной окружения DISPLAY указывается адрес х-сервера, по умолчанию :0.0 (формат address:screen:display) | ||
- | Ранее было сказано, что х-сервер работает с устройствами ввода и видеокартой. | + | Ранее было сказано, что х-сервер работает с устройствами ввода и видеокартой. но это неправда. Не смотря на наличие mit magic cookie, протокол ненадёжный, печеньку можно перехватить, завалить оригинал, но думать об этом нужно только в том случае, если вы об этом думаете, вряд ли, если в комнате стоят три компьютера, то вы вряд ли будете оставаться спокойным, если вдруг одна машина умерла, а за другой сидит какой-то волосатый дядька и радостно потирает руки. Поэтому для того, чтобы запустить х-клиенты, надо куда-то залогиниться. А поскольку логин обычно надёжный (secure-shell), то осталось попросить программу, которая его организует, одну вещь --- туннелировать х-протокол. То есть, на удалённой машине просто работает х-сервер, который перенаправляет запросы. |
Ещё бывает xprint и х-сервер в окне. | Ещё бывает xprint и х-сервер в окне. | ||
Строка 48: | Строка 48: | ||
=== Необязательные элементы. Оконные мэнеджеры === | === Необязательные элементы. Оконные мэнеджеры === | ||
- | Разумеется, этого недостаточно. Вспомним тот список, который был стёрт, и решим её методом: "одна задача-одна программа". Это вообще идеология unix, не делать комбайнов, которые постоянно разваливаются, а делать несколько отдельных программ, которые хорошо | + | Разумеется, этого недостаточно. Вспомним тот список, который был стёрт, и решим её методом: "одна задача-одна программа". Это вообще идеология unix, не делать комбайнов, которые постоянно разваливаются, а делать несколько отдельных программ, которые хорошо желают свою работу, и потом налаживать взаимодействие между ними. |
Первое, что надо решить --- управление окнами. Это решается тривально в плане инжиниринга, и эту задачу решили порядка 3 десятков программистких групп, существует порядка 30 window-manager'ов. Обычно, помимо посылания разных команд приложениям, он рисует ещё и рамочку. | Первое, что надо решить --- управление окнами. Это решается тривально в плане инжиниринга, и эту задачу решили порядка 3 десятков программистких групп, существует порядка 30 window-manager'ов. Обычно, помимо посылания разных команд приложениям, он рисует ещё и рамочку. | ||
Строка 56: | Строка 56: | ||
Виртуальные рабочие столы. Можно встроить в оконный менеджер, можно запустить специальную прокладку. | Виртуальные рабочие столы. Можно встроить в оконный менеджер, можно запустить специальную прокладку. | ||
- | Панели. Этим разным панелям могут | + | Панели. Этим разным панелям могут соотв. разные программы. |
Иконки на рабочем столе. | Иконки на рабочем столе. | ||
- | Никакой метафоры | + | Никакой метафоры «рыбочий стол» нет. Кто обязан представить рабочее пространство в виде рабочего стола? Никто, пока вы не попросите. И программа нарисует ещё несколько окошек, точно таких же. Другое дело, что вы их рассматриваете как иконки. |
- | Оконный менеджер --- программа особая, в частности, он делает то, чего не делают другие программы. Он берёт на себя все события, а потом только | + | Оконный менеджер --- программа особая, в частности, он делает то, чего не делают другие программы. Он берёт на себя все события, а потом только отдать их другим окнам. Например, фокус. |
Таким способом, unix-way, мы сконструировали себе вполне осмысленное рабочее место. | Таким способом, unix-way, мы сконструировали себе вполне осмысленное рабочее место. | ||
Строка 80: | Строка 80: | ||
=== Недостатки === | === Недостатки === | ||
- | Из-за разрозненности плохо организуется межпроцессное взаимодействие в плане обмена информацией, например, буфер обмена предназначен только для текста. Если надо копировать графику, размеченный текст и т. п., нужно использовать что-нибудь другое | + | Из-за разрозненности плохо организуется межпроцессное взаимодействие в плане обмена информацией, например, буфер обмена предназначен только для текста. Если надо копировать графику, размеченный текст и т. п., нужно использовать что-нибудь другое |
{{UNИX, осень 2007}} | {{UNИX, осень 2007}} | ||
{{Lection-stub}} | {{Lection-stub}} |