UnixMountainSkiFun

Unix Горы Лыжи

01-06-2008 15:48

Когда X-ов недостаточно

Я консультант. Пожалуйста не держите на меня зла, -- это просто факт означающий, что я постоянно в движении. Весь год я переезжаю с места на место. И в каждом месте я использую различное аппаратное и программное обеспечение, сети и т.д.

Раз вы читаете эту книгу, то уже знаете, что я использую Linux. И использую не первый год. Я стремлюсь использовать Linux в разработке программного обеспечения для любого окружения, включая Windows потому, что я люблю инструментарий который предоставляет мне Linux.

Совсем недавно я имел случай работать в окружении, которое бы назвал абсолютно атипичным. Рабочая станция работала под управлением OS/2, использовалась для написания и сборки 16-битных Powerbuilder-приложений, которые подключалась по сети "token-ring" к среднему звену (middle tier), реализованному на CICS AIX! Со временем, я добился того, чтобы получить PC на котором водрузил RedHat из-за большого количества разной документации (однако это тема другого приключения, о котором пойдет речь в Главе 9?). Теперь у меня был постоянный доступ к моим любимым инструментам. У OS/2 имелся даже X-сервер, называемый PMX, поэтому я мог запускать приложения на Linux-компьютере, а отображать их на моем рабочем столе.

Что такое Window Manager?

X-windows это система, которая в полной мере следует принципу разделения труда. Приложение X-windows отрисовывает и управляет только теми областями, которые находятся "внутри" окна, -- это так называемая клиентская область. Другая, полностью независимая, программа, называемая "window manager" (оконный менеджер), отрисовывает границы и элементы управления (такие как границы с помощью которых можно изменять размер окна, кнопки максимизации, минимизации и закрытия окна). Вы можете иметь не более одного оконного менеджера на один X-сервер, такой оконный менеджер обеспечивает окнам одинаковую "декорацию".

Оконный менеджер и X-приложение взаимодействуют стандартными способами. Например, когда вы изменяете окно, перетаскиванием его границы, вся работа, до тех пор пока вы не отпустите границу, выполняется программой "оконный менеджер"; затем оконный менеджер сообщает X-приложению, что изменение размера произошло, отправляя сообщение о изменении размера. По получению сообщения приложение должно перерисовать себя в новой клиентской области. (Все это весьма теоретически. Некоторые оконные менеджеры посылают сообщение о перерисовке все время пока вы перемещаете границу окна, однако я думаю, что вы поняли мою мысль?). Приложение также способно "сказать" оконному менеджеру "кое-что", например о том, может ли быть окно изменено.

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

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

Оконные менеджеры и их взаимодействие с приложениями весьма сложны. Имеется некоторый "минимальный стандартный набор" функциональности, которую оконный менеджер должен обеспечивать, кроме того имеется некоторый "минимальный стандартный набор" сообщений оконного менеджера, который должно поддерживать X-приложение, однако многие приложения пошли еще дальше. Все большее и большее количество "desktop" систем для X (например, KDE и GNOME), значительно (во все стороны) расширяют/изменяют этот набор. Это означает, что приложения, которые используют этот функционал, либо будут работать только в таком оконном менеджере, либо будут иметь сниженную функциональность, будучи загруженными в других оконных менеджерах.

Если у вас есть желание узнать больше, то сейчас самое время погрузиться в дебри программирования X-windows.

VNC доступен по URL, приведенным в начале главы. Имеется некотрое количество коммерческих реализаций X-server для Windows. Однако эта книга о Free Software, а значит мы поведем вас именно таким курсом.

Свободный X-server для Windows доступен как часть продукта, называемого Cygwin, который является полностью POSIX-совместимым программным окружением для Windows. Cygwin превращает Windows во вполне приличное Unix-подобное окружение. X-server от Cygwin это тот же самый X-server, который поставляется с большинством Linux-дистрибутивов: Xfree86.

Cygwin доступен на Cygnus Software, который недавно был приобретен RedHat. URL следующий: http://sources.redhat.com/cygwin.

Я заметил, что несметное количество "нормальных" приложений, таких как Wine (Глава 17?) и GIMP (Глава 22?) приводят к краху OS/2 PMX server. И это не исключение, OS/2 PMX server настойчиво требует использования OS/2 Presentation Manager, в качестве оконного менеджера. (Если вы не понимаете что это значит, смотрите врезку Window Manager). Я столкнулся с классической проблемой, -- учитывая, что Linux не является основной системой, каким образом раздобыть приличный X-server?

Такая же проблема существует и у пользователей Windows. Для Windows есть несколько бесплатных X-серверов, однако все они весьма ограничены в возможностях. Для Windows существуют превосходные коммерческие X-сервера, но ведь вы, как и я, вряд ли пожелаете дополнительно тратиться на программное обеспечение (нет, мы не будем перечислять здесь URL'ы коммерческого ПО).

И тогда я начал рассматривать альтернативные варианты. Я уже был знаком с тем, что называется VNC (расшифровывается "virtual network console", "виртуальная сетевая консоль"), и сходно по функциональности с PC-Anywhere. Если кратко, то это ПО позволяет вам получить доступ к консоли другого компьютера, точно так же как если бы вы сидели за этим компьютером. Чтобы понять разницу, потребуется рассмотреть устройство X и VNC (Рисунок 2-1).

Рисунок 2-1. Блочная диаграмма окружения X-window.

<< '''Глава 2. Удаленное управление Вашим компьютером откуда угодно, когда угодно и из любой ОС, даже из OS/2!''' | Multi Tool Linux | Основы X-ов >>


edit RightSideBar