Различия между версиями 24 и 25
Версия 24 от 2008-10-10 15:23:00
Размер: 23249
Редактор: eSyr
Комментарий:
Версия 25 от 2008-10-10 17:58:05
Размер: 25756
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 17: Строка 17:
'''Диспетчер окон'''. X-клиент, в обязанности которого входит передавать другим X-клиентам фокус по своему усмотрению, называется диспетчером окон (''окноводом''). Диспетчер выпол

##
##Черновик
##


Организация интерфейса привычная. Есть понятие окно, которое сильно сужает варианты использования графического интерфейса. То есть каждое приложение, когда хочет чего-то показывать на экране, регистрирует себе несколько прямоугольников (т.е. окон), и может в них рисовать и принимать сигналы нажатия кнопок и движения мыши. Есть понятие фокуса, вы можете переключаться между окнами, разделяя устройство ввода, фокус может перемещаться, и в зависимости от того ,какой прямоугольник захватил его, ему и посылаются события с устройства ввода. Окна могут наслаиваться друг на друга. Существует понятие глубина, и на основе этого определяется какому окну относится некая точка, которая вообще говоря принадлежит нескольким окнам. На всё это накладываются некие дополнительные ограничения, связанные с тем, что вы объявляете что окна всего лишь окна, а управление ими отдаётся отдается приложению под названием окновод/диспетчер окон (window manager). Конечно, существует команда х-серверу по манипуляции окнами, и приложение может такие команды подавать, но неправильно было бы перекладывать управление окнами на приложение, поскольку тогда бы в каждом приложении была бы куча кода по манипуляции окнами. Поэтому логично было бы отдать задачу управления окнами отдельному приложению под названием window manager, который и позволяет пользователю всё это делать: двигать, изменять, превращать в иконки, скрывать окна, и так далее. фокус.

То, с чем мы имеем дело сейчас (в дистрибуитиве Lite) --- рабочий стол xfce с диспетчером окон xfwm, в юниоре, терминал сервере и мастере есть рабочий стол kde, диспетчером окон там является kwin
(''м.б. вставить скриншот?'')

==== Экран ====

Оставим протокол X11, и вспомним про то, как устроен экран. Тут мы говорим, что виртуальных экранов может быть несколько, есть приятные интерфейсные штуки, которые связаны не с окнами, а с управлением программными продуктами, и так далее. Например управление менюшками, кнопочками. Эти все функции может взять из себя диспетчер окон, а может и не брать. В графических средах типа kde/xfce запускается куча приложений, каждое из которых занимается отдельным делом (например иконки на рабочем столе).
'''Диспетчер окон'''. X-клиент, в обязанности которого входит передавать другим X-клиентам фокус по своему усмотрению, называется диспетчером окон (''окноводом''). Диспетчер выполняет всю работу по управлению окнами: передаёт фокус, позволяет перемещать окна, изменять их размер и глубину, скрывать, превращать в иконки и многое другое. Все эти действия производит, разумеется, X-сервер, а диспетчер подаёт ему соответствующие команды. Для удобства управления диспетчер обычно пририсовывает к окнам декораторы: красивую рамочку, заголовок, кнопки и т. п. Сами приложения также могут посылать серверу соответствующие команды, однако заставлять каждый X-клиент заниматься управлением собственным окном было бы неразумно. С другой стороны, неправильно заставлять X-сервер заниматься управлением окнами самостоятельно: это привело бы к потере свободы выбора. На сегодня существуют десятки различных окноводов, каждый из них реализует свою собственную концепцию управления окнами и их оформления в соответствии с требованиями "рабочего стола".

В "Лёгком Линуксе" используется графическая среда XFCE, в состав которой входит диспетчер xfwm, а в "Юниоре", "Мастере" и "Терминале" -- KDE и диспетчер kwin.

==== Рабочий стол ====

