Внутреннее устройство Linux
Шрифт:
Большинство X-клиентов выполняют прослушивание ввода от устройств ядра, поскольку им нет повода беспокоиться о том, какое именно устройство вызвало событие ввода. В действительности большинство клиентов ничего не знает о расширении X Input Extension. Тем не менее клиент может использовать это расширение, чтобы избрать какое-либо конкретное устройство.
Каждое устройство обладает набором связанных с ним свойств. Чтобы просмотреть эти свойства, используйте команду xinput с номером устройства, как в этом примере:
$ xinput —list-props 8
Device 'Logitech Unifying Device. Wireless PID:4026':
Device Enabled (126): 1
Coordinate Transformation Matrix (128): 1.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (256): 0
Device Accel Constant Deceleration (257): 1.000000
Device Accel Adaptive Deceleration (258): 1.000000
Device Accel Velocity Scaling (259): 10.000000
—snip—
Как
Мышь
Можно управлять параметрами, относящимися к устройству, с помощью команды xinput, наиболее полезные из них относятся к мыши (указателю). Можно изменить многие параметры непосредственно как свойства, но обычно проще выполнить это с помощью специальных параметров —set-ptr-feedback и —set-button-map команды xinput. Например, если к устройству dev подключена мышь с тремя кнопками и вы желаете поменять на ней порядок следования кнопок (для удобства работы левши), попробуйте такую команду:
$ xinput —set-button-map dev 3 2 1
Клавиатура
Множество различных вариантов раскладки клавиатуры, доступных в разных странах, представляет особые сложности для интеграции в любую оконную систему. В системе X всегда присутствовала возможность настройки клавиатуры с помощью протокола ядра, которым можно управлять, используя команду xmodmap, однако в любой достаточно современной системе применяется расширение XKB (X-клавиатура), позволяющее добиться более точной настройки.
Расширение XKB является настолько сложным, что многие пользователи до сих пор применяют команду xmodmap, когда им необходимо быстро внести изменения.
Основная идея, заложенная в расширение XKB, такова: можно определить раскладку клавиатуры и скомпилировать ее с помощью команды xkbcomp, а затем загрузить и активизировать эту раскладку на X-сервере с помощью команды setxkbmap. У этой системы есть две чрезвычайно интересные особенности.
• Можно определять частичные раскладки, чтобы дополнить уже существующие. Это особенно удобно для таких задач, как превращение клавиши Caps Lock в клавишу Control, и используется многими утилитами настройки клавиатуры в окружении рабочего стола.
• Можно определить индивидуальные раскладки для каждой подключенной клавиатуры.
Фон рабочего стола
Старая команда xsetroot системы X позволяет вам указать цвет фона и другие характеристики корневого окна, но это никак не проявляется на большинстве компьютеров, поскольку корневого окна никогда не видно. Вместо него во многих окружениях рабочего стола позади всех окон помещается большое окно, позволяющее задействовать
Команда xset
Самой старой командой для выполнения настройки является команда xset. Она больше не применяется, но вы можете запустить короткую команду xset q, чтобы получить отчет о состоянии некоторых функций. Возможно, самыми полезными из них будут параметры хранителя экрана и DPMS (Display Power Management Signaling, сигналы управления энергопотреблением дисплеев).
14.4. Будущее системы X Window
При чтении изложенного выше у вас могло сложиться впечатление, что система X является довольно старой и для того, чтобы она смогла научиться выполнять новые задачи, пришлось дать ей изрядное количество «пинков». Вы будете не очень далеки от истины. Первый вариант системы X Window появился в 80-е годы. Несмотря на то что за прошедшие годы она существенно эволюционировала (гибкость являлась важной частью исходного замысла), даже сейчас можно проследить в ней исходную архитектуру.
Одним из признаков эпохи системы X Window является то, что сам ее сервер поддерживает исключительно огромное количество библиотек, многие из них — в целях обратной совместимости. Но, вероятно, более важным является следующее: идея о том, чтобы сервер мог управлять клиентами, их окнами, а также выступать в роли посредника для оконной памяти, сильно повлияла на быстродействие. Если позволить приложениям выполнять рендеринг содержимого их окон непосредственно в дисплейной памяти, то это происходило бы гораздо быстрее. Для этого применяется облегченный менеджер окон, который называется композитным менеджером окон и выполняет минимальное управление дисплейной памятью.
Новый стандарт, основанный на этой идее (Wayland), начинает набирать силу. Наиболее важной частью стандарта Wayland является протокол, который определяет, как клиенты взаимодействуют с композитным менеджером окна. Другими частями являются управление устройством ввода и система совместимости со стандартом X. Как протокол, Wayland также поддерживает идею сетевой прозрачности. Многие среды рабочего стола Linux, например GNOME и KDE, поддерживают теперь стандарт Wayland.
Однако стандарт Wayland является не единственной альтернативой системе X. На момент написания этой книги известно, что другой проект, Mir, имеет похожие цели, хотя в его архитектуре использован немного другой подход. Когда-нибудь произойдет повсеместное принятие хотя бы одной новой системы, которая может оказаться или не оказаться какой-либо из упомянутых.
Эти новые разработки важны, так как они не будут ограничены лишь рабочим столом Linux. Вследствие своего малого быстродействия и гигантского объема используемого дискового пространства система X Window непригодна для таких сред, как планшеты и смартфоны, поэтому производителям до сих пор приходилось использовать альтернативные системы, чтобы привести в действие встроенные дисплеи Linux. Тем не менее стандартизированный прямой рендеринг может содействовать появлению менее затратных способов поддержки таких дисплеев.