aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/ru/books/handbook/x11/_index.adoc
blob: 75510a62ab95425f1bb06fb7f1bedaaae3e96909 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
---
title: Глава 6. X Window System
part: Часть I. В начале
prev: books/handbook/ports
next: books/handbook/partii
showBookMenu: true
weight: 8
path: "/books/handbook/"
---

[[x11]]
= Το Σύστημα X Window
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 6
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/x11/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[x11-synopsis]]
== Обзор

FreeBSD использует X11 для того, чтобы дать пользователям мощный графический интерфейс. X11 является свободно доступной версией X Window System, реализованной в Xorg и XFree86(TM) (а также других программных пакетах, здесь не рассматриваемых). В версиях FreeBSD до и включая FreeBSD 5.2.1-RELEASE сервером X11 по умолчанию был XFree86(TM), выпускаемый The XFree86(TM) Project, Inc. Начиная с FreeBSD 5.3-RELEASE, официальной версией X11 по умолчанию стал Xorg, разработанный X.Org Foundation под лицензией, очень похожей на ту, которая используется FreeBSD. Под FreeBSD существуют также коммерческие X серверы.

Эта глава посвящена установке и настройке X11 в системе FreeBSD, с акцентом на релиз Xorg 7.7. За информацией о настройке XFree86(TM) (в более старых релизах FreeBSD XFree86(TM) был реализацией X11 по умолчанию), или более старых релизов Xorg, всегда можно обратиться к старым версиям Руководства FreeBSD по адресу http://docs.FreeBSD.org/doc/[http://docs.FreeBSD.org/doc/].

За дополнительной информацией по видео оборудованию, поддерживаемому X11, обратитесь к веб сайту http://www.x.org/[Xorg].

После чтения этой главы вы будете знать:

* Как установить и настроить X11.
* О различных компонентах X Window System и их взаимодействии.
* Как установить и использовать различные оконные менеджеры.
* Как использовать шрифты TrueType(R) в X11.
* Как настроить вашу систему на графический интерфейс входа (XDM).

Перед чтением этой главы вам потребуется:

* Узнать, как устанавливать дополнительное программное обеспечение сторонних разработчиков (crossref:ports[ports, Установка приложений. порты и пакеты]).

[[x-understanding]]
== Основы X

Первое знакомство с X может оказаться чем-то вроде шока для тех, кто работал с другими графическими системами, такими, как Microsoft(R) Windows(R) или Mac OS(R).

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

=== Почему именно X?

X не является первой оконной системой для UNIX(R), но она самая популярная из них. До работы над X команда ее разработчиков трудилась над другой оконной системой. Та система называлась "W" (от "Window"). X была просто следующей буквой в романском алфавите.

X можно называть "X", "X Window System", "X11" и множеством других терминов. Факт использования названия "X Windows" для X11 может задеть интересы некоторых людей; дополнительную информацию по этому поводу можно найти на странице справочной системы man:X[7].

=== Модель клиент/сервер в X

X изначально разрабатывалась, чтобы быть системой, ориентированной на работу в сети с использованием модели "клиент-сервер".

В модели работы X "X-сервер" работает на компьютере с клавиатурой, монитором и мышью. Область ответственности сервера включает управление дисплеем, обработку ввода с клавиатуры, мыши и других устройств ввода или вывода (например, "планшет" может быть использован в качестве устройства ввода, а видеопроектор в качестве альтернативного устройства вывода). Каждое X-приложение (например, XTerm или man:getenv[3]) является "клиентом". Клиент посылает сообщения серверу, такие, как "Пожалуйста, нарисуй окно со следующими координатами", а сервер посылает в ответ сообщения типа "Пользователь только что щёлкнул мышью на кнопке OK".

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

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

Важно помнить, что X-сервером является машина с монитором и клавиатурой, а X-клиенты являются программами, выводящими окна.

В протоколе нет ничего, что заставляет машины клиента и сервера работать под управлением одной и той же операционной системы, или даже быть одним и тем же типом компьютера. Определённо возможно запускать X-сервер в Microsoft(R) Windows(R) или Mac OS(R) от Apple, и есть множество свободно распространяемых и коммерческих приложений, которые это реализуют.

=== Оконный менеджер

Философия построения X очень похожа на философию построения UNIX(R), "инструменты, не политика". Это значит, что X не пытаются диктовать то, как должна быть выполнена работа. Вместо этого пользователю предоставляются инструменты, а за пользователем остается принятие решения о том, как использовать эти инструменты.

Этот подход расширен в X тем, что не задается, как окна должны выглядеть на экране, как их двигать мышью, какие комбинации клавиш должны использоваться для переключения между окнами (то есть kbd:[Alt+Tab], в случае использования Microsoft(R) Windows(R)), как должны выглядеть заголовки окон, должны ли в них быть кнопки для закрытия, и прочее.

Вместо этого X делегирует ответственность за это приложению, которое называется "Window Manager" (Менеджер Окон). Есть десятки оконных менеджеров для X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, WindowMaker и другие. Каждый из этих оконных менеджеров предоставляет различные внешние виды и удобства; некоторые из них поддерживают "виртуальные рабочие столы"; некоторые из них позволяют изменять назначения комбинаций клавиш, используемых для управления рабочим столом; в некоторых есть кнопка "Start" или нечто подобное; некоторые поддерживают "темы", позволяя изменять внешний вид, поменяв тему. Эти оконные менеджеры, а также множество других, находятся в категории [.filename]#x11-wm# коллекции портов.

Кроме того, оболочки KDE и GNOME имеют собственные оконные менеджеры, которые интегрированы в оболочку.

Каждый оконный менеджер также имеет собственный механизм настройки; некоторые предполагают наличие вручную созданного конфигурационного файла; некоторые предоставляют графические инструменты для выполнения большинства работ по настройке; по крайней мере один (Sawfish) имеет конфигурационный файл, написанный на диалекте языка Lisp.

[NOTE]
.Политика фокусирования
====
Другой особенностью, за которую отвечает оконный менеджер, является "политика фокусирования" мыши. Каждая оконная система должна иметь некоторый способ выбора окна для активации получения нажатий клавиш, а также визуальную индикацию того, какое окно активно.

