2008-09-02
От редактора: статья написана в 2005 году, но до сих пор сохраняет свою актуальность — с поправкой на то, что XFree86 следует заменить Xorg'ом.
Возможно, не всем известно, что X Window имеет средства автоконфигурирования. Средства эти с каждой версией совершенствуются и, на мой взгляд, в настоящее время уже вполне могли бы конкурировать со специальными программами настройки, такими как xf86config или xf86cfg. Об этих самых средствах и речь.
Все описываемые ниже операции проводятся под root-ом в каталоге, опять же, /root.
В консольном режиме, разумеется, поскольку настройка X-сервера сразу в
графическом режиме напоминает ремонт автомобиля в движении: возможно,
но - зачем? Так же, само собой разумеющимся, я полагаю отсутствие
автоматической загрузки графической среды. То есть: загружаемся в
консольном режиме, X-Window запускаем командой startx.
Заранее прошу прощения у специалистов за намеренно упрощённое описание вывода на экран: хотелось как можно проще, но достаточно для понимания конфигурационных параметров.
Предельно просто:
$ X -configure
Результат: /root/XF86Config.new
Обычно, этот файл имеет размер менее 3-х килобайт: со времён третьей версии X-Window XF86Config
заметно "похудел" и вряд ли его анализ окажется затруднительным. К чему
и приступим. Секции, не нуждающиеся в редактировании, просто не
упоминаются.
Что касается RgbPath и ModulePath, то их редактировать не придётся, а вот опции FontPath требуют внимания. Если сервер фонтов xfs
не используется (а X-Window так и предполагает), то нужно добавить
строки, указывающие путь к фонтам с кириллицей: ну не догадывается
конфигуратор о нашей привязанности к этому алфавиту. Если же xfs используется: удаляем все строки с FontPath, и вставляем вместо них только одну:
FontPath "unix/:7100"
Рекомендации по поводу кириллицы в этом случае аналогичны, только модифицировать нужно будет файл конфигурации xfs-сервера (/etc/X11/fs/config).
Список загружаемых модулей, обеспечивающих различные аспекты работы X Window, можно не трогать: конфигуратор составляет его с учётом особенностей видеокарты и используемого драйвера и, как правило, не ошибается. А вот со списком модулей, обеспечивающих растеризацию шрифтов, можно поспорить: в него включены только type1 и speedo. На мой взгляд, отказываться от фонтов true-type нынче вряд ли стоит. А для этого потребуется включить строки
Load "freetype"
Load "xtt"
В секции, описывающей мышь, вполне можно согласиться с опцией
Option "Protocol" "auto"
А, если симлинк /dev/mouse указывает на реально имеющуюся мышь, то и на следующую за ней
Option "Device" "/dev/mouse"
Для 3-х кнопочной мыши не лишним будет добавить
Option "ZAxisMapping" "4 5"
А вот в одноимённой секции для клавиатуры изменений будет побольше: опять придётся отдать должное нашей привязанности к кириллице. Вставляем:
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "us,ru"
Option "XkbVariant" "winkeys"
Option "XkbOptions" "grp:caps_toggle,grp_led:scroll"
Разумеется, количество клавиш на клавиатуре, желание использовать winkeys, CapsLock в качестве переключателя, а scroll - в качестве индикатора - дело вкуса.
Зона "особого внимания". Буквально два слова теории:
Секция "Monitor" как раз и содержит информацию о максимально возможных частотах горизонтальной синхронизации (HorizSync) и вертикальной развёртки (VertRefresh).
Точнее: должна содержать, поскольку опирается при этом на данные,
получаемые от монитора. Так называемый EDID. А EDID этот самый принят в
качестве стандарта только в 1996-м, да и сейчас не все мониторы выдают
корректные данные о себе. Именно это и "удлиняет несчастьям нашим
жизнь", как выразился когда-то Гамлет, принц датский. Не получен EDID -
не будет автоконфигурации. Что не мешает, разумеется, поправить дело
вручную. Если опции HorizSync и VertRefresh в XF86Config.new
отсутствуют, их нужно просто вставить, почерпнув нужные цифры из
документации монитора. Если же документации нет, то рекомендации
следующие:
HorizSync 28.0 - 96.0
VertRefresh 50.0 - 70.0
Если монитор старенький, то с верхней границей частоты горизонтальной синхронизации мы, возможно, и "погорячились", но страшного в этом нет, пока не задана слишком большая частота развёртки кадровой. Что бы не "погорячиться" и с ней, нужно помнить, что для разных разрешений она различна. Примерно так:
800х600 - 75
1024х768 - 70
1280x1024 - 65
1600x1200 - 60
dot-clock видеокарты Х сервер проверяет сам, bandwidth монитора при отсутствии данных EDID - рассчитывает. Так что больше ничего не требуется.
В этой секции находятся опции драйвера, предлагаемого Х-сервером для использования с данной видеокартой. Все они "закомментированы" и могут быть востребованы исключительно по инициативе пользователя. Пара примеров:
Option "LcdCenter"
# автоматическое "центрирование" изображения
# для драйвера neomagic
Option "CursorShadow"
# для драйвера nvidia
Задаёт используемые видеорежимы. По моему глубокому убеждению, эксперименты с видеорежимами оправданы только при смене видеокарты или монитора. В обычной же жизни, в этой секции кроме опций, идентифицирующих видеосистему, требуется только:
DefaultDepth 24
и всего одна SubSection "Display":
Depth 24 Modes "1024x768"
Разумеется, глубина цветопередачи и разрешение - дело вкуса.
Очевидно, всё описанное не очень изменило размер XF86Config.new, скорее - наоборот. Осталось переименовать его в XF86Config, перенести, при желании, в /etc/X11
или куда-то ещё (в зависимости от дистрибутива), проверить и обеспечить
графический вход в систему, если уж такая привычка имеет место.
stdout (куда он попадёт конкретно - определяется способом запуска xvidtune и Х-сервера) значения, которые можно подставить в опцию ModeLine. Саму же опцию нужно поместить в секцию Monitor;