Differences between revisions 1 and 24 (spanning 23 versions)
Revision 1 as of 2008-08-02 00:36:35
Size: 10754
Editor: eSyr
Comment:
Revision 24 as of 2008-10-10 15:23:00
Size: 23249
Editor: eSyr
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
(рассказ про то, как работают иксы) Если бы не альтвая брьба с изобр. дураками, то можно было бы заставить работать все машины на дной или одной принимать все соед, но в альте оно запускается с -nolisten tcp. Это сделано так, поск. это рабочая станция, и там такой функцинал не нужен.

Это первый слой.

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

То, с чем мы имеем дело сейчас --- xfce с wm xfwm, в юниоре, терминалсервере и мастере есть kde, wm там kwin

Есть ещё один слой, где мы забываем пр протокол X11, и всп. про то, как устр. жкран. Тут мы говориМ, что экр. может быть неск, естьприятные инт. штуки, октрые связаны не с окнами, а с упр. пргр. продуктов, и так далее. Эти все функции может взять из себя wm, а мжет и не брать. В граф. средах типа kde|xfce запускется куча прилож, каждая из которых делается тд. приложением.

Такое краткое содержание лекции про иксы.

Дополнение. Что инт. польз, который сел за такую граф. среду. Первое, что инт. узнать: как настр. эту среду. Вещь первая --- альтератор.

То, что вы видете, эт некийграф. интерфейс к пачке утилит, кторые явл. мозгом для определения возм. раф подсистемы, а с другой стороны, к конф. файлу системы xorg.

Монитор 1024х768 это некая заглушка, когда монитор неизвестен. Это не разрешение. ...

Как устрен xorg.conf. Он сост. из секций, каждая тв. либо за устр., либ за синт. понятие (нарпимер, Layout). Что мы видим в секции layout... Далее идёт секция загрузки модулей: type1-шрифты, freetype-шрифты (проверить), glx, dri --- граф. ускорение... Флаги: allowmouseopenfail --- чтобы иксы грузились, если мышьь отвалится, крме того, мышью можно упр. с клавиатуры (shift+numlock --- цифроблок). Кроме того, поворот клеса --- перемещение по оси z. Никто почти его не исп., то их преобр. в нажатия кнпок 4 и 5. Если вдру кнопки замапились неправильно, то сначала запускаете xev, а потом xmodmap.

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

Есть утилита modeline, которая выдаёт инф. о дост. режимах.

(рассказ про ЭЛТ и теоретизация пр цилиндр и тр)

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

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

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

Дальше еидёт раздел Device карточки, там можно настр видекарту, разл. ускорение... (это место, в кторое вписываются знач., который в альтератре выб. в разделе драйвер).

Screen. Теперь мы занимаемся синт. штуками. Эт то, как на данном мониторе с карточкой рисвать разнго рода графрежимы. Секция modes описывает, какие из именованных модлайнв в каком порядке включать. Их много, потому что разная глубина цветности.

Там в конце есть приписка такая, что устр., к котор. осущ. аппаратный доступ к граф. уск., оно будет иметь группу xgrp и права 0660.

Есть ещё одна синт. штука, lAYOUT? КОТОРАЯ ОПР., на каком скрине какие устр. ввода применяются.

В бльшинстве случаев перекл. между разными режимами мжно с исп. ctrl+alt++, ctrl+alt+-, при этом виртуальный размер экрана остаётся прежним, а разрешение меняется.

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

Ещё один момент, св. с изм разрешения --- его можно сделать с исп. утилиты xrandr

Для включения дополн. трёх кнопок надо выбраьт в настр. клавиатуры клавиатура acpi, при этом меняется /etc/X11/xinit/Xkbmap.

В какой-то момент пявился setxkbmap, который повт. синтаксис xorg.conf, и позв. кадждму польз. настр. клавиатуру п-своему.

Например, настроим перекл. раскладки.

Проблема с шифтами вот в чём: настройки xkb в рамках дной сессии аккумулируются. Это какая-то бага давняя, котрую мало кому хочется исправлять, но может быть такая штука, что вы пишите два шифта, а там чт-то не то с дним из шифтов.
=== Структура X-сервера ===

==== Архитектура ====