Широко известная политика фокусировки называется "щелчок-для-фокуса" ("click-to-focus"). Эта модель используется в Microsoft(R) Windows(R), когда окно становится активным после получения щелчка мыши.

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

Самыми популярными политики фокусирования являются:

фокус следует за мышью (focus-follows-mouse)::
Фокусом владеет то окно, что находится под указателем мыши. Это не обязательно будет окно, которое находится поверх всех остальных. Фокус меняется при указании на другое окно, при этом также нет нужды щёлкать на нём.

нечеткий фокус (sloppy-focus)::
С политикой focus-follows-mouse если мышь помещается поверх корневого окна (или заднего фона), то никакое окно фокус не получает, а нажатия клавиш просто пропадают. При использовании политики нечёткого фокуса он меняется только когда курсор попадает на новое окно, но не когда уходит с текущего окна.

щелчок для выбора фокуса (click-to-focus)::
Активное окно выбирается щелчком мыши. Затем окно может быть "поднято" и появится поверх всех других окон. Все нажатия клавиш теперь будут направляться в это окно, даже если курсор переместится к другому.

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

=== Виджеты

Подход X, заключающийся в предоставлении инструментов, а не политики, распространяется и на виджеты, которые располагаются на экране в каждом приложении.

"Виджет" (widget) является термином для всего в пользовательском интерфейсе, на чём можно щёлкать или каким-то образом управлять; кнопки, зависимые (radio buttons) и независимые (check boxes) опции, иконки, списки и так далее. В Microsoft(R) Windows(R) это называется "элементами управления" ("controls").

Microsoft(R) Windows(R) и Mac OS(R) от Apple имеют очень жёсткую политику относительно виджетов. Предполагается, что разрабатываемые приложения обязательно должны иметь похожий внешний вид. Что касается X, то было решено, что не нужно требовать обязательного использования какого-то определённого графического стиля или набора виджетов.

В результате не стоит ожидать от X-приложений похожести во внешнем виде. Существует несколько популярных наборов виджетов и их разновидностей, включая оригинальный набор виджетов Athena от MIT, Motif(R) (по образу которого был разработан набор виджетов в Microsoft(R) Windows(R), все эти скошенные углы и три разновидности серого цвета), OpenLook и другие.

В большинстве появляющихся в настоящее время приложений для X будет использоваться современно выглядящий набор виджетов, либо Qt, используемый в KDE, либо GTK+, используемый проектом GNOME. В этом отношении наблюдается унификация внешнего вида рабочего стола в UNIX(R), что определённо облегчает жизнь начинающему пользователю.

[[x-install]]
== Установка X11

Версией X11 по умолчанию для FreeBSD является Xorg. Xorg это сервер X дистрибутива открытой реализации X Window System, выпущенной X.Org Foundation. Xorg основан на коде XFree86(TM) 4.4RC2 и X11R6.6. Версия Xorg, доступная на данный момент из коллекции портов FreeBSD: 7.7.

Для сборки и установки Xorg из Коллекции портов, выполните:

[source,shell]
....
# cd /usr/ports/x11/xorg
# make install clean
....

[NOTE]
====
Перед сборкой полной версии Xorg удостоверьтесь в наличии хотя бы 4 GB свободного места.
====

Кроме того, X11 может быть установлен непосредственно из пакетов. Бинарные пакеты, устанавливаемые man:pkg_add[1], доступны и для X11. Когда man:pkg_add[1] используется для удаленной загрузки пакетов, номер версии пакета необходимо удалить. man:pkg_add[1] автоматически установит последнюю версию приложения.

Таким образом, для загрузки и установки пакета Xorg, просто наберите:

[source,shell]
....
# pkg_add -r xorg
....

[NOTE]
====
В примерах выше будет установлен полный дистрибутив X11, включая серверы, клиенты, шрифты и так далее. Также доступны и отдельные пакеты и порты для различных частей X11.
====

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

[[x-config]]
== Конфигурация X11

=== Перед тем, как начать

Перед настройкой X11 необходима следующая информация о конфигурируемой системе:

* Характеристики монитора
* Набор микросхем, используемый в видеоадаптере
* Объём видеопамяти

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

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

Объём видеопамяти графического адаптера определяет разрешение и глубину цвета, с которым может работать система. Это важно, чтобы пользователь знал ограничения системы.

=== Конфигурирование X11

Начиная с версии 7.3, Xorg зачастую может работать без какого-либо файла настройки, для его запуска достаточно просто набрать:

[source,shell]
....
% startx
....

Начиная с версии 7.4, Xorg может использовать HAL для автоматического поиска клавиатуры и мыши. Порты package:sysutils/hal[] и package:devel/dbus[] будут инсталлированы как зависимости package:x11/xorg[], но для их включения необходимо иметь следующие записи в [.filename]#/etc/rc.conf# file:

[.programlisting]
....
hald_enable="YES"
dbus_enable="YES"
....

Эти сервисы должны быть запущены (вручную или при загрузки системы) до последующей загрузки Xorg конфигурации.

Автоматическая конфигурация не всегда может сработать на некотором оборудовании, либо создать не совсем ту настройку, которая желаема. В этих случаях, необходима ручная настройка конфигурации.

[NOTE]
====
Такие оконные менеджеры, как GNOME, KDE или Xfce имеют собственные утилиты, позволяющие пользователю легко устанавливать такие параметры, как разрешение экрана. Поэтому, если конфигурация по-умолчанию не подходящая и вы планируете инсталлировать эти оконные менеджеры, просто можете продолжить настройку рабочей среды, используя их собственные утилиты для установок параметров экрана.
====

Процесс настройки X11 является многошаговым. Первый шаг заключается в построении начального конфигурационного файла. Работая с правами суперпользователя, просто запустите:

[source,shell]
....
# Xorg -configure
....

