Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum


Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Next Previous Contents

6. X Window

Идеология иксов и многие базовые вещи без привязки к Window Manager-ам и интегрированным средам хорошо описаны на http://ep2-ts2.inp.nsk.su/lecture/

6.1 Как заставить pаботать в иксах <cупер-новую карточку> ?

Поискать название вашей карточки в http://www.xfree86.org/FAQ/ или /usr/X11R6/lib/X11/doc/

Взять последнюю версию иксов, собранную производителем вашего дистрибутива, или, если производитель ее еще не собрал, то на ftp://ftp.xfree86.org. Стоит сперва ограничиться _только_сервером_ под эту самую карточку, и, как правило, лучше на этом и остановиться (вот если он работает, но ищет конфиги где-нибудь не там, где они у вас лежат - можно подумать о замене всего остального.) Hамек: если вы не видите сервера с именем вашей карты - проверьте, не поддерживает ли ее сервер SVGA. Он не так прост, как можно подумать по названию. В XFree 4 остался единственный сервер, а поддержка конкретных карточек вынесена в подгружаемые модули. Поэтому (теоретически), если у вас четвертые иксы, то нужно найти только модуль для вашей карточки.

6.2 Как рассчитать Modeline под требуемую частоту развертки?

По идее, если вы правильно указали максимальные возможности вашего монитора в утилите настройки иксов (xf86config, XF86Setup, Xconfigurator), то эта утилита должна сама прописать в файле конфигурации ModeLine, выжимающий максимум из вашего монитора. Если вы не хотите полагаться на ее интеллект, то можно посмотреть готовые стандартные Modeline через strings `which xf86setup` и найти подходящую. Если по каким-то причинам с этой ModeLine возникают проблемы, то воспользуйтесь советом от Alexei Dets:

Для начала находите Modeline с требуемым вам разрешением, но не устраивающей вас частотой, т.е. слишком низкой, например. Hайти такую строчку можно, например, в XF86Config, сгенеренным инсталлятором дистрибутива.

Проверяете работоспособность данного видеорежима на вашем мониторе. Если видеорежим устанавливается, пусть даже с некоторым смещением картинки от центра экрана, чуть-чуть другим размером и т.п. можно идти дальше. Иначе рекомендуется выбрать другую Modeline или подогнать эту при помощи xvidtune. Скажем, у нас имеется строчка:
Modeline "640x480"     25.175 640  664  760  800   480  491  493  525
Какая здесь сейчас установлена частота развертки?

Ответ: 25175000/800/525=59,9 Гц.

Т.е. необходимо первую цифру, умноженную на миллион, разделить на пятую и на последнюю. Соответственно, как получить требуемые нам, например, 120 Гц?

Ответ: 800x525x120/1000000=50,4

Соответственно, результирующая строчка:
Modeline "640x480"     50.4 640  664  760  800   480  491  493  525
Можете пробовать :-) Скорее всего, картинка будет неправильно центрирована и будет иметь неверный размер, но это легко лечится при помощи xvidtune. Полученная при помощи него строчка будет уже окончательной. Владельцы современных мониторов могут просто подстроить размеры и центровку из меню :-)

Примечание: все данное "шаманство" подробно объяснено в /usr/X11R6/lib/X11/doc/VideoModes.doc или на русском в http://knot.pu.ru/faq/xfaq.html.

Примечание 2 от Alex Kanavin: в XFree86 4.x произошли некоторые изменения. Во-первых, в X cервере теперь определен набор стандартных VESA режимов, из которых подбирается оптимальный, исходя из параметров конфигурационного файла HorizSync и VertRefresh. То есть очень возможно, что вы получите наилучший результат, вовсе не прописывая ModeLine в конфиге, но только если интересующая вас частота развертки - одна из 60, 70, 75, 85 Hz. Имена у этих режимов традиционные - "640x480" и т.д., вплоть до "1920x1444" :-)

Во-вторых, в будущем X сервер сможет получать информацию о возможностях монитора непосредственно от него самого через VESA DDC. Для некоторых чипсетов она печатается при загрузке сервера, но пока не используется. Неясно также, как можно будет выбирать из режимов с одинаковым разрешением, не полагаясь на интеллект сервера.

6.3 Как переключать глубину цвета, не выходя из иксов?