Для реализации метафоры "рабочего стола" недостаточно управлять одними только окнами. Удобного интерфейса требует управление виртуальными экранами, быстрый запуск приложений, доступ к документам, отображение меняющейся информации и многое другое. Всевозможные интерфейсные примитивы: меню, панели, лотки и прочее диспетчер окон может на себя и не брать, этим в "больших" окружениях, вроде KDE, занимается целый комплект программ, дополняемый службой передачи сообщений, более сложных, чем X11, собственной интерфейсной библиотекой и многим другим. Настройка рабочего стола обсуждается в другом месте, здесь важно понять, что "настройка X-сервера" -- это другое, достаточно низкоуровневое действие, требующее некоторой квалификации.
Строка 42: Строка 33:
То, что вы видите, это некий графический интерфейс к пачке утилит, которые являются мозгом для определения возможностей графической подсистемы, а с другой стороны, к конфигурационный файлу системы xorg. Сам Alterator -- это некий графический интерфейс к набору утилит, диагностирующих и настраивающих ту или иную часть системы. В частности, пункт "Графический интерфейс -> Дисплей" отвечает за определение параметров видеокарты и монитора, и за внесение изменений в настройки Xorg.
Строка 46: Строка 37:
"Монитор 1024х768" - это не разрешение, а некий монитор по умолчанию, который используется, если нет конкретных данных. Есть мониторы, о которых такие данные есть. Хотелось бы добавить распознаватель драйвера монитора, который является файлом содержащим допустимые физические характеристики монитора. Надпись "Монитор 1024х768" -- это не планируемое разрешение, а некий ''тип'' монитора по умолчанию. Такой тип который используется, если нет конкретных данных о мониторе, кроме того, что он, очевидно, поддерживает разрешение 1024 на 768 точек. Есть мониторы, о которых такие данные есть; кроме того, такие данные содержатся в т. н. "драйвере ''монитора''", который представляет собою просто текстовый файл. Данные из этого файла можно использовать для ручной настройки Xorg.

Другие настройки достаточно очевидны. "Драйвер" -- это драйвер ''видеокарты''; он определяется автоматически, и изменять это значение стоит только если что-то не работает (в этом случае стоит попробовать стандартный драйвер "vesa"), либо при ывборе между свободной и несвбодной реализацией драйверов AMD/ATI и nVidia. Можно также изменить планируемую глубину цветности (bits per pixel) и разрешение экрана в точках.
Строка 50: Строка 43:
Рассмотрим содержание файла xorg.conf, расположенного в /etc/X11. Он состоит из секций, каждая отвечает либо за устройство, либо за синтетическое понятие (комплект устройств для общения с пользователем, или наоборот их части)(например, layout), или за некоторые файлы (секция Module --- загружает модули).

 * Первая секция - секция ServerLayout, она определяет, на каком screen (см. ниже) какие устройства ввода применяются.