При этом в каталоге [.filename]#/root# будет создан скелет конфигурационного файла X11 под именем [.filename]#xorg.conf.new# (там, куда после man:su[1] или непосредственного входа будет указывать переменная `$HOME`). Программа X11 сделает попытку распознать графическое оборудование системы и запишет конфигурационный файл, загружающий правильные драйверы для обнаруженного оборудования в системе.

Следующим шагом является тестирование существующей конфигурации для проверки того, что Xorg может работать с графическим оборудованием в настраиваемой системе. Для этого выполните:

[source,shell]
....
# Xorg -config xorg.conf.new
....

Начиная с Xorg 7.4 и выше, это тестирование покажет лишь черный экран, что делает диагностику не совсем полноценным. Старое поведение будет доступно при использовании опции `retro`

[source,shell]
....
# Xorg -config xorg.conf.new -retro
....

Если появилась чёрно-белая сетка и курсор мыши в виде X, то настройка была выполнена успешно. Для завершения тестирования просто нажмите одновременно kbd:[Ctrl+Alt+Backspace].

[NOTE]
====
Данная комбинация включена по-умолчанию до Xorg версии 7.3. Для включения этого в версии 7.4 и выше, вы должны ввести следующую команду в любом эмуляторе X терминала:

[source,shell]
....
% setxkbmap -option terminate:ctrl_alt_bksp
....

или создать конфигурационный файл клавиатуры для hald называемый [.filename]#x11-input.fdi# и сохранить его в [.filename]#/usr/local/etc/hal/fdi/policy# директории. Данный файл должен содержать следующие строчки:

[.programlisting]
....
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
	  <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
    </match>
  </device>
</deviceinfo>
....

Вам может потребоваться перезагрузка системы для вступления параметров hald в силу.
====

Если мышь не работает, ее необходимо настроить. Обратитесь к crossref:install[mouse,Настройка мыши (Mouse Settings)] в главе об установке FreeBSD. Дополнительно, начиная с версии 7.4, секция `InputDevice` в [.filename]#xorg.conf# игнорируется в пользу автоматического поиска устройств. Для возвращения старого поведения, добавьте следующие строчки в секции `ServerLayout` или `ServerFlags`:

[.programlisting]
....
Option "AutoAddDevices" "false"
....

Устройства ввода могут конфигурированы затем как в предыдущих версиях, вместе с другими необходимыми опциями (такими, как переключение раскладок клавиатуры например).

[NOTE]
====
Как ранее уже сообщалось, начиная с версии 7.4, по-умолчанию, hald демон будет пытаться распознать вашу клавиатуру автоматически. Есть возможность, что раскладка вашей клавиатуры или ее модель будут определены некорректно. Такие оконные менеджеры как GNOME, KDE или Xfce содержат свои инструменты для конфигурирования клавиатур. Тем не менее, можно установить параметры клавиатуры непосредственно с помощью утилиты man:setxkbmap[1] или через haldконфигурационные правила.

Например, если вы хотите использовать клавиши PC 102 клавиатуры, идущая с французской раскладкой, мы должны создать конфигурационный файл клавиатуры для hald называемый [.filename]#x11-input.fdi# и сохранить в [.filename]#/usr/local/etc/hal/fdi/policy# директории. Этот файл должен содержать следующие строчки:

[.programlisting]
....
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
	  <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
	  <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
    </match>
  </device>
</deviceinfo>
....

Если этот файл уже существует, просто скопируйте и добавьте эти строчки в данный файл.

Вы должны будете перезагрузить систему, чтобы заставить hald применить настройки.

Есть возможность проделать ту же конфигурацию из X терминала или скрипт следующей командой:

[source,shell]
....
% setxkbmap -model pc102 -layout fr
....

Файл [.filename]#/usr/local/shared/X11/xkb/rules/base.lst# содержит список различных клавиатур, доступные опции и раскладки.
====

Теперь выполните тонкую настройку в файле [.filename]#xorg.conf.new# по своему вкусу. Откройте файл в текстовом редакторе, таком, как man:emacs[1] или man:ee[1]. Сначала задайте частоты для монитора. Они обычно обозначаются как частоты горизонтальной и вертикальной синхронизации. Эти значения добавляются в файл [.filename]#xorg.conf.new# в раздел `"Monitor"`:

[.programlisting]
....
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection
....

Ключевых слов `HorizSync` и `VertRefresh` может и не оказаться в файле конфигурации. Если их нет, то они должны быть добавлены, с указанием корректных значений горизонтальной частоты синхронизации после ключевого слова `HorizSync` и вертикальной частоты синхронизации после ключевого слова `VertRefresh`. В примере выше были введены частоты монитора настраиваемой системы.

X позволяет использовать возможности технологии DPMS (Energy Star) с поддерживающими её мониторами. Программа man:xset[1] управляет временными задержками и может явно задавать режимы ожидания, останова и выключения. Если вы хотите включить использование возможностей DPMS вашего монитора, вы должны добавить следующую строку в раздел, описывающий монитор:

[.programlisting]
....
Option       "DPMS"
....

Пока файл конфигурации [.filename]#xorg.conf.new# открыт в редакторе, выберите желаемые разрешение и глубину цвета, которые будут использоваться по умолчанию. Они задаются в разделе `"Screen"`:

[.programlisting]
....
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection
....

Ключевое слово `DefaultDepth` описывает глубину цвета, с которой будет работа по умолчанию. Это значение может быть переопределено при помощи параметра командной строки `-depth` для man:Xorg[1]. Ключевое слово `Modes` описывает разрешение, с которым нужно работать при данной глубине цвета. Заметьте, что поддерживаются только те стандартные режимы VESA, что определены графическим оборудованием настраиваемой системы. В примере выше глубина цвета по умолчанию равна двадцати четырём битам на пиксел. При такой глубине цвета принимается разрешение в 1024 на 768 точек.

Наконец, запишите конфигурационный файл и протестируйте его при помощи тестового режима, описанного выше.

[NOTE]
====
При решении проблем могут помочь лог файлы X11, в которых находится информация по каждому устройству, к которому подключен сервер X11. Лог файлам Xorg названия даются в формате [.filename]#/var/log/Xorg.0.log#. Имена лог файлам могут даваться от [.filename]#Xorg.0.log# до [.filename]#Xorg.8.log# и так далее.
====