При работающем X сервере уже не переключиться, но можно запустить рядышком еще один - если это XFree, а не какой-нибудь коммерческий сервер (через startx -- :1 -bpp 8 или добавив аналогичную строку в /etc/X11/xdm/Xserver, если используется xdm). В XFree 4 глубину цвета можно переключать на лету через DGA2, но подробности пока неизвестны.

6.4 Разница между иксовыми сервером и клиентом

( Alec Voropay, Alex Kanavin, Alexander Pevzner)

В системе X Window понятия "клиент" и "сервер" кажутся перепутанными. В действительности, никакого противоречия тут нет.

Весь вопрос лишь в том, что такое "cервер" ? Возмем например print-server или file-server. Это какое-то устройство для коллективного использования "ресурса". Например, единственный print-server на организацию.

Так вот когда-то давно (лет 30 назад ;) комплект из цветного дисплея и памяти на 256К был страшно дорогой игрушкой :-) и обслуживал кучу программ. Это и был display-server или, в комплекте с мышью и клавиатурой, X-server.

Таким образом, X-server - это программа для управления Video-подсистемой, мышью и клавиатурой и выполняющая команды типа "нарисовать красную точку" или "вывести букву А фонтом Arial". Существует куча X-Server-ов : cвободные XFree86, коммерческие AcceleratedX, под MS Windows : eXceed, X-Win, под VAX VMS и даже в виде отдельных железок c дисплеем : NCD, Tatung (их еще называют X-Terminal).

Таким образом, пользовательские программы, например Netscape - это "X-клиенты", которые обращаются к "X-серверу" для отображения и ввода. Связь между X-сервером и X-клиентом может быть по TCP/IP, по Unix-Socket, по IPX или даже по COM-порту. Поддержка конкретных способов связи зависит от реализации серверов и клиентских библиотек, например XFree знает только про первые два способа и еще DECNet.

Всякая X-программа ("X-клиент") сначала должна уcтановить соединение с X-сервером. Его местонахождение X-клиент узнает через переменную окружения DISPLAY= или ключ в командной строке. Один X-сервер может обслуживать множество программ, работающих на разных хостах. Как наиболее простой случай, все они, и X-сервер и Х-программы работают на одном и том же компьютере.

Обычные, "консольные" (алфавитно-цифровые) программы тоже можно запустить под X, через эмулятор терминала (например xterm, rxvt, eterm e.t.c.). Это специальная X-программа, которая с одной стороны работает как эмулятор терминала:), отрисовывает символы и отрабатывает ESC-последовательности, а с другой стороны представляется как обычный терминальный порт (через псевдотерминалы ptyXX).

Cледует заметить, что с точки зрения системы нет разницы между иксовыми и обычными программами. И те и другие используют один и тот же набор системных вызовов. Разница же упрятана в библиотеку XLib, с которой слинкованы иксовые программы, - именно она устанавливает связь с X сервером, посылает ему команды, принимает ответы итд. Кроме того, некоторые программы (emacs, например) могут работать как через X сервер, так и без него (через обычный терминал).

6.5 Возможно ли одновpеменно pаботать в full screen и в X Window и пеpеключаться между ними? Если да, то как?

Да, Ctrl-Alt-F# (из иксов в текстовый режим) или Alt-F# (обратно, только нужно найти первую свободную от getty консоль, обычно седьмую).

6.6 Как установить глубину цвета по умолчанию?

man XF86Config на предмет DefaultColorDepth

6.7 Как сделать так, чтобы иксы автоматически стартовали при загрузке компьютера? (и регистрация пользователей осуществлялась бы уже в них?) Наоборот, как отключить такую загрузку и получить обычный текстовый режим? Как входить таким же (графическим) образом в удаленные системы?