{{{
Рассмотрим содержание файла `xorg.conf`, расположенного в `/etc/X11`. Он состоит из секций, каждая секция описывает параметры какого-либо устройства, комплектацию или структуру сервера, пользующегося этими устройствами. В секции может встречаться поле "Identifier", на которое могут ссылаться другие секции.

  * Головная секция -- !ServerLayout, она задаёт "рабочее место": мышь и клавиатуру, которыми пользователь пользуется и экран (Screen), на который он смотрит:
  {{{
Строка 63: Строка 55:
 * Секция загрузки модулей (Module):

{{{
  * Секция загрузки модулей Module определяет, какие расширения X11 необходимо дополнительно загрузить:
 {{{
Строка 77: Строка 68:
 
Здесь type1 --- шрифты, freetype --- шрифты (проверить), glx --- трехмерная графика, dri --- графическое ускорение, dbe --- работа с памятью. (''а что, собственно, такое '''extmod'''?'')

* Секция ServerFlags:

{{{
  Здесь type1 -- поддержка шрифтов "Type 1", freetype -- поддержка шрифтов "Truetype", glx -- трехмерная графика, dri -- графическое ускорение, dbe -- работа с памятью. Подсекция "extmod" отвечает за загрузку модуля с целым спектром расширений X11 и их настройку.
  * Секция !ServerFlags:
  {{{
Строка 88: Строка 75:

Опция allowmouseopenfail позволяет иксам грузиться, даже если мышь не работает. Кроме того, мышью можно управлять с клавиатуры (нажать сочетание shift+numlock, а потом использовать клавиши на цифровой клавиатуре для перемещения мыши).

* Секции InputDevice:

{{{
  Опция !AllowMouseOpenFail позволяет серверу грузиться, даже если мышь не работает. Графическим указателем можно управлять с клавиатуры (нажать сочетание shift+numlock, а потом использовать клавиши на цифровой клавиатуре для перемещения мыши).
  * Секции !InputDevice:
  {{{
Строка 99: Строка 83:

 Эта часть отвечает за драйвер клавиатуры --- kbd. Для включения дополнительных трёх кнопок на клавиатуре надо выбрать в настройках клавиатуры (в центре управления системой) "клавиатура acpi", при этом меняется содержимое файла /etc/X11/xinit/Xkbmap. В какой-то момент появился setxkbmap, который повторяет синтаксис xorg.conf, и позволяет каждому пользователю настраивать клавиатуру по-своему.

{{{
  Эта часть отвечает за драйвер клавиатуры -- kbd. В настоящее время эта секция используется не столь активно, как раньше, так есть возможность изменять настройки клавиатуры из командной строки, с помощью `setxkbmap`. Например, если в Центре управления ("Графический интерфейс -> Настройка клавиатуры") выбрать тип "клавиатура acpi", начнут распознаваться три стандартные кнопки ACPI (Power, Sleep. Wake). Результат запишется не в `xorg.conf`, а в файл `/etc/X11/xinit/Xkbmap`, используемый при старте сеанса работы с X-сервером.
  {{{
Строка 111: Строка 93:

 Здесь указаны параметры мыши. Стоит отметить, что последняя опция --- ZSxisMapping. Кроме того, поворот колеса --- перемещение по оси z. Никто почти его не использует, поэтому их принято преобразовывать в нажатия кнопок 4 и 5. Если вдруг кнопки определились неправильно, и при нажатии на одну кнопку он делает то, что должно делать при нажатии на другую, то сначала запускаете xev, а потом xmodmap (''эту часть как-то не очень понял'')

 * Секция Monitor.
{{{
  Это параметры мыши. Стоит отметить, последнюю опцию -- !ZAxisMapping. Мало кто помнит, что поворот колеса мыши -- это "перемещение по оси Z". Это перемещение почти никто не использует, поэтому поворот колеса принято преобразовывать в нажатия кнопок 4 и 5. Также обстоит дело и с другими частями мыши. В результате может оказаться, что помимо первых трёх (стандартных кнопок) на вашей мыши имеется ещё четыре, причём номерам 4 и 5 соответствует не колесо, а две кнопки сбоку. Тогда необходимо запустить `xev` и выяснить, какая кнопка какой номер имеет, а затем использовать нечто похожее на `xmodmap -e "pointer = 1 2 3 6 7 4 5"`.
  * Секция Monitor -- параметры монитора:
  {{{
Строка 122: Строка 102:

 Если бы мы воспользовались конфигуратором, то мы бы увидели первые 3 строчки --- название (это именно название), частота развёртки и частота кадров. Частота развертки --- это частота строк. Считается, что безопасно показывать больше 60 кадров, а эргономично - больше 85. Эти параметры, вписанные сюда конфигуратором, соответствуют типичному монитору, который даёт нормальное разрешение 1024х768. Если монитор достаточно хороший, то тут может не быть ничего кроме identifier, поскольку есть протоколы DDC и EDID, которые позволяют договариваться видеокарте и монитору, какие режимы работы на каком разрешении для них приемлемы, и х-сервер может эту информацию вынимать.


 * Раздел Device:

{{{
  В таком виде формирует эту секцию модуль Центра управления. Первая строчка -- это название, вторая и третья -- допустимые диапазоны частоты строк и частоты кадров. Частота кадров больше 60 считается безопасной для зрения, а больше 85 -- достаточно удобной (эргономичной). Такие параметры соответствуют довольно старому монитору (что видно из названия), зато будут стопроцентно работать практически везде. Для более современных мониторов имеются стандарты DDC и EDID, позволяющие X-серверу получать более полную информацию непосредственно при запуске, поэтому в этой секции можно оставить один только Identifier. Однако дешёвые модели мониторов могут работать с DDC/EDID плоховато.
  * Секция Device -- параметры устройства:
  {{{
Строка 134: Строка 110:

 Этот раздел отвечает за видеокарты. Здесь может быть много разных настроек: аппаратное трехмерное ускорение, иногда карточки что-то не умеют и это нужно включать отдельно. Это место, в которое вписываются значения, которые в альтераторе представляются в разделе драйвер.

 * Секция Screen.

{{{
   Этот раздел отвечает за видеокарты. Здесь может быть много разных настроек, которые описаны в соответствующей странице руководства. Например, существуют реализации аппаратного трехмерного ускорения, хорошо работающие на одних картах, и плохо -- на других, по умолчанию они выключены, но можно и включить. Здесь же можно управлять режимом работы "двухголовой" карточки. Эта секция заполняется пунктом "Драйвер" в соответствующем модуле Центра управления.
  * Секция Screen -- режим работы видеокарты:
  {{{
Строка 147: Строка 120:
    Modes "1024x788" "800x600"
Строка 162: Строка 136:
(''кстати, надо бы другой вариант этой секции, у меня неудачный'')

 Это то, как на данном мониторе с конкретной видеокарточкой включать разного рода графические режимы. Секция modes описывает, какие из именованных modeline-ов (режимов) в каком порядке включать. Их много, потому что разная глубина цвета. Там в конце есть приписка такая, что устройство, которое осуществляет аппаратный доступ к графическому ускорителю, будет иметь группу xgrp и права 0660.

 Следует отличать виртуальный размер экрана (может быть вписан как Virtual) и физическое разрешение монитора. Они необязательно совпадают. Если видеокарта позволяет, то виртуальный размер экрана можно поставить намного больше реального. Тогда будет видна только часть экрана, которую можно перемещать, подводя мышь к краю экрану. В большинстве случаев переключаться между разными режимами (если их много) можно с использованием ctrl+alt++, ctrl+alt+-, при этом виртуальный размер экрана остаётся прежним, а разрешение меняется.
   Секция описывает режимы работы видеокарты для различных вариантов глубины цветности. В ней связывается конкретный монитор с конкретным графическим устройством. Поскольку параметры того и другого Xorg умеет неплохо определять и сам, никаких особенных настроек, кроме цветности по умолчанию, здесь нет. В подсекции "Display" может встречаться поле "Modes", задающее список режимов работы видеокарты. Строчки "1024x788" и "800x600" -- это именно ''названия'' режимов, а не строгое указание поддерживаемого разрешения. Автоматически определяемые режимы работы карточки обычно имеют такие значащие имена.

  Следует отличать виртуальный размер экрана (может быть вписан как значение поля Virtual) и физическое разрешение монитора. Они необязательно совпадают. Если видеокарта позволяет, то виртуальный размер экрана можно поставить намного больше реального. Тогда будет видна только часть экрана, которую можно перемещать, подводя мышь к краю экрана. В большинстве случаев переключаться между разными режимами (если их много) можно с использованием `ctrl alt +`, `ctrl alt -`, при этом виртуальный размер экрана остаётся прежним, а разрешение меняется.
  * Секция DRI -- прямой доступ к видеопамяти:
  {{{
Section "DRI"
        Group "xgrp"
        Mode 0660
EndSection
}}}
  Указывает права доступа к устройству, посредством которого X-сервер получает доступ к видеопамяти (обычно `/dev/dri/card0`).

Настройка X-сервера

Структура X-сервера

Архитектура

Графическая подсистема ПСПО базируется на комплекте программных продуктов Xorg. Поверх Xorg запускается несколько приложений, необходимых для организации "рабочего стола". Взаимодействие между всеми программами Xorg описывается протоколом x.11, поэтому эту подсистему принято также называть X11 или, в разговоре, "иксами".

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

X-сервер и X-клиент вполне могут находиться на разных машинах: X-сервер -- на машине пользователя, а X-клиент -- где угодно. Принимать X-запросы от любых машин в сети небезопасно, поэтому это свойство в ПСПО отключено: сервер запускается с ключом -nolisten tcp (задаётся в файле /etc/sysconfig/xserver). На рабочей станции такое подключение смысла всё равно не имеет. Есть исключение: "Линукс Терминал", целиком построенный на том, что пользовательские машины запускают только X-серверы, а вся работа ведётся на центральном компьютере посредством X11.

Интерфейс

Окно. Понятие "окно", на самом деле, сильно сужает варианты использования графического интерфейса, однако осмысленных альтернатив "оконному" подходу пока не придумано. Каждое приложение регистрирует у X-сервера один или несколько прямоугольников -- окон. Внутри этого прямоугольника приложение имеет возможность рисовать фигуры, выводить текст и т. п. События -- нажатие клавиш на клавиатуре, перемещение мыши и нажатие кнопок на ней -- также считаются происходящими "на территории" окна. Для того, чтобы выяснить, какому именно окну предназначалось событие, используется синтетическое понятие -- фокус. Каждый раз не более одного окна может быть "в фокусе", именно этому окну направляются события. По умолчанию X-сервер передаёт фокус окну, над которым находится графический указатель мыши, но этот порядок может изменить некоторый X-клиент, принимая все события на себя и "раздавая" их по своему усмотрению. Прямоугольники могут накладываться друг на друга, образуя "стопку". Тем самым вводится понятие глубины окна: полностью видимо окно с наименьшей глубиной, окна под ним загораживаются вышележащими. Глубина окна учитывается и при передаче ему фокуса.

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

В "Лёгком Линуксе" используется графическая среда XFCE, в состав которой входит диспетчер xfwm, а в "Юниоре", "Мастере" и "Терминале" -- KDE и диспетчер kwin.

Рабочий стол

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

Настройка графической среды

Использование Alterator

Запустим Центр Управления системой (он же Alterator)

../acc.png

Сам Alterator -- это некий графический интерфейс к набору утилит, диагностирующих и настраивающих ту или иную часть системы. В частности, пункт "Графический интерфейс -> Дисплей" отвечает за определение параметров видеокарты и монитора, и за внесение изменений в настройки Xorg.

../acc_display.png

Надпись "Монитор 1024х768" -- это не планируемое разрешение, а некий тип монитора по умолчанию. Такой тип который используется, если нет конкретных данных о мониторе, кроме того, что он, очевидно, поддерживает разрешение 1024 на 768 точек. Есть мониторы, о которых такие данные есть; кроме того, такие данные содержатся в т. н. "драйвере монитора", который представляет собою просто текстовый файл. Данные из этого файла можно использовать для ручной настройки Xorg.

Другие настройки достаточно очевидны. "Драйвер" -- это драйвер видеокарты; он определяется автоматически, и изменять это значение стоит только если что-то не работает (в этом случае стоит попробовать стандартный драйвер "vesa"), либо при ывборе между свободной и несвбодной реализацией драйверов AMD/ATI и nVidia. Можно также изменить планируемую глубину цветности (bits per pixel) и разрешение экрана в точках.

Файл xorg.conf

Рассмотрим содержание файла xorg.conf, расположенного в /etc/X11. Он состоит из секций, каждая секция описывает параметры какого-либо устройства, комплектацию или структуру сервера, пользующегося этими устройствами. В секции может встречаться поле "Identifier", на которое могут ссылаться другие секции.

  • Головная секция -- ServerLayout, она задаёт "рабочее место": мышь и клавиатуру, которыми пользователь пользуется и экран (Screen), на который он смотрит:

    Section "ServerLayout"
            Identifier     "Minimal layout"
            Screen         "Screen0" 0 0
            InputDevice    "Keyboard0" "CoreKeyboard"
            InputDevice    "ImPS/2 Logitech Wheel Mouse|0" "CorePointer"
    EndSection
  • Секция загрузки модулей Module определяет, какие расширения X11 необходимо дополнительно загрузить:
    Section "Module"
            Load  "type1"
            Load  "freetype"
            Load  "glx"
            Load  "dri"
            Load  "dbe"
            SubSection "extmod"
                    Option      "omit xfree86-dga"
            EndSubSection
    EndSection
    Здесь type1 -- поддержка шрифтов "Type 1", freetype -- поддержка шрифтов "Truetype", glx -- трехмерная графика, dri -- графическое ускорение, dbe -- работа с памятью. Подсекция "extmod" отвечает за загрузку модуля с целым спектром расширений X11 и их настройку.
  • Секция ServerFlags:

    Section "ServerFlags"
            Option      "AllowMouseOpenFail" "true"
    EndSection

    Опция AllowMouseOpenFail позволяет серверу грузиться, даже если мышь не работает. Графическим указателем можно управлять с клавиатуры (нажать сочетание shift+numlock, а потом использовать клавиши на цифровой клавиатуре для перемещения мыши).

  • Секции InputDevice:

    Section "InputDevice"
            Identifier  "Keyboard0"
            Driver      "kbd"
    EndSection

    Эта часть отвечает за драйвер клавиатуры -- kbd. В настоящее время эта секция используется не столь активно, как раньше, так есть возможность изменять настройки клавиатуры из командной строки, с помощью setxkbmap. Например, если в Центре управления ("Графический интерфейс -> Настройка клавиатуры") выбрать тип "клавиатура acpi", начнут распознаваться три стандартные кнопки ACPI (Power, Sleep. Wake). Результат запишется не в xorg.conf, а в файл /etc/X11/xinit/Xkbmap, используемый при старте сеанса работы с X-сервером.

    Section "InputDevice"
            Identifier  "ImPS/2 Logitech Wheel Mouse|0"
            Driver      "mouse"
            Option      "Device" "/dev/input/mice"
            Option      "Protocol" "IMPS/2"
            Option      "ZAxisMapping" "4 5"
    EndSection

    Это параметры мыши. Стоит отметить, последнюю опцию -- !ZAxisMapping. Мало кто помнит, что поворот колеса мыши -- это "перемещение по оси Z". Это перемещение почти никто не использует, поэтому поворот колеса принято преобразовывать в нажатия кнопок 4 и 5. Также обстоит дело и с другими частями мыши. В результате может оказаться, что помимо первых трёх (стандартных кнопок) на вашей мыши имеется ещё четыре, причём номерам 4 и 5 соответствует не колесо, а две кнопки сбоку. Тогда необходимо запустить xev и выяснить, какая кнопка какой номер имеет, а затем использовать нечто похожее на xmodmap -e "pointer = 1 2 3 6 7 4 5".

  • Секция Monitor -- параметры монитора:
    Section "Monitor"
            Identifier   "Monitor 1024x768|0"
            HorizSync    31.5 - 57.0
            VertRefresh  50.0 - 70.0
    EndSection
    В таком виде формирует эту секцию модуль Центра управления. Первая строчка -- это название, вторая и третья -- допустимые диапазоны частоты строк и частоты кадров. Частота кадров больше 60 считается безопасной для зрения, а больше 85 -- достаточно удобной (эргономичной). Такие параметры соответствуют довольно старому монитору (что видно из названия), зато будут стопроцентно работать практически везде. Для более современных мониторов имеются стандарты DDC и EDID, позволяющие X-серверу получать более полную информацию непосредственно при запуске, поэтому в этой секции можно оставить один только Identifier. Однако дешёвые модели мониторов могут работать с DDC/EDID плоховато.
  • Секция Device -- параметры устройства:
    Section "Device"
            Identifier  "Card0|0"
            Driver      "intel"
    EndSection
    • Этот раздел отвечает за видеокарты. Здесь может быть много разных настроек, которые описаны в соответствующей странице руководства. Например, существуют реализации аппаратного трехмерного ускорения, хорошо работающие на одних картах, и плохо -- на других, по умолчанию они выключены, но можно и включить. Здесь же можно управлять режимом работы "двухголовой" карточки. Эта секция заполняется пунктом "Драйвер" в соответствующем модуле Центра управления.
  • Секция Screen -- режим работы видеокарты:
    Section "Screen"
            Identifier "Screen0"
            Device     "Card0|0"
            Monitor    "Monitor 1024x768|0"
            DefaultDepth     16
            SubSection "Display"
                    Depth     8
        Modes "1024x788" "800x600"
            EndSubSection
            SubSection "Display"
                    Depth     15
            EndSubSection
            SubSection "Display"
                    Depth     16
            EndSubSection
            SubSection "Display"
                    Depth     24
            EndSubSection
            SubSection "Display"
                    Depth     32
            EndSubSection
    EndSection
    • Секция описывает режимы работы видеокарты для различных вариантов глубины цветности. В ней связывается конкретный монитор с конкретным графическим устройством. Поскольку параметры того и другого Xorg умеет неплохо определять и сам, никаких особенных настроек, кроме цветности по умолчанию, здесь нет. В подсекции "Display" может встречаться поле "Modes", задающее список режимов работы видеокарты. Строчки "1024x788" и "800x600" -- это именно названия режимов, а не строгое указание поддерживаемого разрешения. Автоматически определяемые режимы работы карточки обычно имеют такие значащие имена.

    Следует отличать виртуальный размер экрана (может быть вписан как значение поля Virtual) и физическое разрешение монитора. Они необязательно совпадают. Если видеокарта позволяет, то виртуальный размер экрана можно поставить намного больше реального. Тогда будет видна только часть экрана, которую можно перемещать, подводя мышь к краю экрана. В большинстве случаев переключаться между разными режимами (если их много) можно с использованием ctrl alt +, ctrl alt -, при этом виртуальный размер экрана остаётся прежним, а разрешение меняется.

  • Секция DRI -- прямой доступ к видеопамяти:
    Section "DRI"
            Group        "xgrp"
            Mode         0660
    EndSection

    Указывает права доступа к устройству, посредством которого X-сервер получает доступ к видеопамяти (обычно /dev/dri/card0).

ModeLine

Утилита modeline выдаёт информацию о доступных режимах работы монитора.

grep -i modeline /var/log/Xorg.0.log

Как у нас устроена ЭЛТ. У нас идет луч и он рисует пиксели. Как доходит до конца он выключается и перегоняется на начало следующей строки, включается и опять рисует. Когда он доходит до конца всего кадра он в выключенном состоянии перегоняется наверх, и начинает все сначала. Вообще говоря это можно представить так: пусть у нас есть цилиндр, и луч ходит по спирали. Часть этого цилиндра мы не видим, так как экран плоский и потому меньше чем размер цилиндра. Поэтому там луч выключается. А потом это все разворачивается и мы видим наш экран.

(тут, видимо, не помешала бы картинка с тором)

Первый параметр --- dot clock(количество пикселей в секунду которое может отображать монитор), второй параметр --- ширина видимой часть в пикселах, дальше ширина в пикселах плюс одна половинка, вторая половинка и дальше --- ширина всего цилиндра. Аналогично устроена высота. Для более точной информации смотрите man XF86vidmodemodmodeline.

Далеко не все пикселы, которые мы выводим при таком дотклоке можно вывести. То есть, реальный размер картинки существенно меньше, или частота кадров существенно меньше, чем возможно. ModeLine --- это способ вручную настроить монитор. Сделать это можно программой xvidtune.

../xvidtune.png

Вот здесь есть все те параметры из modeline.

Есть видеокарты и режимы, где оно настраивается. Не настраивается это в vesa и ещё некоторых. vesa просто лезет в видеокарточку и достает оттуда доступные режимы. Он не умеет ничего менять, но знает, что если установить определенные параметры, то оно должно заработать.

Изменить режим работы монитора можно также с помощью команды xrandr:

xrandr -s 832x624

Эта команда изменит разрешение на 832 на 624 точки.

Существует программа xev, которая ловит события с устройств ввода и выводит по ним информацию.

../xev.png

Если нажать какую-то клавишу, то результатом будет сообщение вида:

ButtonPress event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034270562, (42,98), root:(465,384),
    state 0x0, button 4, same_screen YES

Если подвигать мышью, то получим:

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034287126, (140,18), root:(563,304),
    state 0x0, is_hint 0, same_screen YES

Проверить!!!

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

../xbindkey.png


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

21

1

1

1

1

SergeyKorobkov + ПетрНикольский, FrBrGeorge, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080731/03XConfiguration (последним исправлял пользователь FrBrGeorge 2008-10-15 13:46:17)