Если все в порядке, то конфигурационный файл нужно установить в общедоступное место, где его сможет найти man:Xorg[1]. Обычно это [.filename]#/etc/X11/xorg.conf# или [.filename]#/usr/local/etc/X11/xorg.conf#.

[source,shell]
....
# cp xorg.conf.new /etc/X11/xorg.conf
....

Теперь процесс настройки X11 завершен. Xorg теперь можно запустить с помощью man:startx[1]. X11 можно также запустить через man:xdm[1].

=== Тонкие вопросы настройки

==== Конфигурирование при работе с графическими чипсетами Intel(R) i810

Конфигурирование при работе с интегрированными наборами микросхем Intel(R) i810 требует наличия [.filename]#agpgart#, программного интерфейса AGP, посредством которого X11 будет управлять адаптером. Подробности смотрите на странице справочника man:agp[4].

Это позволит конфигурировать графическое оборудование точно так же, как и любой другой графический адаптер. Заметьте, что для систем, у которых драйвер man:agp[4] в ядро не вкомпилирован, попытка погрузить модуль с помощью man:kldload[8] окончится неудачно. Этот драйвер должен оказаться в ядре во время загрузки, либо вкомпилированным, либо подгруженным посредством [.filename]#/boot/loader.conf#.

==== Настройка широкоэкранного режима

Для этого раздела необходимо несколько больше навыков настройки. Если после использования описанных выше инструментов настройки в результате рабочей конфигурации не получается, в лог файлах достаточно информации для доведения конфигурации до рабочего уровня. Для настройки используется текстовый редактор.

Существующие широкоэкранные стандарты (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, и т.д.) поддерживают форматы изображения 16:10 и 10:9, которые могут быть проблемными. Для формата 16:10, например, возможны следующие разрешения экрана:

* 2560x1600
* 1920x1200
* 1680x1050
* 1440x900
* 1280x800

Иногда достаточно добавить одно из этих разрешений в качестве параметра `Mode` в раздел `Section "Screen"` вот так:

[.programlisting]
....
Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
	Viewport  0 0
	Depth     24
	Modes     "1680x1050"
EndSubSection
EndSection
....

Xorg может извлечь информацию о разрешении из монитора посредством I2C/DDC, так что у него есть данные, какие частоты и разрешения может поддерживать монитор.

Если эти `ModeLines` не определены в драйверах, может потребоваться дополнительная настройка Xorg. Используя [.filename]#/var/log/Xorg.0.log#, можно извлечь достаточно информации для создания рабочей строки `ModeLine` вручную. Просто обратитесь к следующей информации:

