X-сервер
Image:Obsolete.svg Содержимое этой статьи сильно устарело.

Contents


X-сервер падает на старте с ошибкой Fatal server error: could not open default font 'fixed. Что делать?

http://www.linuxcenter.ru/lib/articles/soft/x_fixed_err.phtml

X-сервер падает на старте с ошибкой Xlib: extension "SHAPE" missing on display ":0.0". Что делать?

Проверьте у себя в файле конфигурации X-сервера (/etc/X11/xorg.conf) наличие следующих строчек в Section "Module":

Load  "extmod"
SubSection  "extmod"
Option  "omit xfree86-dga"
EndSubSection

Если их нет, вставьте и попробуйте запустить еще раз. Все должно работать.

Как настроить переключение раскладок в X-сервере?

В современных дистрибутивах обычно более-менее правильные настройки доступны из коробки. В файле настроек (/etc/X11/xorg.conf) нужно указать настройки своей клавиатуры. Для примера возьмем переключение по Ctrl+Shift двух языков (en, ru) с включением scroll lock на русской раскладке:

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
Option      "XkbModel" "pc105"
Option      "XkbLayout" "us,ru(winkeys)"
Option      "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection

В последних версиях Xorg (где xkeyboard-config версий 1.2 и выше) winkeys больше не нужен, он стал вариантом по умолчанию.

Теперь непосредственно рассмотрим переключатель. Во всех примерах по умолчанию стоит английский. Переключатель описывается в последней строке. Для того, чтобы переключаться по ctrl+shift указывается параметр ctrl_shift_toggle, по alt+shift - параметр alt_shift_toggle. Значение grp_led:scroll говорит о том, что после переключения будет загораться индикатор scroll lock.