Нужно запустить (запретить запуск) Display Manager, например xdm (поставляется с cамими иксами), gdm (из GNOME), kdm (из KDE). Он может запускаться из rc скриптов или как сервис SysV, но чаще всего его прописывают в /etc/inittab:
x:5:respawn:/etc/X11/xdm -nodaemon
Поэтому там же нужно поменять runlevel по умолчанию:
id:3:initdefault:
В Red Hat display manager грузится на пятом runlevel, а обычный "текстовый" runlevel - 3, в других дистрибутивах это может быть не так. Изучите содержимое /etc/inittab, прочтите man inittab и действуйте по обстоятельствам.
Display manager можно использовать не только для запуска и управления локальными X серверами, но и для входа в систему и работы с удаленных икс-серверов через сеть. Для общения с xdm X сервер должен поддерживать протокол xdmcp. Серверы XFree в этом случае нужно запускать с такими ключами:
  • X -query host - простой запрос на host по xdmcp (иначе говоря, X сервер выясняет, готов ли xdm на host-е вывести окошко с полями для ввода логина и пароля и если готов, то просит его сделать именно это).
  • X -indirect host - "непрямой" запрос на host (то есть, X сервер просит xdm на host-е сделать запрос на все известные ему хосты, где установлен xdm. xdm в этом случае может либо просто опросить их (в частности, себя) и больше ничего не делать, поскольку X сервер сам сформирует список ответивших ему хостов и выдаст его пользователю, либо запустить т.н. chooser, который сформирует этот список и выдаст его на экран X сервера, подсоединившись к нему, как обычный X клиент. В случае использования серверов XFree годится только второй вариант и конфигурировать xdm надо именно так. Затем, так или иначе, пользователь выбирает интересующий его хост и туда делается простой запрос).
  • X -broadcast - широковещательный xdmcp запрос в сеть, с первым ответившим xdm устанавливается такая же сессия, как и в случае простого запроса. В других реализациях (не XFree) X сервер может, как и в предыдущем случае, выдать пользователю список ответивших хостов.
Подробности в XDM-Xterm mini-HOWTO, man xdm, а также по следующим URL: http://ep2-ts2.inp.nsk.su/lecture/ и http://www.iae.lt/visaginas/home/kazanov/koi8/Articles/X-Terminals.htm.

6.8 Какой Window Manager выбрать?

http://xwinman.org

http://www.themes.org

6.9 Где найти X Server для Windows ?

6.10 Как прикрутить TrueType шрифты к иксам ?

Hаиболее оптимальным решением является установка патченого XFree86 со встроенной поддержкой TrueType шрифтов либо установка XFree 4, где такая поддержка имеется "из коробки". В последнее время большинство дистрибутивов поставляется именно с таким вариантом XFree. Вы можете и сами собрать для себе патченные X-сервер и фонт-сервер, для этого вам необходим набор патчей xfsft ( http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/). Единственным отличием TrueType шрифтов от остальных в данном случае является то, что файл fonts.dir генерится при помощи программы ttmkfdir, а не mkfontdir. Более подробная информация - на http://www.xfree86.org/4.0.1/fonts.html

В случае, если у вас нет возможности или желания доставать новый X-сервер или исходники XFree, то неплохим вариантом является использование сервера шрифтов xfstt. Подробная документация по его использованию есть в его исходниках или, на русском, по адресу http://visaginas.is.lt/~evgeny/koi8/Articles/xfstt_1.html. Hедостатком данного подхода является отсутствие поддержки fonts.alias.

Оба варианта отлично работают как с обычными, так и с юникодными TrueType шрифтами.

6.11 А есть ли в иксах поддержка font antialiasing?

Есть. Cмотрите сюда: http://www.xfree86.org/~keithp/render/.

6.12 А почему в иксах так медленно проигрываются мпеги? Подскажите не тормозящую проигрывалку mpeg/videoCD/etc, умеющую fullscreen, etc

Попробуйте запустить top во время проигрывания - увидите, что очень много ресурсов отъедают сами иксы, то есть программно выполняется гораздо больше операций чем в Windows. Дело в том, что до недавнего времени в иксах отсутствовала поддержка совершенно необходимых для качественного воспроизведения видео вещей - прямого доступа к видеопамяти, аппаратного масштабирования, сглаживания и преобразования цветового простарнства. В XFree 4 появились расширения, обеспечивающие эти функции - DGA2 и Xv. Поэтому для качественного воспроизведения мпегов необходимы следующие условия:
  • XFree86 4.0 или более новая версия
  • Видеокарточка, драйвер которой поддерживает Xv и DGA2.
  • Проигрыватель и используемая им видеобиблиотека с поддержкой Xv/DGA2. Последние версии SDL, smpeg, mplayer, xine, avifile эти расширения поддерживают. Попробуйте эти продукты, выберите то, что вас устраивает в набольшей степени.
(данный ответ не претендует на истину в последней инстанции, пожалуйста уточните его, если Вы в большей степени в курсе дела)

Next Previous Contents


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют