Differences between revisions 3 and 32 (spanning 29 versions)
Revision 3 as of 2008-08-09 03:49:02
Size: 14443
Comment:
Revision 32 as of 2008-10-15 10:46:17
Size: 33189
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
(рассказ про то, как работают иксы)
'''''иксы это клиент серверная архитектура. сервер на вашей машине и забирает(обрабатывает входные сообщения от клавиатуры и мыши и других устройств ввода) всякие входные данные и передает их клиенту, который как-то обрабатывает эти сообщения и передает запросы икс серверу по поводу того что нужно сделать с графической платой, то есть что нарисовать.

Если бы не борьба компании ALT с изобретательными дураками, то можно было бы заставить работать все машины на одной или одной принимать все соединения, но в альте иксы запускаются с -nolisten tcp.''''' Это сделано так, поскольку это рабочая станция, и там такой функционал не нужен.

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

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

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

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

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

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

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

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

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

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

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

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

{{attachment:../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 =====

Режимы работы монитора задаются в секции `Monitor` параметром `Mode` (полная форма) или `ModeLine` (краткая форма записи, в одну строку), которого по умолчанию в `xorg.conf` нет. Добыть `ModeLine`, используемые X-сервером, можно в журнале запуска X-сервера:

{{{
$ grep -i modeline /var/log/Xorg.0.log
(II) NV(0): Printing DDC gathered Modelines:
. . .
(II) NV(0): Modeline "1024x768" 75.00 1024 1048 1184 1328 768 771 777 806 -hsync -vsync (56.5 kHz)
(II) NV(0): Modeline "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync (48.4 kHz)
(II) NV(0): Modeline "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync (60.0 kHz)
(II) NV(0): Modeline "832x624" 57.28 832 864 928 1152 624 625 628 667 -hsync -vsync (49.7 kHz)
(II) NV(0): Modeline "800x600" 50.00 800 856 976 1040 600 637 643 666 +hsync +vsync (48.1 kHz)
(II) NV(0): Modeline "800x600" 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz)
(II) NV(0): Modeline "800x600" 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz)
. . .
}}}

Различные драйверы видеокарт (например, nvidia) могут создавать журнал по различным правилам, не всегда достаточно простого поиска слова "Modeline". Некоторые найденные режимы драйвер не использует, так как данный графический адаптер на данном мониторе их воспроизвести не в состоянии.

Для того, чтобы понять, что это за числа, необходимо в первом приближении понять, как работает электронно-лучевая трубка. В ЭЛТ имеется т. н. "пушка", которая может стрелять электронами. Место экрана, в которое попал электрон, недолго светится. Электрон в полёте отклоняется по вертикали и горизонтали. Итак пушка стреляет электронами с некоторой частотой, и они отклоняются таким образом, что первый "выстрел" попадает, допустим, в левый верхний угол экрана, второй -- в соседний справа пиксель, третий -- справа от второго и т. д. Дойдя до края экрана, "прицел луча" возвращается к началу и смещается на один пиксель вниз. Дойдя таким образом до правой нижней точки экрана, луч идёт обратно в левый верхний угол. Всё время обратного хода нарисованный кадр медленно гаснет. Затем процесс повторяется: рисуется следующий кадр.

{{attachment:../CRT.flat.png}}

Начальная и конечная часть "строки", по которой пробегает луч, -- невидимые. Невидимы могут быть также несколько первых и последних строк, Кроме того, какое-то время затрачивается на "обратных ход луча" по строкам и по кадру. В действительности всё намного сложнее, да и электронно-лучевых мониторов сегодня почти не выпускают, однако приведённая метафора вполне годится для толкования настроек Xorg.

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

Первый параметр -- т. н. "pixel clock" (количество миллионов пикселей в секунду, которое может выдавать видеокарта и отображать монитор). Минимальное и максимальное значение этого параметра для различных карт и мониторов различны; к тому же некоторые карты и мониторы имеют только фиксированный список допустимых частот.

Следующие восемь параметров -- различные временные характеристики луча. Слегка непривычно, что время в них измеряется в ... пикселях!

{{attachment:../CRT.Cylinder.png}}

Если всё мерить в пикселях, экран следует представлять себе в виде тора, в котором по замкнутой спирали бегает луч. Часть этой спирали соответствует картинке, часть -- невидимой составляющей и часть -- обратному ходу луча. Для простоты разрежем этот тор, превраитв его в цилиндр. Отсчёт начинается с первого видимого пикселя. Второй параметр `Modeline` -- ширина видимой части строки. Третий -- конец завершающей невидимой части (время начала "синхронизации", то есть обратного хода луча), четвёртый -- конец обратного хода луча и начало стартовой невидимой части новой строки, пятый -- общий диаметр одного витка спирали (то есть время на показ одной строки целиком). Параметры с шестого по девятый описывают те же характеристики для строк в кадре.

Последний параметр -- особенности настройки режима. Более полную информациюрежимах можно найти, например, в руководстве XF86vidmodemodmodeline(3). Учебник по Modeline можно найти здесь: http://easymamecab.mameworld.net/html/monitor1.htm .