Пример с переключением трех языков (взято с http://lafox.net/docs/MDKman2/MDKman.html/ch02s02.html):

Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "XkbModel" "pc105" #тут оставить свое
Option "XkbLayout" "us,ru(winkeys),ua(winkeys)" #для 3-х языков - Английского, Русского и Украинского
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" #в качестве индикатора будет ScrollLock, а переключение раскладок по привычной комбинации Ctrl+Shift
EndSection

После внесения изменений X-сервер нужно перезапустить.

Общее замечание. Для того, чтобы все это работало должна быть верно настроена локаль.

Для более гибкой настройки можно использовать xxkb ( http://netadmin1.ic.tsu.ru/other/xxkb/, http://gnome.org.ru/xxkb.shtml). xxkb имеет достаточно богатые настройки по управлению раскладками и, в частности, настройки совместимости со средой - он может "висеть" на каждом (поддерживаются исключения) окне или только на активном в виде переключателя в указанном месте, может находится в трее KDE и Gnome, правда иконка в трее появляется из главного окна, которая слишком большая. Вместо файлов en48.xpm и ru.48.xpm нужно записать файлы с иконками поменьше, в качестве временной меры можно заменить их на en15.xpm и ru15.xpm.

В среде Gnome для переключения раскладок используется апплет Keyboard Indicator. В отличии от аналогов для других DE он не нуждается в наличии настроек в xorg.conf.

В среде KDE вместо xxkb лучше использовать kkbswitch, если нужен лишь индикатор и возможность каждому окну сохранять свою раскладку.

Как настроить переключение раскладок в X-сервере, если доступа к конфигу нет?

setxkbmap -layout 'us,ru(winkeys)' -option 'grp:ctrl_shift_toggle,grp_led:scroll'

В KDE 3.5 это можно сделать через KDE Control Center - http://wiki.linux.ru/index.php/FAQ:kxkb

Как сделать переключение по Right Ctrl+Right Shift и т.д.?

Штатными средствами X-сервера этого сделать нельзя. Придется ставить xxkb. Далее по его руководству настраиваете себе переключатель как хотите.

Как сделать переключение раскладки по клавише Windows?

Приходится выносить этот вопрос отдельно

Option  "XkbOptions" "grp:menu_toggle"

(вместо "menu" - "Super_L"/"Super_R")

Как сделать одну кириллическую раскладку вместо двух-трех?

Поскольку раскладки трех языков (русского, украинского, беларусского) отличаются на небольшое число символов, то идея объединить все раскладки в одну появляется сама собой.

Мне известно два пути решения: через level3 и через compose.

level3:

level3 позволяет набирать альтернативные символы с помощью удержания level3 модификатора (к примеру, win-кнопки). Для этого:

1. Создаем на основе, например, русской раскладки свою:

cd /usr/X11R6/share/X11/xkb/symbols
cp ru cyr

2. Редактируем в любимом текстовом редакторе:

2.1. Модифицируем секцию xkb_symbols "basic"

key <TLDE> {        [        apostrophe,        asciitilde,               Cyrillic_io,               Cyrillic_IO    ]       };
    
key <AD09> {        [    Cyrillic_shcha,    Cyrillic_SHCHA,       Byelorussian_shortu,       Byelorussian_SHORTU    ]       };
    
key <AD12> {        [ Cyrillic_hardsign, Cyrillic_HARDSIGN,              Ukrainian_yi,              Ukrainian_YI    ]       };
key <BKSL> {        [         backslash,               bar, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN    ]       };

key <AC02> {        [     Cyrillic_yeru,     Cyrillic_YERU,               Ukrainian_i,               Ukrainian_I    ]       };
    
key <AC11> {        [        Cyrillic_e,        Cyrillic_E,              Ukrainian_ie,              Ukrainian_IE    ]       };

2.2. В конце секции вставляем

include "level3(lwin_switch)"

Т.е. символы будут получаться при зажатой левой win-кнопке.

2.3. В остальных секциях меняем первую команду с include "ru(<что-то>)" на include "cyr(<что-то>)".

3. Добавляем нашу раскладку в список раскладок (/usr/X11R6/share/X11/xkb/symbols.dir):

-dp----- a------- ru(basic)
--p----- a------- ru(winkeys)
--p----- a------- ru(typewriter)

Строчек может быть больше, в зависимости от того, какие модификации были оставлены в файле раскладок.

4. Включаем, тестируем:

setxkbmap -layout 'us,cyr'

5. Добавляем раскладку в настройки X-сервера и наслаждаемся.

compose:

1. Создаем файл ~/.XCompose с таким содержимым:

include "/usr/X11R6/share/X11/locale/en_US.UTF-8/Compose"

<Multi_key> <Cyrillic_yeru> <Cyrillic_yeru> : "і" U0456
<Multi_key> <Cyrillic_YERU> <Cyrillic_YERU> : "І" U0406

<Multi_key> <Cyrillic_hardsign> <Cyrillic_hardsign> : "ї" U0457
<Multi_key> <Cyrillic_HARDSIGN> <Cyrillic_HARDSIGN> : "Ї" U0407

<Multi_key> <Cyrillic_e> <Cyrillic_e> : "є" U0454
<Multi_key> <Cyrillic_E> <Cyrillic_E> : "Є" U0404

<Multi_key> <backslash> <backslash> : "ґ" U0491
<Multi_key> <bar> <bar> : "Ґ" U0490

<Multu_key> <Cyrillic_shcha> <Cyrillic_shcha> : "ў" 045E
<Multu_key> <Cyrillic_SHCHA> <Cyrillic_SHCHA> : "Ў" 040E

Таким образом, для того, чтобы набрать нужный символ, нужно нажать сначала compose кнопку (обычно menu-кнопка), а потом дважды на кнопку требуемоего символа.

2. Перегружаем X-сервер, наслаждаемся.

Как настроить нормальную частоту и разрешение в X-сервере? Как рассчитать modeline?

Нужно прописать в конфигурационном файле X-сервера нечто такое:


Section "Monitor"
Identifier  "My Monitor"
HorizSync   31.5 - 79.0
VertRefresh 50-90
EndSection

HorizSync и VertRefresh нужно взять из книжки к монитору.

Если это способ по каким-либо причинам не устраивает, можно вычислить нужную modeline и прописать ее.

Узнать нужную modeline можно с помощью стандартной утилиты gtf, KDE'шной kvideogen, http://www.dynaweb.hu/opensource/videogen videogen], и прочих. Или on-line калькулятора - http://koala.ilog.fr/cgi-bin/nph-colas-modelines

Например:

user@linux# gtf 1024 768 85

выдаст

# 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
Modeline "1024x768_100.00"  113.31  1024 1096 1208 1392  768 769 772 814  -HSync +Vsync

Полученную строчку нужно прописать в xorg.conf в раздел Monitor, чтобы получилось примерно так:

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "CTX5378"
DisplaySize  330        250
HorizSync    30.0 - 72.0
VertRefresh  50.0 - 130.0
ModeLine     "1152x864" 108.0 1152 1200 1328 1528 864 865 868 904 +hsync +vsync
ModeLine     "1024x768" 94.5 1024 1076 1172 1372 768 769 772 812 +hsync +vsync
ModeLine     "800x600" 56.3 800 832 896 1032 600 601 604 619 +hsync +vsync
ModeLine     "640x480" 36.0 640 712 768 808 480 485 488 525 -hsync -vsync
ModeLine     "400x300" 28.1 400 412 444 508 300 304 306 327 +hsync +vsync doublescan
ModeLine     "320x200" 15.8 320 360 392 396 200 204 206 222 -hsync +vsync doublescan
Modeline     "1024x768_100.00"  113.31  1024 1096 1208 1392  768 769 772 814  -HSync +Vsync
Option      "dpms"
EndSection

После перезапуска X-сервера можно провести тонкую настройку (чтобы края не вылезали и т.п.) программой xvidtune - заходим в консоль, делаем xvidtune, когда нам все понравится, делаем apply и получаем в консоли исправленную строчку для modline. Ее записываем вместо первоначальной.

Что делать, если частоты прописал, а частота обновления экрана по прежнему 60Гц?

Х-сервер перезапустили? Тогда читаем вот этот вопрос, точнее его конец об именовании моделайнов.

Почему не выставляется 32-битная палитра?

Зато есть 24-битная, по восемь бит на каждый канал из RGB, а больше всё равно ваш монитор не умеет. И четвёртый канал для значения прозрачности не поможет вашему дисплею отобразить кусок стенки за ним. 32-битная адресация включается на уровне драйверов автоматически.

Где взять драйвер под монитор?

Нигде. Если вы не в курсе, в "драйверах для монитора" для Windows обычно пишутся его рабочие частоты (которые современные мониторы и так отдают операционной системе с помощью EDID) иногда рабочую температуру цвета, цветовые профили.

Кстати, если вы думаете, что у вас нельзя поставить 100Гц вместо 85Гц из-за того, что у вас отсутствуют данные драйверы, то вы ошибаетесь. Виноват драйвер видеокарты (например, такое наблюдается на картах S3).

Как правильно настроить шрифты?

В новых версиях Xorg достаточно скопировать шрифты в ~/.fonts (только для пользователя) или /usr/share/fonts (для всех). Они будут доступны для GTK2 и QT приложений без перезапуска Х-сервера.

Как покинуть/перезапустить/перезагрузить X-сервер или как сделать, чтобы первоначально "иксы" не грузились?

Выгрузить X-сервер можно нажав ctrl+alt+backspace, если вы грузили их с помощью startx (т.е. система грузилась по сценарию загрузки 3, известному под названиями init 3 или runlevel 3).

Если же используется Display Manager (kdm, gdm, xdm, etc), то достаточно остановить соответствующий демон:

root@linux# /etc/init.d/kdm stop

В различных дистрибутивах это может быть /etc/rc.d/ вместо /etc/init.d

Альтернативный способ это выполнить от рута /sbin/telinit 3, перейдя из runlevel 5 в runlevel 3. Обратно вернуться можно командой /sbin/telinit 5

Чтобы при загрузке система не загружалась в графический режим, нужно в /etc/inittab выбрать другой сценарий загрузки (runlevel). Графический режим - это 5 runlevel (в Slackware - 4), а текстовый - 3 (в Debian - 2).

Для этого находим строчку

/etc/inittab:

id:N:initdefault:

где N - номер режима загрузки и меняем на '3' или '2' (текстовый). Не забудьте, что после этого будут грузиться сервисы, указанные в /etc/rc3.d, а не /etc/rc5.d (это для RedHat).

Как предотвратить отключение монитора?

см. /etc/X11/xorg.conf на предмет опции dpms в секции Monitor

Как запустить второй X-сервер?

Командой startx -- :N, где N - номер сервера. Нумерация начинается с нуля и если один сервер уже запущен, то он, скорее всего, имеет нулевой номер.

Как запустить X-вую программу с другого компьютера по сети?

Сначала рассмотрим простой вариант - обе машины работают под управлением Linux.

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

На сервере должен быть установлен и запущен openssh. Тогда вы в терминале своей рабочей станции пишете:

user@workstation$ xhost +server

и логинитесь на сервер по ssh:

user@workstation$ ssh server -l user

Затем после логина пишете в терминале (для ssh можно не писать, переменная выставляется автоматом):

user@server$ export DISPLAY=workstation:0.0

После можете запускать программы с сервера - все должно работать.

Теперь рассмотрим вариант сложнее: Linux - сервер, MS Windows - клиент.

Это сделать очень легко. Ставим Cygwin, в них поднимаем X-сервер (это делается выбором софта во время установки). К X-серверу дополнительно ставится пакет OpenSSH. Далее на машине с Linux запускается демон openssh.

Далее в запущенном в Cygwin X-сервере, в консоли набираем:

ssh -Y -l username remote_hostname_or_ip_address

логинимся на машину с Linux и все работает.

Можно из под MS Windows использовать putty совместно с cygwin. Зачем это надо не знаю :-), но что бы из putty запускать иксовые приложения, необходимо сделать следущее: указываем в hostname IP адрес linux-машины и в Connection-->SSH->Tunnels отмечаем чекбокс Enable X11 forwarding. Коннектимся и просто запускаем X приложения. Всё.

Как запустить X-сервер с другой машины по сети?

Для этого на машине, с которой вы собираетесь запускать X-сервер, должен работать xdm (или его ориентированные под kde и gnome аналоги - kdm и gdm). Вам придется или запустить его вручную или сервер (машина с которой мы будем запускать X-сервер) должна изначально грузиться в графический режим (runlevel 5)

Теперь на сервере надо привести в соответствие следующие файлы:

/etc/xdm/Xaccess здесь мы ничего не меняем

*               CHOOSER BROADCAST       #any indirect host can get a chooser

/etc/xdm/Xservers здесь мы ничего не меняем

:0 local /usr/X11R6/bin/X

/etc/xdm/xdm-config меняем одну строчку (ставим перед ней !)

! DisplayManager.requestPort:   0

/etc/xmd/kdmrc меняем один параметр (ставим true)

# Whether KDM should listen to XDMCP requests. Default is true.
Enable=true

X-сервер на клиенте запускается командой

user@localhost$ X --query server_with_xdm

Вот хорошая статья на эту тему http://linuxportal.ru/entry.php/P1318_0_3_0/

Можно ли запустить внутри иксов еще одни иксы?

Можно - воспользуйтесь Xnest и переопределите для новых иксов переменную DISPLAY=":1"

Для чего это нужно? Например, для запуска игр, не работающих в оконном режиме.

Как сделать управление интерфейсом пользователя по типу radmin?

Ответ есть тут

Как подключить к компьютеру несколько терминалов - комплектов клавиатура+мышь+монитор (multihead, многологовый)?

Настройка мультимониторной конфигурации. Автор Вадим Лихота

Оно уже устарело, но при желании можно адаптировать под современные дистрибутивы

Как запустить X-вую программу по расписанию?

Можно использовать планировщик заданий at. Например так:

DISPLAY=:0 at ktorrent 0220

Это запустит приложение ktorrent в 02:20

В рабочей среде KDE существует графическая программа для запуска программ по времени - kalarm.

Где хранятся настройки стандартных X-вых программ?

В /etc/X11/app-defaults

Для того, чтобы настроить их под конкретного пользователя нужно в файле ~/.Xdefaults или ~/.Xresources прописать свои параметры

Alt в xterm не работает. Как исправить?

Добавить в ~/.Xresources:

XTerm*eightBitInput: false
XTerm*metaSendsEscape: true 

У меня под root'ом 3D-ускорение работает, а под пользователем - нет.

Нужно добавить в /etc/X11/xorg.conf такие строчки:

Section "DRI"
        Mode 0666
EndSection

или если надо ограничить доступ только одной группе (users в данном случае)

Section "DRI"
        Group        users
        Mode         0660
EndSection

Как настроить двухколесную мышь?

http://linuxportal.ru/entry.php/P12_0_3_0

Как настроить многокнопочную мышь?

Этот документ должен помочь - http://forall.ru-board.com/Demetrio/lor/imwheel.txt

Как настроить multitouch на тачпаде?

http://www.ibm.com/developerworks/opensource/library/os-touchpad/

Как регулировать скорость мыши в X-сервере (без KDE/GNOME/XFCE)?

xset m Х

где Х - желаемая скорость (обычно 4-6)

Можно задать скорость сразу в конфигурационном файле в разделе Section "Pointer":

Resolution число

Разрешение задается в точках на дюйм - чем меньше число, тем медленнее будет перемещаться указатель мыши.

Как включить/отключить Composite?

Нужно добавить или закомментировать в xorg.conf следующую секцию:

Section "Extensions"
	Option		"Composite"	"true"
	Option		"RENDER"	"true"
EndSection

В последних версиях Xorg Composite включен по умолчанию.

Как установить драйвер Nvidia? Где скачать драйвер?

1. Скачиваем драйвер с сайта, http://www.nvidia.com/object/linux.html

2. Устанавливаем все необходимое для сборки. Как минимум это компилятор gcc и заголовочные файлы ядра (пакет kernel-headers, в разных дистрибутивах может называться слегка иначе)

3. Запускаем инсталятор, на вопрос о скачивании прекомпиленых модулей отвечаем отрицательно и начнется сборка модуля. Если сборка оканчивается ошибкой, то открываем nvidia-insteller.log и смотрим в чем дело.

4. Проверяем загружается ли модуль - modprobe nvidia. В dmesg должно быть что то вроде такого:

[   10.269110] nvidia: module license 'NVIDIA' taints kernel.
[   10.544921] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  177.70  Wed Aug 27 12:46:19 PDT 2008

5. Открываем /etc/X11/xorg.conf и меняем Driver "nv" на Driver "nvidia"(хотя при установке оно там "само" пропишется),если вам не нравится выскакивающее лого нвидии добавляем параметр Option "NoLogo" "True". Вместо "nv" у вас может быть "vesa"

6. Запускаем иксы и проверяем наличие ускорения:

glxinfo |grep direct
direct rendering: Yes

7. Если что то не работает, то внимательно смотрим лог /var/log/Xorg.0.log на предмет ошибок, они отмечены "EE"

Как разогнать видеокарту Nvidia?

Добавляем в xorg.conf параметр Option "CoolBits" "1", после чего в nvidia-settings появится возможность оверклокинга. Еще для этого существует утилита NVClock.

Как установить драйвера ATI? Как настроить TV-OUT на видеокартах ATI?

FIXME: Написать про ручную установку fglrx и про опенсорсные драйвера