Графическая подсистема ПСПО базируется на комплекте программных продуктов {{http://x.org|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-клиентам фокус по своему усмотрению, называется диспетчером окон (''окноводом''). Диспетчер выпол

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


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

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

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

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


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

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

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

{{attachment:../acc.png}}

То, что вы видите, это некий графический интерфейс к пачке утилит, которые являются мозгом для определения возможностей графической подсистемы, а с другой стороны, к конфигурационный файлу системы xorg.

{{attachment:../acc_display.png}}

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

==== Файл xorg.conf ====

Рассмотрим содержание файла xorg.conf, расположенного в /etc/X11. Он состоит из секций, каждая отвечает либо за устройство, либо за синтетическое понятие (комплект устройств для общения с пользователем, или наоборот их части)(например, layout), или за некоторые файлы (секция Module --- загружает модули).

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

{{{
Section "ServerLayout"
 Identifier "Minimal layout"
 Screen "Screen0" 0 0
 InputDevice "Keyboard0" "CoreKeyboard"
 InputDevice "ImPS/2 Logitech Wheel Mouse|0" "CorePointer"
EndSection
}}}
 
 * Секция загрузки модулей (Module):

{{{
Section "Module"
 Load "type1"
 Load "freetype"
 Load "glx"
 Load "dri"
 Load "dbe"
 SubSection "extmod"
  Option "omit xfree86-dga"
 EndSubSection
EndSection
}}}
 
 Здесь type1 --- шрифты, freetype --- шрифты (проверить), glx --- трехмерная графика, dri --- графическое ускорение, dbe --- работа с памятью. (''а что, собственно, такое '''extmod'''?'')

 * Секция ServerFlags:

{{{

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

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

 * Секции InputDevice:

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

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

{{{
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
}}}

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

 * Секция Monitor.
{{{
Section "Monitor"
 Identifier "Monitor 1024x768|0"
 HorizSync 31.5 - 57.0
 VertRefresh 50.0 - 70.0
EndSection
}}}

 Если бы мы воспользовались конфигуратором, то мы бы увидели первые 3 строчки --- название (это именно название), частота развёртки и частота кадров. Частота развертки --- это частота строк. Считается, что безопасно показывать больше 60 кадров, а эргономично - больше 85. Эти параметры, вписанные сюда конфигуратором, соответствуют типичному монитору, который даёт нормальное разрешение 1024х768. Если монитор достаточно хороший, то тут может не быть ничего кроме 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
 EndSubSection
 SubSection "Display"
  Depth 15
 EndSubSection
 SubSection "Display"
  Depth 16
 EndSubSection
 SubSection "Display"
  Depth 24
 EndSubSection
 SubSection "Display"
  Depth 32
 EndSubSection
EndSection
}}}
(''кстати, надо бы другой вариант этой секции, у меня неудачный'')

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

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


===== ModeLine =====

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

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

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

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

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

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

{{attachment:../xvidtune.png}}

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

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

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

{{{
xrandr -s 832x624
}}}

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


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

{{attachment:../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, которая позволяет забиндить действия на чего-нибудь полезное.

{{attachment:../xbindkey.png}}

Line 60: Line 232:
## Требования к знаниям слушателя имена модулей через пробел; если нет пустая ячейка ## Требования к знаниям слушателя -- имена модулей через пробел; если нет -- пустая ячейка
Line 63: Line 235:
|| 0 || 1 || 1 || 1 || || 1 || SergeyKorobkov, VladimirLysikov, MaximByshevskiKonopko || || || || 21 || 1 || 1 || 1 || || 1 || SergeyKorobkov + ПетрНикольский, FrBrGeorge, MaximByshevskiKonopko || || ||

Настройка 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-клиентам фокус по своему усмотрению, называется диспетчером окон (окноводом). Диспетчер выпол

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

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

Экран

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

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

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

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

../acc.png

То, что вы видите, это некий графический интерфейс к пачке утилит, которые являются мозгом для определения возможностей графической подсистемы, а с другой стороны, к конфигурационный файлу системы xorg.

../acc_display.png

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

Файл xorg.conf

Рассмотрим содержание файла xorg.conf, расположенного в /etc/X11. Он состоит из секций, каждая отвечает либо за устройство, либо за синтетическое понятие (комплект устройств для общения с пользователем, или наоборот их части)(например, layout), или за некоторые файлы (секция Module --- загружает модули).

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

Section "ServerLayout"
        Identifier     "Minimal layout"
        Screen         "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "ImPS/2 Logitech Wheel Mouse|0" "CorePointer"
EndSection
  • Секция загрузки модулей (Module):

Section "Module"
        Load  "type1"
        Load  "freetype"
        Load  "glx"
        Load  "dri"
        Load  "dbe"
        SubSection "extmod"
                Option      "omit xfree86-dga"
        EndSubSection
EndSection
  • Здесь type1 --- шрифты, freetype --- шрифты (проверить), glx --- трехмерная графика, dri --- графическое ускорение, dbe --- работа с памятью. (а что, собственно, такое extmod?)

  • Секция ServerFlags:

Section "ServerFlags"
        Option      "AllowMouseOpenFail" "true"
EndSection
  • Опция allowmouseopenfail позволяет иксам грузиться, даже если мышь не работает. Кроме того, мышью можно управлять с клавиатуры (нажать сочетание shift+numlock, а потом использовать клавиши на цифровой клавиатуре для перемещения мыши).
  • Секции InputDevice:

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

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

  • Секция Monitor.

Section "Monitor"
        Identifier   "Monitor 1024x768|0"
        HorizSync    31.5 - 57.0
        VertRefresh  50.0 - 70.0
EndSection
  • Если бы мы воспользовались конфигуратором, то мы бы увидели первые 3 строчки --- название (это именно название), частота развёртки и частота кадров. Частота развертки --- это частота строк. Считается, что безопасно показывать больше 60 кадров, а эргономично - больше 85. Эти параметры, вписанные сюда конфигуратором, соответствуют типичному монитору, который даёт нормальное разрешение 1024х768. Если монитор достаточно хороший, то тут может не быть ничего кроме 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
        EndSubSection
        SubSection "Display"
                Depth     15
        EndSubSection
        SubSection "Display"
                Depth     16
        EndSubSection
        SubSection "Display"
                Depth     24
        EndSubSection
        SubSection "Display"
                Depth     32
        EndSubSection
EndSection

(кстати, надо бы другой вариант этой секции, у меня неудачный)

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

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 (last edited 2008-10-15 13:46:17 by FrBrGeorge)