В Xorg есть утилита `xvidtune`, позволяющая настроить видеорежим и сконструировать соответствующий Modeline:

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

При нажатии кнопки "Show" выведется самый настоящий Modeline:
{{{
$ xvidtune
Vendor: (null), Model: (null)
Num hsync: 1, Num vsync: 1
hsync range 0: 31.00 - 81.00
vsync range 0: 56.00 - 75.00
"1024x768" 75.00 1024 1048 1184 1328 768 771 777 806 +hsync +vsync
}}}

Некоторые драйверы видеокарт (например, vesa) не позволяют настраивать режимы. Драйвер vesa получает настройки непосредственно из BIOS видеокарты, что гарантирует работу графической подсистемы -- при условии, что карта соответствует стандарту.

Переключать графические режимы можно также с помощью команды `xrandr`:

{{{
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 768
VGA connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768 70.1* 60.0
   832x624 74.6
   800x600 72.2 75.0 60.3 56.2
   640x480 75.0 72.8 75.0 63.1
$ xrandr -s 832x624
}}}

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

==== Обработка X-событий ====
Для того, чтобы понять, какие именно события посылает устройство графического ввода (например, мышь при нажатии на светящуюся кнопку сбоку или клавиатура при нажатии на кнопку с нарисованной луной), можно запустить специальную программу-монитор `xev`:

{{attachment:../xev.png}}

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

{{{
$ xev
. . .
KeyPress event, serial 30, synthetic NO, window 0x1800001,
    root 0x1a6, subw 0x1800002, time 17925583, (28,48), root:(159,206),
    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1800001,
    root 0x1a6, subw 0x1800002, time 17925695, (28,48), root:(159,206),
    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
. . .
}}}

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

{{{
MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286347, (52,96), root:(475,382),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286355, (54,95), root:(477,381),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286390, (55,94), root:(478,380),
    state 0x0, is_hint 0, same_screen YES
. . .
}}}


Есть программа xbindkeys, которая позволяет привязать произвольное действие к нажатию произвольной клавиши или кнопки мыши:
{{{
$ xbindkeys
Error : /home/user/.xbindkeysrc not found or reading not allowed.
please, create one with 'xbindkeys --defaults > /home/user/.xbindkeysrc'
$ xbindkeys --defaults > ~/.xbindkeysrc
$ xbindkeys -s
"xbindkeys_show"
    Control+Shift + q
"xterm"
    m:0x4 + c:41
    Control + f
"xterm"
    m:0x4 + b:2 (mouse)
}}}
Такие значения по умолчанию нас не устраивают, попробуем перенастроить запуск `xterm` на кнопку с
луной:

{{{
$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x0 + c:223
    NoSymbol
$ echo '
"xterm"
  m:0x0 + c:223
' > .xbindkeysrc
$ xbindkeys
}}}

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

Настройка 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

Режимы работы монитора задаются в секции Monitor параметром Mode (полная форма) или ModeLine (краткая форма записи, в одну строку), которого по умолчанию в xorg.conf нет. Добыть ModeLine, используемые X-сервером, можно в журнале запуска X-сервера:

$ grep -i modeline /var/log/Xorg.0.log
(II) NV(0): Printing DDC gathered Modelines:
. . .
(II) NV(0): Modeline "1024x768"  75.00  1024 1048 1184 1328  768 771 777 806 -hsync -vsync (56.5 kHz)
(II) NV(0): Modeline "1024x768"  65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz)
(II) NV(0): Modeline "1024x768"  78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz)
(II) NV(0): Modeline "832x624"   57.28  832 864 928 1152  624 625 628 667 -hsync -vsync (49.7 kHz)
(II) NV(0): Modeline "800x600"   50.00  800 856 976 1040  600 637 643 666 +hsync +vsync (48.1 kHz)
(II) NV(0): Modeline "800x600"   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz)
(II) NV(0): Modeline "800x600"   36.00  800 824 896 1024  600 601 603 625 +hsync +vsync (35.2 kHz)
. . .

Различные драйверы видеокарт (например, nvidia) могут создавать журнал по различным правилам, не всегда достаточно простого поиска слова "Modeline". Некоторые найденные режимы драйвер не использует, так как данный графический адаптер на данном мониторе их воспроизвести не в состоянии.

Для того, чтобы понять, что это за числа, необходимо в первом приближении понять, как работает электронно-лучевая трубка. В ЭЛТ имеется т. н. "пушка", которая может стрелять электронами. Место экрана, в которое попал электрон, недолго светится. Электрон в полёте отклоняется по вертикали и горизонтали. Итак пушка стреляет электронами с некоторой частотой, и они отклоняются таким образом, что первый "выстрел" попадает, допустим, в левый верхний угол экрана, второй -- в соседний справа пиксель, третий -- справа от второго и т. д. Дойдя до края экрана, "прицел луча" возвращается к началу и смещается на один пиксель вниз. Дойдя таким образом до правой нижней точки экрана, луч идёт обратно в левый верхний угол. Всё время обратного хода нарисованный кадр медленно гаснет. Затем процесс повторяется: рисуется следующий кадр.

