Настройка Xorg : Графический интерфейс, Xnest, xterm, кодировка
Начальная настройка Xorg
Конфигурационный файл составляется автоматически по команде
Xorg -configure
Далее прописываем определённую моду в секцию "Screen", например так:
Modes "1280×1024"
Рекомендую рассчитать собственные ModeLine'ы. Я предпочитаю делать это программой umc. В Xorg идёт очень приятная утилита gtf.
Обязательно добавляем пути к шрифтам, в файле, создаваемом автоматически многого не хватает. Если вы будите подключать TTF-шрифты, то вам может понадобиться ttmkfdir, эта утилита не входит в состав Xorg по умолчанию. Причём, утилита ttmkfdir создаёт только koi8-шрифты; чтобы продублировать их и в windows-кодировке, можно пропустить файл fonts.dir через вот такой фильтр:
#!/usr/bin/perl
my $c=<>; my $t='';
while (<>) {
$t.=$_;
if (s/-koi8-ru$/-microsoft-cp1251/) { $t.=$_; $c++; }
}
print "$c\n$t"
Строка -microsoft-cp1251 должна соответствовать тому, что написано в вашем файле encodings.dir.
Русифицируем клавиатуру:
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbModel" "pc105"
Option "XkbRules" "xfree86"
Option "XkbOptions" "grp:menu_toggle"
После этого переключение русский/английский будет происходить при нажатии на кнопку «меню» (обычно слева от правого Ctrl).
Подключаем колесо у мыши:
Option "ZAxisMapping" "4 5"
Настраиваем DPMS — систему энергосбережения монитора:
Section "ServerFlags"
Option "StandbyTime" "3"
Option "SuspendTime" "4"
Option "OffTime" "5"
EndSection
Цифрами указаны интервалы времени в минутах.
Пишем Option "DPMS" в секции "Monitor". Теперь DPMS включена.
Настройка xinit
Я не использую startx и прочие запускалики X. Вместо них я вызываю простой xinit. Сессия X инициализируется файлом .xinitrc. У меня в нём написано:
#!/bin/sh
xsetroot -cursor_name top_left_arrow -solid black
xset b 100 100 10
/home/a/bin/evilwm \
-mask1 mod4 \
-mask2 mod4 \
-altmask alt \
-snap 10 \
-fg khaki2 -bg khaki4 -fc brown4 \
-app Michurin -s &
display -window root util/file.png
#exec xclock
exec ~/bin/panel -geometry +0-0
Как видите, я устанавливаю атрибуты root-окна, устанавливаю параметры звукового сигнала (короткий, низкий звук). Звук можно выключить вообще, если написать:
xset b off
Далее, запускаю evilwm — мой оконный менеджер. В конце я запускаю свою панельку. Вместо неё можно запускать часы или ещё что-нибудь полезное.
Дополнительные замечания по X-приложениям
Вторая графическая консоль
Графических консолей можно запустить сколько угодно.
Если одна консоль у Вас уже запущена, то вторую можно запустить командой:
xinit — :1
Третью:
xinit — :2
И так далее.
Запускать новые графические консоли можно и из текстовой консоли и из другой графической.
Новая графическая консоль внутри существующей (Xnest)
Мало кто знает, что в X существует специфический X-сервер — Xnest. Он запускается в окне уже существующей X-консоли.
Проще всего его можно запустить так:
Xnest :1
Если вы имеете shell на другой машине, то в таком отдельном окне удобно запускать приложения с другой машины. Итак, вы сидите в X на станции A. Запускаете в xterm
Xnest :1 -ac
При этом появляется окно, в котором существует совершенно новый и полностью независимый X-сервер; даже без оконного менеджера. Обратите внимание на -ac, это позволит удалённым клиентам подключаться к вашему X-серверу.
Теперь запускаете xterm, ssh и заходите на удалённую станцию B. На ней вы можете запустить xterm, указав, к какому X-серверу следует подключиться:
xterm -display 192.168.0.5:1
где 192.168.0.5 следует заменить на адрес станции A.
Теперь в вашем Xnest-окне запущен удалённый xterm, можете запускать оконный менеджер и работать: графика у вас, а работает всё на удалённой машине. Т.е. вы получили графическую консоль на удалённую машину в отдельном окне ваше графической консоли. Очень удобно.
Вообще говоря, можно не открывать отдельную X-консоль с помощью Xnest, а запускать приложения на удалённой станции в существующей консоли:
xterm -display 192.168.0.5:0
Однако, я предпочитаю так не делать по нескольким причинам:
• Во-первых, когда все окна (и локально- и удалённо- запущенных приложений) находятся на одой консоли, то отличить их бывает не легко. Это может приводить к различным недоразумениям. Работать намного удобнее, когда удалённые приложения «живут» в отдельном окне.
• Во-вторых, я предпочитаю жёстко ограничивать доступ к X-серверу, не допуская вообще никаких внешних подключений. Отдельную Xnest-консоль можно сделать более доступной, хотя ключ -ac, который я привёл в своём примере — не самый лучший выход, так как он открывает доступ абсолютно всем. По вопросам безопасности и ограничения доступа к X-серверу можно обратиться к man 7 Xsecurity и страницам, на которые ссылается этот мануал.
Xterm с произвольной локалью
Локаль с которой работает xterm совсем не должна совпадать с локалью всей системы. Все приложения, запускаемые в этом xterm будут иметь локаль xterm'а, а не системы, что иногда очень удобно.
Запустить xterm в cp1251-режиме можно скриптом
export LANG=ru_RU.CP1251
exec xterm -vb \
-fn '-*-lucidatypewriter-medium-*-*-*-14-*-*-*-*-*-*-1251' \
-e 'sh' >/dev/null 2>&1
Шрифт, естественно, должен существовать в системе; при работе в таком терминале будут абсолютно корректно открываться и редактироваться все windows-файлы, даже если вся система у вас работает в КОИ.
И ещё чуть-чуть про X, xterm и mc
mc в xterm я предпочитаю запускать с ключом -d. Тогда mc перестаёт воспринимать мышку и ей можно пользоваться, как обычно.