[.programlisting]
....
(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz
....

Эта информация называется EDID. Создание `ModeLine` из сводится к расположению номеров в правильном порядке:

[.programlisting]
....
ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>
....

Для нашего примера `ModeLine` в `Section "Monitor"` будет выглядеть так:

[.programlisting]
....
Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection
....

После завершения редактирования конфигурации, X должен запуститься в новом широкоэкранном разрешении.

[[x-fonts]]
== Использование шрифтов в X11

[[type1]]
=== Шрифты Type1

Шрифты, используемые по умолчанию и распространяемые вместе с X11, вряд ли можно назвать идеально подходящими для применения в обычных издательских приложениях. Большие презентационные шрифты выглядят рвано и непрофессионально, а мелкие шрифты в man:getenv[3] вообще невозможно разобрать. Однако есть некоторое количество свободно распространяемых высококачественных шрифтов Type1 (PostScript(R)), которые можно без изменений использовать с X11. К примеру, в наборе шрифтов URW (package:x11-fonts/urwfonts[]) имеются высококачественные версии стандартных шрифтов type1 (Times Roman(TM), Helvetica(TM), Palatino(TM) и другие). В набор Freefonts (package:x11-fonts/freefonts[]) включено ещё больше шрифтов, однако большинство из них предназначено для использования в программном обеспечении для работы с графикой, например, Gimp, и они не вполне пригодны для использования в качестве экранных шрифтов. Кроме того, X11 с минимальными усилиями может быть настроена на использование шрифтов TrueType(R). Более детальная информация находится на странице справочной системы man:X[7] и в <<truetype,разделе о шрифтах TrueType(R)>> ниже.

Для установки вышеупомянутых коллекций шрифтов Type1 из коллекции портов выполните следующие команды:

[source,shell]
....
# cd /usr/ports/x11-fonts/urwfonts
# make install clean
....

То же самое нужно будет сделать для коллекции freefont и других. Чтобы X-сервер обнаруживал этих шрифты, добавьте соответствующую строку в файл настройки X сервера ([.filename]#/etc/X11/xorg.conf#), которая должна выглядеть так:

[.programlisting]
....
FontPath "/usr/local/lib/X11/fonts/URW/"
....

Либо из командной строки при работе с X выполните:

[source,shell]
....
% xset fp+ /usr/local/lib/X11/fonts/URW
% xset fp rehash
....

Это сработает, но будет потеряно, когда сеанс работы с X будет закрыт, если эта команда не будет добавлена в начальный файл ([.filename]#~/.xinitrc# в случае обычного сеанса через `startx` или [.filename]#~/.xsession# при входе через графический менеджер типа XDM). Третий способ заключается в использовании нового файла [.filename]#/usr/local/etc/fonts/local.conf#: посмотрите раздел об <<antialias,антиалиасинге>>.

[[truetype]]
=== Шрифты TrueType(R)

В Xorg имеется встроенная поддержка шрифтов TrueType(R). Имеются два модуля, которые могут обеспечить эту функциональность. В нашем примере используется модуль freetype, потому что он в большей степени похож на другие механизмы для работы с шрифтами. Для включения модуля freetype достаточно в раздел `"Module"` файла [.filename]#/etc/X11/xorg.conf# добавить следующую строчку.

[.programlisting]
....
Load  "freetype"
....

Теперь создайте каталог для шрифтов TrueType(R) (к примеру, [.filename]#/usr/local/lib/X11/fonts/TrueType#) и скопируйте все шрифты TrueType(R) в этот каталог. Имейте в виду, что напрямую использовать шрифты TrueType(R) с Macintosh(R) нельзя; для использования с X11 они должны быть в формате UNIX(R)/MS-DOS(R)/Windows(R). После того, как файлы будут скопированы в этот каталог, воспользуйтесь утилитой ttmkfdir для создания файла [.filename]#fonts.dir#, который укажет подсистеме вывода шрифтов X на местоположение этих новых файлов. `ttmkfdir` имеется в Коллекции Портов FreeBSD: package:x11-fonts/ttmkfdir[].

[source,shell]
....
# cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir
....

После этого добавьте каталог со шрифтами TrueType(R) к маршруту поиска шрифтов. Это делается точно также, как описано выше для шрифтов <<type1,Type1>>, то есть выполните

[source,shell]
....
% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash
....

или добавьте строку `FontPath` в файл [.filename]#xorg.conf#.

Это всё. Теперь man:getenv[3], Gimp, StarOffice(TM) и все остальные X-приложения должны увидеть установленные шрифты TrueType(R). Очень маленькие (как текст веб-страницы на дисплее с высоким разрешением) и очень большие (в StarOffice(TM)) шрифты будут теперь выглядеть гораздо лучше.

[[antialias]]
=== Антиалиасинг шрифтов

Антиалиасинг присутствует в X11 начиная с XFree86(TM), версии 4.0.2. Однако настройка шрифтов была довольно громоздка вплоть до появления XFree86(TM) 4.3.0. Начиная с версии XFree86(TM) 4.3.0, все шрифты, расположенные в каталогах [.filename]#/usr/local/lib/X11/fonts/# и [.filename]#~/.fonts/#, автоматически становятся доступными для применения антиалиасинга в приложениях, использующих Xft. Не все приложения могут использовать Xft, но во многих его поддержка присутствует. Примерами приложений, использующих Xft, является Qt версий 2.3 и более поздних (это инструментальный пакет для оболочки KDE), GTK+ версий 2.0 и более поздних (это инструментальный пакет для оболочки GNOME), а также Mozilla версий 1.2 и более поздних.

Для применения к шрифтам антиалиасинга, а также для настройки параметров антиалиасинга, создайте (или отредактируйте, если он уже существует) файл [.filename]#/usr/local/etc/fonts/local.conf#. Некоторые мощные возможности системы шрифтов Xft могут быть настроены при помощи этого файла; в этом разделе описаны лишь некоторые простые возможности. Для выяснения всех деталей, пожалуйста, обратитесь к man:fonts-conf[5].

Этот файл должен быть сформирован в формате XML. Обратите особое внимание на регистр символов, и удостоверьтесь, что все тэги корректно закрыты. Файл начинается обычным заголовком XML, за которым следуют DOCTYPE и тэг `<fontconfig>`:

[.programlisting]
....

        <?xml version="1.0"?>
        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
        <fontconfig>
....

Как и говорилось ранее, все шрифты из каталога [.filename]#/usr/local/lib/X11/fonts/#, а также [.filename]#~/.fonts/# уже доступны для приложений, использующих Xft. Если вы хотите добавить каталог, отличный от этих двух, добавьте строчку, подобную следующей, в файл [.filename]#/usr/local/etc/fonts/local.conf#:

[.programlisting]
....
<dir>/path/to/my/fonts</dir>
....

После добавления новых шрифтов, и особенно новых каталогов со шрифтами, вы должны выполнить следующую команду для перестроения кэшей шрифтов:

[source,shell]
....
# fc-cache -f
....

Антиалиасинг делает границы несколько размытыми, что делает очень мелкий текст более читабельным и удаляет "лесенки" из текста большого размера, но может вызвать нечёткость при применении к тексту обычного размера. Для исключения размеров шрифтов, меньших 14, из антиалиасинга, добавьте такие строки:

[.programlisting]
....
        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>
....

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

[.programlisting]
....
       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>
....

(это создаст алиасы `"mono"` для других общеупотребительных имён шрифтов фиксированного размера), а затем добавьте:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>
....

С некоторыми шрифтами, такими, как Helvetica, при антиалиасинге могут возникнуть проблемы . Обычно это проявляется в виде шрифта, который наполовину вертикально обрезан. Хуже того, это может привести к сбоям таких приложений, как Mozilla. Во избежание этого следует добавить следующее в файл [.filename]#local.conf#:

[.programlisting]
....
         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>
....

После того, как вы закончите редактирование [.filename]#local.conf#, удостоверьтесь, что файл завершен тэгом `</fontconfig>`. Если этого не сделать, ваши изменения будут проигнорированы.

Набор шрифтов по умолчанию, поставляемый с X11, не очень подходит, если включается антиалиасинг. Гораздо лучший набор шрифтов, используемых по умолчанию, можно найти в порте package:x11-fonts/bitstream-vera[]. Этот порт установит файл [.filename]#/usr/local/etc/fonts/local.conf#, если такого ещё не существует. Если файл существует, то порт создаст файл [.filename]#/usr/local/etc/fonts/local.conf-vera#. Перенесите содержимое этого файла в [.filename]#/usr/local/etc/fonts/local.conf#, и шрифты Bitstream автоматически заменят используемые по умолчанию в X11 шрифты Serif, Sans Serif и Monospaced.

Наконец, пользователи могут добавлять собственные наборы посредством персональных файлов [.filename]#.fonts.conf#. Для этого каждый пользователь должен просто создать файл [.filename]#~/.fonts.conf#. Этот файл также должен быть в формате XML.

И последнее замечание: при использовании дисплея LCD может понадобиться включение разбиения точек. При этом компоненты красного, зелёного и голубого цветов (разделяемые по горизонтали), рассматриваются как отдельные точки для улучшения разрешения экрана по горизонтали; результат может оказаться потрясающим. Для включения этого механизма добавьте такую строчку где-нибудь в файле [.filename]#local.conf#:

[.programlisting]
....

        <match target="font">
            <test qual="all" name="rgba">
                <const>unknown</const>
            </test>
            <edit name="rgba" mode="assign">
                <const>rgb</const>
            </edit>
        </match>
....

[NOTE]
====
В зависимости от типа дисплея, `rgb` может потребоваться заменить на `bgr`, `vrgb` или `vbgr`: пробуйте и смотрите, что работает лучше.
====

Антиалиасинг должен быть включен при следующем запуске X-сервера. Однако программы должны знать, как использовать его преимущества. В настоящее время инструментальный пакет Qt умеет ими пользоваться, так что вся оболочка KDE может использовать шрифты с антиалиасингом. GTK+ и GNOME также можно заставить использовать антиалиасинг посредством капплета "Font" (обратитесь к <<x11-wm-gnome-antialias>> для выяснения всех подробностей). По умолчанию Mozilla версий 1.2 и выше будет автоматически использовать антиалиасинг. Для отмены использования антиалиасинга перестройте Mozilla с флагом `-DWITHOUT_XFT`.

[[x-xdm]]
== Менеджеры экранов (Display Managers) X

=== Вступление

Менеджер Экранов X (XDM) это необязательный компонент X Window System, который используется для управления входом пользователей в систему. Это полезно в ряде ситуаций, например для минимальных "X Терминалов", десктопов, больших сетевых серверов экранов. Так как X Window System не зависит от сетей и протоколов, то существует множество различных конфигураций для X клиентов и серверов, запущенных на различных компьютерах, подключенных к сети. XDM предоставляет графический интерфейс для выбора сервера, к которому вы желаете подключится, и введения информации, авторизующей пользователя, например комбинации логина и пароля.

XDM можно рассматривать как аналог программы man:getty[8], предоставляющий такие же возможности для пользователей (смотрите crossref:serialcomms[term-config,Настройка] для подробной информации). И это именно так, XDM производит вход в систему для подключенного пользователя и запускает управляющую сессию для пользователя (обычно это менеджер окон X). После этого XDM ожидает завершения приложения, означающее завершение пользователем работы и отключает управляющую сессию. Затем XDM может снова вывести приглашение к входу в систему и ожидать входа другого пользователя. 

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

Программой даемона XDM является [.filename]#/usr/local/bin/xdm#. Эта программа может быть запущена от пользователя `root` в любой момент, и она начнёт управлять дисплеем X на локальной машине. Если XDM нужно запускать в фоновом режиме каждый раз при запуске компьютера, то наиболее правильный способ - это добавить новую запись в [.filename]#/etc/ttys#. Для более подробной информации о формате и использовании этого файла смотрите crossref:serialcomms[term-etcttys,Добавление строки в /etc/ttys]. Вот строка, которую необходимо добавить в файл [.filename]#/etc/ttys# для того, чтобы запустить даемон XDM на виртуальном терминале:

[source,shell]
....
ttyv8	"/usr/local/bin/xdm -nodaemon"	xterm	off secure
....

По умолчанию эта запись отключена; для её включения нужно заменить пятое поле с `off` на `on` и перезапустить man:init[8], используя метод, описанный в crossref:serialcomms[term-hup,Добавление строки в /etc/ttys]. Первое поле это название терминала, которым будет управлять программа, `ttyv8`. Это означает, что XDM будет запущен на 9ом виртуальном терминале.

=== Конфигурирование XDM

Конфигурационные файлы XDM находятся в каталоге [.filename]#/usr/local/lib/X11/xdm#. В нём размещаются несколько файлов, которые используются для изменения поведения и внешнего вида XDM. Обычно это следующие файлы:

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Файл
| Описание

|[.filename]#Xaccess#
|Правила авторизации клиентов.

|[.filename]#Xresources#
|Значения ресурсов X по умолчанию.

|[.filename]#Xservers#
|Список локальных и удаленных экранов.

|[.filename]#Xsession#
|Сценарий сессии по умолчанию.

|[.filename]#Xsetup_#*
|Скрипт для запуска приложений до появления приглашения к входу в систему.

|[.filename]#xdm-config#
|Глобальный конфигурационный файл для всех экранов запущенных на локальной машине

|[.filename]#xdm-errors#
|Ошибки сгенерированные серверной программой.

|[.filename]#xdm-pid#
|ID процесса запущенного XDM.
|===

В этом каталоге также находятся несколько командных сценариев и программ, используемых для настройки рабочего стола (desktop) при запуске XDM. Назначение каждого из этих файлов будет вкратце описано. Точный синтаксис и информация по их использованию находятся в man:xdm[1].

В конфигурации по умолчанию выводится простое прямоугольное окно приглашения ко входу в систему с именем компьютера, написанным сверху большим шрифтом, и строками ввода "Login:" и "Password:" внизу. Это хорошая отправная точка для изменения внешнего вида экранов XDM.

==== Xaccess

Протокол, по которому происходит подключение дисплеев, управляемых XDM, называется X Display Manager Connection Protocol (XDMCP). Этот файл представляет собой набор правил для управления XDMCP соединениями с удалёнными машинами. Он игнорируется, пока стандартный файл [.filename]#xdm-config# не содержит указаний по обслуживанию удалённых соединений.

==== Xresources

Это файл содержит установки по умолчанию для приложений, запущенных в экране выбора серверов и экране приглашения к входу в систему. В нем может быть изменён вид программы входа в систему. Формат этого файла идентичен файлу app-defaults, описанному в документации к X11.

==== Xservers

Это список удаленных экранов, которые XDM должен предоставить как варианты для входа в систему.

==== Xsession

Этот файл представляет из себя командный сценарий по умолчанию для пользователей, вошедших в систему с использованием XDM. Обычно каждый пользователь имеет собственный сценарий входа в файле [.filename]#~/.xsession#, который используется вместо этого сценария.

==== Xsetup_*

Они запускаются автоматически перед тем, как показывается экран выбора сервера или экран входа в систему. Для каждого экрана (display) есть свой сценарий с именем [.filename]#Xsetup_#, за которым следует локальный номер экрана (например, [.filename]#Xsetup_0#). Обычно эти сценарии запускают одну или две программы в фоновом режиме, например `xconsole`.

==== xdm-config

Здесь содержатся настройки в формате app-defaults, которые применимы ко всем экранам данного компьютера.

==== xdm-errors

Здесь находится выдача X серверов, которые XDM пытается запустить. Если экран, который XDM пытается открыть, отключается по некоторым причинам, то это хорошее место для поиска сообщений об ошибках. Эти сообщения также записываются в пользовательский файл [.filename]#~/.xsession-errors# для каждого сеанса.

=== Использование сетевого сервера дисплеев

Для того, чтобы позволить другим клиентам подключаться к серверу дисплеев, необходимо отредактировать правила контроля доступа и включить обслуживание сетевых соединений. По умолчанию они выключены, что является хорошим решением с точки зрения обеспечения безопасности. Для того, чтобы позволить XDM принимать сетевые соединения, в первую очередь закомментируйте строку в файле [.filename]#xdm-config#:

[source,shell]
....
! БЕЗОПАСНОСТЬ: do not listen for XDMCP or Chooser requests
! Закомментируйте эти линии, если вы хотите управлять X терминалами с xdm
DisplayManager.requestPort:     0
....

и потом перезапустите XDM. Помните, что комментарии в файлах app-defaults начинаются с символа "!", а не как обычно, "\#". Может потребоваться более жёсткий контроль доступа - взгляните на примеры из [.filename]##Xaccess## и обратитесь к странице справочника man:xdm[1] за дальнейшей информацией.

=== Замены для XDM

Существует несколько программ, заменяющих XDM. Одна из них, kdm (поставляемая вместе с KDE), описана далее в этой главе. В kdm имеется много визуальных и косметических улучшений, а также функциональность, позволяющая пользователям выбирать собственные оконные менеджеры во время входа в систему.

[[x11-wm]]
== Графические оболочки

В этом разделе описываются различные графические оболочки, доступные в X для FreeBSD. Термин "графическая оболочка" может использоваться для чего угодно, от простого менеджера окон до полнофункционального набора приложений для рабочего стола, типа KDE или GNOME.

[[x11-wm-gnome]]
=== GNOME

[[x11-wm-gnome-about]]
==== О GNOME

GNOME является дружественной к пользователю графической оболочкой, позволяющей пользователям легко использовать и настраивать свои компьютеры. В GNOME имеется панель (для запуска приложений и отображения их состояния), рабочий стол (где могут быть размещены данные и приложения), набор стандартных инструментов и приложений для рабочего стола, а также набор соглашений, облегчающих совместную работу и согласованность приложений. Пользователи других операционных систем или оболочек при использовании такой мощной графической оболочки, какую обеспечивает GNOME, должны чувствовать себя в родной среде. Дополнительную информацию относительно GNOME во FreeBSD можно найти на сайте http://www.FreeBSD.org/gnome[FreeBSD GNOME Project]. Web сайт также содержит достаточно исчерпывающие FAQ'и, касающиеся установки, конфигурирования и управления GNOME.

[[x11-wm-gnome-install]]
==== Установка GNOME

Программу проще всего установить из пакета или коллекции портов:

Для установки пакета GNOME из сети, просто наберите:

[source,shell]
....
# pkg_add -r gnome2
....

Для построения GNOME из исходных текстов используйте дерево портов:

[source,shell]
....
# cd /usr/ports/x11/gnome2
# make install clean
....

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

Самый простой путь запустить GNOME - это использовать GDM (GNOME Display Manager). GDM, который устанавливается, как часть GNOME (но отключен по умолчанию), может быть включён путём добавления `gdm_enable="YES"` в [.filename]#/etc/rc.conf#. После перезагрузки, GNOME запустится автоматически после того, как вы зарегистрируйтесь в системе. Никакой дополнительной конфигурации не требуется.

GNOME может также быть запущен из командной строки с помощью конфигурирования файла [.filename]#.xinitrc#. Если файл [.filename]#.xinitrc# уже откорректирован, то просто замените строку, в которой запускается используемый менеджер окон, на ту, что вызовет /usr/local/bin/gnome-session. Если в конфигурационном файле нет ничего особенного, то будет достаточно просто набрать:

[source,shell]
....
% echo "/usr/local/bin/gnome-session" > ~/.xinitrc
....

Теперь наберите `startx`, и будет запущена графическая оболочка GNOME.

[NOTE]
====
Если используется более старый менеджер дисплеев типа XDM, то это не сработает. Вместо этого создайте выполнимый файл [.filename]#.xsession# с той же самой командой в нём. Для этого отредактируйте файл, заменив существующую команду запуска оконного менеджера на /usr/local/bin/gnome-session:
====

[source,shell]
....
% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/local/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession
....

Ещё одним вариантом является настройка менеджера дисплеев таким образом, чтобы он позволял выбирать оконный менеджер во время входа в систему; в разделе о <<x11-wm-kde-details,KDE в подробностях>> описывается, как сделать это для kdm, менеджера дисплеев из KDE.

[[x11-wm-gnome-antialias]]
==== Шрифты с антиалиасингом и GNOME

X11 поддерживает антиалиасинг посредством своего расширения "RENDER". GTK+ 2.0 и более поздние версии (это инструментальный пакет, используемый GNOME) могут использовать такую функциональность. Настройка антиалиасинга описана в <<antialias>>. Таким образом, при наличии современного GNOME, возможно использование антиалиасинга. Просто перейдите в menu:Applications[Desktop Preferences > Font] и выберите либо btn:[Best shapes], btn:[Best contrast], либо btn:[Subpixel smoothing (LCDs)]. Для приложений GTK+, которые не являются частью оболочки GNOME, задайте в качестве значения переменной окружения `GDK_USE_XFT``1` перед запуском программы.

[[x11-wm-kde]]
=== KDE

[[x11-wm-kde-about]]
==== О KDE

KDE является простой в использовании современной графической оболочкой. Вот лишь некоторые из преимуществ, которые даёт пользователю KDE:

* Прекрасный современный рабочий стол
* Рабочий стол, полностью прозрачный для работы в сети
* Интегрированная система помощи, обеспечивающая удобный и согласованный доступ к системе помощи по использованию рабочего стола KDE и его приложений
* Единообразный внешний вид и управление во всех приложениях KDE
* Стандартизированные меню и панели инструментов, комбинации клавиш, цветовые схемы и так далее.
* Интернационализация: в KDE поддерживается более 40 языков
* Централизованное единообразное конфигурирование рабочего стола в диалоговом режиме
* Большое количество полезных приложений для KDE

Совместно с KDE поставляется веб-браузер под названием Konqueror, который является серьезным соперником другим браузерам для UNIX(R)-систем. Дополнительную информацию о KDE можно найти на веб-сайте http://www.kde.org/[KDE в FreeBSD]. Для получения информации и информационных ресурсов, специфичных для KDE во FreeBSD, обратитесь к сайту команды http://freebsd.kde.org/[FreeBSD-KDE team].

Имеется две версии KDE доступные на FreeBSD. Версия 3 была доступна очень долгое время и она является очень зрелой. Версия 4 - это следующее поколение, также доступное через Коллекцию Портов. Обе версии могут быть инсталлированы одновременно.

[[x11-wm-kde-install]]
==== Установка KDE

Как и в случае с GNOME или любой другой графической оболочкой, программное обеспечение можно легко установить из пакета или из Коллекции Портов:

Для установки пакета KDE3 из сети, просто наберите:

[source,shell]
....
# pkg_add -r kde
....

Для установки пакета KDE4 из сети, просто наберите:

[source,shell]
....
# pkg_add -r kde4
....

man:pkg_add[1] автоматически загрузит самую последнюю версию приложения.

Для построения KDE3 из исходных текстов, воспользуйтесь деревом портов:

[source,shell]
....
# cd /usr/ports/x11/kde3
# make install clean
....

Для построения KDE4 из исходных текстов, воспользуйтесь деревом портов:

[source,shell]
....
# cd /usr/ports/x11/kde4
# make install clean
....

После установки KDE нужно указать X-серверу на запуск этого приложения вместо оконного менеджера, используемого по умолчанию. Это достигается редактированием файла [.filename]#.xinitrc#:

Для KDE3:

[source,shell]
....
% echo "exec startkde" > ~/.xinitrc
....

Для KDE4:

[source,shell]
....
% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc
....

Теперь при вызове X Window System по команде `startx` в качестве оболочки будет использоваться KDE.

При использовании менеджера дисплеев типа XDM настройка несколько отличается. Вместо этого нужно отредактировать файл [.filename]#.xsession#. Указания для kdm описаны далее в этой главе.

[[x11-wm-kde-details]]
=== Более подробно о KDE

Теперь, когда KDE установлена в системе, можно узнать много нового из её справочных страниц или просто указанием и щелканьем по различным меню. Пользователи Windows(R) или Mac(R) будут чувствовать себя как дома.

Лучшим справочником по KDE является онлайновая документация. KDE поставляется с собственным веб-браузером, который называется Konqueror, десятками полезных приложений и подробной документацией. В оставшейся части этого раздела обсуждаются технические вопросы, трудные для понимания при случайном исследовании.

[[x11-wm-kde-kdm]]
==== Менеджер дисплеев KDE

Администратору многопользовательской системы может потребоваться графический экран для входа пользователей в систему. Вы можете использовать <<x-xdm,XDM>>, как это описано ранее. Однако в KDE имеется альтернативный менеджер kdm, который был разработан более привлекательным и с большим количеством настраиваемых опций для входа в систему. В частности, пользователи могут легко выбирать (посредством меню), какую оболочку (KDE, GNOME или что-то ещё) запускать после входа в систему.

Для того, чтобы разрешить запуск kdm, измените в файле [.filename]#/etc/ttys# строку, относящуюся к консоли `ttyv8`:

Для KDE3:

[.programlisting]
....
ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure
....

Для KDE4:

[.programlisting]
....
ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure
....

[[x11-wm-xfce]]
=== XFce

[[x11-wm-xfce-about]]
==== О XFce

XFce является графической оболочкой, построенной на основе инструментального пакета GTK+, используемого в GNOME, но она гораздо легче и предназначена для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать. Визуально он выглядит очень похоже на CDE, который есть в коммерческих UNIX(R)-системах. Вот некоторые из достоинств XFce:

* Простой, лёгкий в обращении рабочий стол
* Полностью настраиваемый при помощи мыши, с интерфейсом drag and drop и так далее
* Главная панель похожа на CDE, с меню, апплетами и возможностями по быстрому запуску приложений
* Интегрированный оконный менеджер, менеджер файлов, управление звуком, модуль совместимости с GNOME и прочее
* Возможность использования тем (так как использует GTK+)
* Быстрый, легкий и эффективный: идеален для устаревших/слабых машин или для машин с ограниченной памятью

Дополнительную информацию о XFce можно найти на http://www.xfce.org/[сайте XFce].

[[x11-wm-xfce-install]]
==== Установка XFce

Для XFce имеется (на момент написания этого текста) бинарный пакет. Для его установки просто наберите:

[source,shell]
....
# pkg_add -r xfce4
....

Либо, в случае построения из исходных текстов, используйте Коллекцию Портов: 

[source,shell]
....
# cd /usr/ports/x11-wm/xfce4
# make install clean
....

Теперь укажите X-серверу на запуск XFce при следующем запуске X. Просто наберите:

[source,shell]
....
% echo "/usr/local/bin/startxfce4" > ~/.xinitrc
....

При следующем запуске X в качестве рабочего стола будет использоваться XFce. Как сказано выше, если используется менеджер дисплеев, такой, как [.filename]#XDM#, создайте файл [.filename]#.xsession# так, как это описано в разделе о <<x11-wm-gnome,GNOME>>, но с командой [.filename]#/usr/local/bin/startxfce4#, либо настройте менеджер дисплеев так, чтобы он разрешил выбор рабочего стола во время входа в систему, как это описано в разделе о <<x11-wm-kde-kdm,kdm>>.