../CRT.flat.png

Начальная и конечная часть "строки", по которой пробегает луч, -- невидимые. Невидимы могут быть также несколько первых и последних строк, Кроме того, какое-то время затрачивается на "обратных ход луча" по строкам и по кадру. В действительности всё намного сложнее, да и электронно-лучевых мониторов сегодня почти не выпускают, однако приведённая метафора вполне годится для толкования настроек Xorg.

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

Первый параметр -- т. н. "pixel clock" (количество миллионов пикселей в секунду, которое может выдавать видеокарта и отображать монитор). Минимальное и максимальное значение этого параметра для различных карт и мониторов различны; к тому же некоторые карты и мониторы имеют только фиксированный список допустимых частот.

Следующие восемь параметров -- различные временные характеристики луча. Слегка непривычно, что время в них измеряется в ... пикселях!

../CRT.Cylinder.png

Если всё мерить в пикселях, экран следует представлять себе в виде тора, в котором по замкнутой спирали бегает луч. Часть этой спирали соответствует картинке, часть -- невидимой составляющей и часть -- обратному ходу луча. Для простоты разрежем этот тор, превраитв его в цилиндр. Отсчёт начинается с первого видимого пикселя. Второй параметр Modeline -- ширина видимой части строки. Третий -- конец завершающей невидимой части (время начала "синхронизации", то есть обратного хода луча), четвёртый -- конец обратного хода луча и начало стартовой невидимой части новой строки, пятый -- общий диаметр одного витка спирали (то есть время на показ одной строки целиком). Параметры с шестого по девятый описывают те же характеристики для строк в кадре.

Последний параметр -- особенности настройки режима. Более полную информациюрежимах можно найти, например, в руководстве XF86vidmodemodmodeline(3). Учебник по Modeline можно найти здесь: http://easymamecab.mameworld.net/html/monitor1.htm .

В Xorg есть утилита xvidtune, позволяющая настроить видеорежим и сконструировать соответствующий Modeline:

../xvidtune.png

При нажатии кнопки "Show" выведется самый настоящий Modeline:

$ xvidtune          
Vendor: (null), Model: (null)
Num hsync: 1, Num vsync: 1
hsync range 0:  31.00 -  81.00
vsync range 0:  56.00 -  75.00
"1024x768"     75.00 1024 1048 1184 1328    768 771 777 806    +hsync +vsync

Некоторые драйверы видеокарт (например, vesa) не позволяют настраивать режимы. Драйвер vesa получает настройки непосредственно из BIOS видеокарты, что гарантирует работу графической подсистемы -- при условии, что карта соответствует стандарту.

Переключать графические режимы можно также с помощью команды xrandr:

$ xrandr 
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 1024 x 768
VGA connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       70.1*    60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     75.0     63.1  
$ xrandr -s 832x624

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

Обработка X-событий

Для того, чтобы понять, какие именно события посылает устройство графического ввода (например, мышь при нажатии на светящуюся кнопку сбоку или клавиатура при нажатии на кнопку с нарисованной луной), можно запустить специальную программу-монитор xev:

../xev.png

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

$ xev
. . .
KeyPress event, serial 30, synthetic NO, window 0x1800001,
    root 0x1a6, subw 0x1800002, time 17925583, (28,48), root:(159,206),
    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x1800001,
    root 0x1a6, subw 0x1800002, time 17925695, (28,48), root:(159,206),
    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
. . .

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

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286347, (52,96), root:(475,382),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286355, (54,95), root:(477,381),
    state 0x0, is_hint 0, same_screen YES

MotionNotify event, serial 31, synthetic NO, window 0x2a00001,
    root 0x59, subw 0x0, time 2034286390, (55,94), root:(478,380),
    state 0x0, is_hint 0, same_screen YES
. . .

Есть программа xbindkeys, которая позволяет привязать произвольное действие к нажатию произвольной клавиши или кнопки мыши:

$ xbindkeys
Error : /home/user/.xbindkeysrc not found or reading not allowed.
please, create one with 'xbindkeys --defaults > /home/user/.xbindkeysrc'
$ xbindkeys --defaults > ~/.xbindkeysrc
$ xbindkeys -s   
"xbindkeys_show"
    Control+Shift + q
"xterm"
    m:0x4 + c:41
    Control + f
"xterm"
    m:0x4 + b:2   (mouse)

Такие значения по умолчанию нас не устраивают, попробуем перенастроить запуск xterm на кнопку с луной:

$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x0 + c:223
    NoSymbol
$ echo '       
"xterm"
  m:0x0 + c:223
' > .xbindkeysrc
$ xbindkeys


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

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

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

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

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

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

Level

Maintainer

Start date

End date

90

1

1

1

1

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


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080731/03XConfiguration (last edited 2008-10-15 10:46:17 by FrBrGeorge)