第5章 X Window系统
5.1概要
FreeBSD使用XFree86来为用户提供一个功能强大的图形用户接口。XFree86是一个开放源代码的X视窗系统。下面的这章将介绍在FreeBSD上安装和配置XFree86。有关你的显示卡是否被X11所支持,请查看XFree86的网站(www.xfree86.org)。
读完这章,你将了解到:
如何安装和配置XFree86。
X视窗系统的不同组件,它们是如何协同工作的。
如何安装和使用不同的视窗管理系统。
如何在XFree86中使用Truetype字体。
如何为你的系统安装图形登陆口(XDM)。
在阅读这章之前,你应当了解:
如何安装额外的第三方应用程序(第4章)。
5.2 理解X
第1次使用X,你可能觉得很惊讶,它跟Windows或Macos这样的窗口系统非常相象。你不需要了解各种X组件的所有细节和它们是如何互相影响的,然而,了解一些基本的知识可以让你很好地利用X的强大功能。
5.2.1 为什么要用X?
X并不是针对UNIX的第一个视窗系统,但它是最流行的。X的最初开发团队在开发X之前,就已经在为另一个视窗系统工作了。那个系统的名字是“W”(很明显,就是“Window”)。X只是在罗马字母中W后面的一个。
X可以被叫做“X”,“X Window System”,“X11”和其他的一些。“X Windows”会尽可能地避免使用;可以看看X的联机手册了解更多信息。
5.2.2 X客户机/服务器模型
X从一开始就是针对网络设计的,所以采用了“client-server”模型。在X模型中,“X server”运行在有键盘,显示器,鼠标的计算机上。Server用来管理显示信息,和处理来自键盘和鼠标的输入等。每个X应用(如xterm或Netscape)就是一个“client”。一个client发送信息(如:Please draw a window at these coordinates)给服务器,然后服务器就返回处理信息(如:The user just clicked on your OK
button)。
如果你在只有一台计算机的家里或小型办公环境中使用FreeBSD,你就需要在同一台计算机上运行X server和X client。然而,如果你有很多运行FreeBSD的机器,你可以在你的桌面计算机上运行X server,而在比较高档的服务器上运行X应用程序。在这样的环境中,X server和 X client之间的通信就可以通过网络来进行。
这可能会使一些人搞糊涂,因为X术语与他们所想象的有所不同。他们以为“X server”是运行在大型机器上的,而“X client”是运行在桌面机器上的。
正如你所记得的,X server是用来处理显示器和键盘输入信息的,而X client是用来显示视窗程序的,这一点不应当搞糊涂。
并不需要client和server都运行在同一种操作系统上,或甚至运行在同一种类型的计算机上。把它运行在Microsoft Windows或Apple MacOS上也是可以的,在它上面也有很多免费的和商业化的应用程序。
在FreeBSD上使用的X
server叫做XFree86,在大家很熟悉的FreeBSD许可协议下可以免费使用。针对FreeBSD的商业化X
server也可以使用。
5.2.3视窗管理器
X的设计哲学有点像UNIX的设计哲学,“tools,not policy”。这些意味着不需要命令最终用户应当如何来完成他们的工作。而是,只给用户提供一些完成工作的工具,至于如何使用这些工具那是用户自己的事情。
这种哲学大大地扩展了X,它不一定要规定这些视窗在屏幕上看起来像什么,你要如何移动鼠标,需要使用什么键来切换窗体,每个窗体的工具条应当看起来像什么,是否应该放关闭按钮等等。
实际上,X只代表了叫做“Window Manager”的应用程序。有很多这样的应用程序:AfterStep,Blackbox,Enlightenment,ctwm,ftwm,sawfish,twm,WindowMaker等。这些管理器中的每一个都提供了一个不同的界面;其中一些支持“虚拟桌面”,有一些允许你可以定制一些键来管理你的桌面,一些有“start”按钮,一些有“themeable”,允许你启用一个新桌面来改变你的桌面显示。这些视窗管理器都可以在Ports Collection的x11-wm中找到。
另外,KDE和GNOME桌面环境都有它们自己的视窗管理器与桌面集成。每一个视窗管理器也有一个不同的配置机制。针对绝大多数的配置任务,有些GUI工具需要你手工来写配置文件,至少如sawfish需要一个用lisp语言来写的配置文件。
焦点策略:视窗管理器的另一个特性是鼠标的“焦点策略”。每个视窗系统都需要有一个选择窗口的方法来接受键盘的输入信息,以及当前哪个窗口处于可用状态。
你通常比较熟悉的是一个叫做“click-to-focus”的焦点策略。这是Microsoft Windows使用的典型焦点策略,也就是你在一个窗口上点击一下鼠标,这个窗口就处于当前可用的状态。
X不支持一些特殊的焦点规则。而是,窗口管理器控制着在什么时候哪个窗口拥有焦点。不同的窗口管理器支持不同的焦点方案。它们都支持点击即获得焦点,而且它们中的大多数都支持好几种方案。
最普通的焦点策略:
focus-follows-mouse
鼠标指示器下面的窗口就是获得焦点的窗口。这可以不是位于其他所有窗口顶部的窗口。你可以通过将鼠标移到另一个窗口就可以来改变焦点,你不需要在它上面点击。
sloppy-focus
这种方式是对focus-follows-mouse策略的一个小小扩展。对于focus-follows-mouse,如果你在根窗口(或桌面背景)上移动鼠标,键盘的输入也会丢失。对于sloppy-focus,只有当指针在键入一个新窗口时,窗口焦点才会发生变化,当退出当前窗口时是不会变化的。
Click-to-focus
活动窗口由鼠标点击来选择。窗口可以被往前移动,出现在所有其他窗口的前面。即使指针被移向了另一个窗口,所有的键盘输入仍会被这个窗口接收。
许多窗口管理器支持其他的策略,与这些相比又有些变化。你可以看具体窗口管理器的文档。
5.2.4窗口部件(Widgets)
提供工具而非策略的X方法使得在每个应用程序屏幕上看到的窗口部件得到了大大的扩展。
“widget”只是针对用户接口中所有列举项目的一个术语,它可以用某种方法来点击或操作;如按钮(button),复选框(check box),单选按钮(radio button),图标(icon),列表框(list)。Microsoft Windows把这些叫做“控件”。
Microsoft Windows和Apple MacOS都有一个快速的窗口方案。应用程序开发员被建议确保他们的应用程序共享一个普通的所见即所得的用户界面。对于X,它并不要求一个特殊的图形风格或一套相结合的窗口部件集。
这样的结果是你不能期望X应用程序只拥有一个普通的所见即所得的界面。有很多的流行的窗口部件集设置,包括Athena(MIT开发),Motif(模仿微软的窗口风格),openlook和其他一些窗口部件集。
今天,绝大多数比较新的X应用程序将使用一个现代风格的窗口设计,像Qt,用来设计KDE,或GTK,用来设计GNOME。在这样一种窗口系统下,UNIX桌面的一些所见即所得特性作了一些收敛,以使初学者感到更容易一些。
5.3安装XFree86
在安装XFree86之前,你只需要决定安装哪个版本。XFree86 3.X是XFree86开发的一个分支。它非常稳定,而且支持很多的图形卡。然而,现在已经不对它进行更新了。XFree86 4.X是一个完全重新设计的分支,有很多新特性,如更好地支持字体和anti-aliasing。不幸的是,这个新的结构要求重新开发显示卡驱动程序,所以有些3.X支持的比较老的显示卡4.X无法支持。
在安装过程中,FreeBSD安装程序会提供给用户安装和配置XFree86 3.3.6的机会(请看第2.9.11节)。要运行XFree86
4.X,你需要在FreeBSD系统安装完成以后,再安装XFree86。例如,要从ports collection建立和安装XFree86 4.X:
# cd /usr/ports/x11/XFree86-4
# make all install clean
另外,XFree86
4.X也可以用pkg_add命令从一个二进制的软件包来安装,或者直接从XFree86的网站提供的FreeBSD程序来安装。
这章的其余部分将解释如何配置XFree86,和如何设置一个高效的桌面环境。
5.4 XFree86的配置
5.4.1开始之前
在用户开始配置XFree86 4.X之前,你必须知道目标系统的下面一些信息:
显示器的规格
显示卡的芯片
显存
显示器规格可以被XFree86用来决定显示器的刷新率。这些规格通常可以从显示器所带的文档中找到,也可以从生产商的网站找到。需要知道两个数字范围:垂直刷新率和水平刷新率。
显示卡的芯片组定义了XFree86要使用什么驱动模块来驱动硬件。对于绝大多数的芯片,它都能自动选择,但有时也可能检测错误。显示卡的显存大小决定了目标系统的刷新率和颜色深度。这非常重要,所以用户需要知道目标系统的详细情况。
5.4.2配置XFree86 4.X
配置XFree86 4.X有几步。第一步是用XFree86的-configure选项建一个初始化的配置文件。作为超级用户,可以这样做:
# XFree86 -configure
这会在一个叫做XF86Config.new的当前工作目录中产生一个skeleton XFree86配置文件。XFree86将试图探测到系统中的显示设备,然后在目标系统上,写入一个配置文件以便探测硬件时能够加载正确的驱动程序。
下一步将测试当前的配置以检验XFree86是否能在当前系统的显示设备上正常工作。要完成这个任务,只需要这样做:
# XFree86 -xf86config
XF86Config.new
如果用户看到一个黑灰的格子和一个X形的鼠标指针,那么配置就是成功的。要退出测试,只要同时键入ctrl+alt+backspace。
接下来,用户需要调整XF86Config.new配置文件以适应个人的口味。用emacs或ee这样的编辑器打开文件。要做的第一件事是为当前系统的显示器添加频率。这些包括垂直和水平的刷新率。这些值可以被添加到XF86Config.new文件的“Monitor”部分:
Section “Monitor”
Identifier “Monitor0”
VendorName “Monitor
Vendor”
ModelName
“Monitor Model”
Horizsync 30-107
VertRefresh 48-120
EndSection
Horizsync和VertRefresh关键字通常不存在用户的配置文件中。如果它们不存在,就需要添加它们。正确的水平同步刷新率添加在Horizsync关键字后面,垂直的同步刷新率添加在VertRefresh关键字后面。在上面的例子中已经添加了。
当XF86Config.new配置文件被编辑器打开时,需要选择默认的分辨率和颜色深度,这是通过Screen来定义的:
Section “Screen”
Identifier
“Screen0”
Device
“Card0”
Monitor
“Monitor0”
DefaultColorDepth 24
SubSection “Display”
Depth 24
Modes
“1024x768”
EndSubSection
EndSection
DefaultColorDepth关键字描述了要运行的默认颜色深度。Modes关键字描述了给定颜色深度下屏幕的分辨率。在上面的例子中,默认的颜色深度是24位色。在这个颜色深度下,可以接受的分辨率是1024x768。
要在24 位色下运行1024x768的分辨率,需要在DefaultColorDepth关键字后添加24这个数字,再添加“Display”子项,加入想要运行的颜色深度和分辨率参数。注意只有VESA标准的模式才能被定义的目标系统的显示硬件所支持。
最后,用户可以写入配置文件,然后使用这个配置文件测试一下。如果一切正常,那配置文件需要被安装在XFree86能找得到的地方,如/etc/X11/XF86Config或 /usr/X11R6/etc/X11/XF86Config.
# cp XF86Config.new
/etc/X11/XF86Config
一旦配置文件被放在一个普通的位置,配置就完成了。XFree86就能通过xdm来使用。为了用startx启动XFree86 4.X,用户将必须安装X11/wrapper port。XFree86 4.X也可以用XDM来启动。
5.4.3高级配置主题
配置Intel i810显示芯片组
配置Intel i810芯片组的显示卡需要有针对XFree86的能够用来驱动显示卡的AGP程序接口。要启用这个程序接口,agp.ko的内核加载模块需要用kldload命令来加载到内核。这可以在启动时由loader自动加载。只要在/boot/loader.conf中加入下面这一行:
agp_load=“YES”
接下来,需要为编程接口创建一个设备节点。要创建AGP设备节点,可以在/dev目录下运行MAKEDEV:
# cd /dev
# sh MAKEDEV agpgart
5.5 在XFree86中使用字体
5.5.1 Type1字体
XFree86使用的默认字体不是很理想。大型的字体显得参差不齐,看起来很不专业,在netscape中,小字体也显得莫名其妙。然而,有几个自由的,高质量的字体可以在XFree86中使用,version 3.X 或
version 4.X都可以。例如,URW字体(x11-fonts/urwfonts)的集合就包括了标准的type1字体(Times
Roman,Helvetica,Palatino和其他一些)。在freefont(x11-fonts/freefonts)的集合中也包括更多的字体,但它们中的绝大部分使用在图形软件中,如Gimp,在屏幕字体中使用并不完美。另外,只要花很少的工夫,可以将XFree86配置成能使用Truetype字体。
要安装上面的Type1字体,你只需要运行下面的命令。
# cd
/usr/ports/x11-fonts/urwfonts
# make install clean
Freefont或其他的集合都是一样的。要告诉X服务器这些字体的存在,你需要在XF86Config文件中添加一行(XFree86版本3在/etc/中,版本4在/etc/X11/中):
FontPath
“/usr/X11R6/lib/X11/fonts/URW/”
另外,在命令行,你可以运行:
% xset fp+
/usr/X11R6/lib/X11/fonts/URW
% xset fp rehash
5.5.2 Truetype字体
XFree86 4.x已经内建支持了Truetype字体。有两个不同的模块能够启用这个功能。在这个例子中使用“freetype”这个模块,因为它与其他的字体是兼容的。要启用freetype模块,只需要在你的/etc/X11/XF86Config文件中加入下面这行。
Load
“freetype”
对于XFree86 3.3.x,你需要运行额外的Truetype字体服务器。Xfstt通常被用作这个目的。要安装xfstt,只要简单地安装port x11-servers/Xfstt。
现在,为Truetype字体创建一个目录,然后把所有的Truetype字体拷贝到这个目录。记住你不能直接从Macintosh计算机上提取字体;它们必须是UNIX/DOS/Windows格式的。一旦你已经拷贝了这些文件到这个目录,你需要使用ttmkfdir命令来创建一个fonts.dir的字体文件,以便让X字体引擎知道你已经安装了这些新文件。ttmkfdir可以在/usr/ports/x11-fonts/ttmkfdir中找到。
# cd /usr/X11R6/lib/X11/fonts/Truetype
# ttmkfdir > fonts.dir
现在需要把你的Truetype目录添加到字体路径中。这样做最简单的方法是应用跟上面使用Type1字体一样的方法:
% xset fp+ /usr/X11R6/lib/X11/fonts/Truetype
% xset fp rehash
或者把FontPath行添加到XF86Config文件中。
就是这样。现在Netscape,Gimp,StarOffice和其他的X应用程序已经记住了你安装的Truetype字体。一些很小的字体(如在Web页面上高分辨率显示的文本)和一些很大的字体(在Staroffice下)现在看起来已经很好了。
5.5.3 Anti-Aliased字体
一启动XFree86 4.0.2版,XFree86就支持anti-aliased字体。当前,绝大多数软件还没有升级到支持这个新的功能。然而,QT(用于开发KDE桌面的工具)已经能够支持了;所以如果你运行XFree86 4.0.2(或更高版本),Qt2.3(或更高版本)和KDE,所有你的KDE/Qt应用程序都能使用anti-aliased字体。
要配置anti-aliasing,你需要创建一个文件/usr/X11R6/lib/X11/XftConfig。需要对这个文件作几个比较高深的配置,这节只描述最简单的情况。
第一,需要告诉Xserver你要的anti-aliased字体。只需要在每个字体目录中添加这一行:
dir
“/usr/X11R6/lib/X11/Type1”
同样的在其他字体的目录(如URW,Truetype等)中也包含anti-aliased字体。Anti-aliasing可以理解为可升级的字体(基本上,Type1和Truetype),所以不包括bitmap字体目录。你要包含的目录可以在你的XF86Config文件中注释掉。
Antialiasing会使字体边缘有些模糊,这样增加了非常小的文本的可读性,然后从大文本字体中删除“staircases”,但如果使用普通的文本,可能会引起眼疲劳。要将字体范围控制在9到13号之间,包括这些行:
match
any size > 8
any size <
14
edit
antialias =
false;
用anti-aliasing来间隔一些等宽字体也是不适当的。这似乎是KDE的一个问题。要修复这个问题需要确保每个字体之间的间距保持在100。加入下面这些行:
match any family ==
“fixed”
edit family =+ “mono”;
match any family ==
“console” edit family
=+ “mono”;
(这里把其他普通的修复的字体作为“mono”),然后加入:
match any family == “mono”
edit spacing = 100;
假定你想要使用Lucidux字体,无论什么时候要求等宽字体(这些看起来很好,但会引起一些间距问题),你都可以将最后面的行用下面这些替换:
match any family ==
“mono” edit family += “LuciduxMono”;
match any family ==
“Lucidux Mono”
edit family += “LuciduxMono”;
match any family ==
“LuciduxMono” edit family =+ “Lucidux Mono”;
(最后几行的family名称的别名有些不一样)。
最后,你需要允许用户通过他们每个人的.xftconfig文件把命令添加到这个文件。加入下面一行:
includeif “~/.xftconfig”
最后一点:对于LCD屏幕,需要有子像素的取样。这个基本上由(水平分割的)红,绿,蓝三色组成,用来提高水平刷新率,结果可能很有趣。要启用这个,需要在xftconfig文件的某个地方加入下面这行:
match edit
rgba=rgb;
(依赖于显示的种类,最后的可以被改为“bgr”, “vrgb”或“vbgr”:你实验一下,看看哪个会更好)。
anti-aliasing在你下次启动系统时就能用了。然而,注意你的程序必须知道如何使用它。现在,toolkit Qt已经可以做到了,所以整个KDE环境能够使用anti-aliased字体了。对于gtk+需要加一些补丁,所以如果用加过补丁的gtk+来编译,那GNOME环境和Mozilla也能够使用anti-aliased字体。
事实上,现在有一个叫做x11/gdkxft的port,允许你不需要重新编译就可以使用anti-aliased字体(看看第5.7.1.3节了解更多信息)。
对于FreeBSD和XFree86来讲,Anti-aliasing还是比较新的。配置它变得更加容易,相信不久会有越来越多的应用程序来支持它。
5.6 X显示管理
5.6.1 概要
X显示管理器(XDM)是一个X视窗系统用于进行登陆会话管理的可选项。这个可以应用于多种情况下,包括小“X Terminal”,桌面,大网络显示服务器。既然X视窗系统不受网络和协议的限制,那对于通过网络连接起来的运行X客户端和服务器端的不同机器,就会有很多的可配置项。XDM提供了一个选择要连接到哪个显示服务器的图形接口,只要键入如登陆用户名和密码这样的验证信息。
你也可以把XDM想象成与getty工具一样,为用户提供了同样功能。它可以完成系统的登陆任务,然后为用户运行一个会话管理器(通常是一个X视窗管理器)。接下来XDM就等待这个程序退出,发出信号用户已经登陆完成,应当退出屏幕。这时,XDM就可以为下一个登陆用户显示登陆和可选择屏幕。
5.6.2 使用XDM
XDM守护程序在/usr/X11R6/bin/xdm中。你可以在任何时候用root来运行这个程序,在本地机器上,它将启动管理X的画面。如果要XDM每次机器一启动就开始运行,一个简单的办法是在/etc/ttys中加入一个记录。有关这个文件的更多的格式和使用方法,可以看看第15.3.2.1节。在一个虚拟终端上,在默认的/etc/ttys文件中用于运行XDM守护程序的一行是这样的:
ttyv8 “/usr/X11R6/bin/xdm -nodaemon” xterm off
secure
默认情况下,这个记录是关闭的,要启用它,你需要把第5部分的off改为on,然后重新启动init。第一部分,这个程序将管理的终端名称是ttyv8。这意味着XDM将运行在第9个虚拟终端上。
5.6.3 配置XDM
XDM的配置目录是在/usr/X11R6/lib/X11/xdm中。在这个目录中,你会看到几个用来改变XDM行为和外观的文件。你会找到这些文件:
文件 |
描述 |
Xaccess |
客户端授权规则。 |
Xresources |
默认的X资源值。 |
Xservers |
远程和本地显示管理列表。 |
Xsession |
用于登陆的默认的会话脚本。 |
Xsetup_* |
登陆之前用于加载应用程序的脚本。 |
xdm-config |
运行在这台机器上的所有显示的全部配置。 |
xdm-errors |
服务器程序产生的错误。 |
xdm-pid |
当前运行的XDM的进程ID。 |
当XDM运行时,在这个目录中有几个脚本和程序可以用来设置桌面。这些文件中的每一个的用法都将被简要地描述。这些文件的更详细的语法和用法在xdm的联机手册中将有详细描述。
默认的配置是一个矩形的登陆窗口,上面有机器的名称,“Login:”和“Password:”。如果你想设计你自己个性化的XDM屏幕,这是一个很好的起点。
Xaccess
连接到XDM的用来控制显示的协议叫做X显示管理连接协议(XDMCP)。这个文件是一个用来控制来自远程机器的XDMCP连接。默认的,它允许任何客户端连接,但那没有用,除非xdm-config被修改成用于侦听远程连接。
Xresources
这是一个默认的用来显示选项和登陆屏幕的应用程序文件。这就是你能够定制登陆程序的外观的地方。这个格式与XFree86文档中描述的默认应用程序文件是一样的。
Xservers
这是一个选择者应当提供的作为可选的远程显示列表。
Xsession
这是一个用户登陆后针对XDM的默认会话脚本。通常,在~/.xsessionrc中每个用户将有一个可定制的会话脚本。
Xsetup_*
在显示选择者或登陆接口之前,这些将被自动运行。这是一个每个显示都要用到的脚本,叫做Xsetup_,后面会跟一个本地显示的数字(例如,Xsetup_0)。典型的,这些脚本将在后台(如xconsole)运行一个或两个程序。
xdm-config
这个文件包含了在可用于每个显示的默认应用程序和这个安装管理的形式中的设置。
xdm-errors
这个文件包含了正在设法运行的XDM的X server输出。如果一个XDM正设法运行的显示由于某种原因被挂起,那这是一个寻找错误信息的好地方。这些信息会在每一个会话的基础上被写到用户的~/.xsession-errors文件中。
5.6.4运行一个网络显示服务器
对于其他客户端来说,为了连接到显示服务器,你将必须编辑访问控制规则,然后启用连接侦听。默认的这些被设置成比较保守的值。要让XDM能侦听连接,先要在xdm-config文件中注释掉一行:
! SECURITY:do not listen
for XDMCP or Chooser requests
! Comment out this line if
you want to manage X terminals with xdm
DisplayManager.requestPort: 0
然后重新启动XDM。记住默认应用程序文件的注释以“!”字母开始,不是“#”。你需要设置严格的访问控制。看看在Xaccess文件中的实例记录,可以参考xdm的联机手册。
5.6.5 替换XDM
有几个替换默认XDM程序的方案。它们是,上一节已经描述过的KDM(与KDE捆绑在一起)。KDM提供了许多视觉上的改进和局部的修饰,同样能让用户在启动时能选择他们喜欢的窗口管理器。
5.7桌面环境
这节描述了FreeBSD上用于X的不同桌面环境。一个“desktop environment”可能仅仅是一个简单的窗口管理器,也可能是一个像KDE或GNOME这样的完整桌面应用程序套件。
5.7.1 GNOME
有关GNOME
GNOME是一个用户界面友好的桌面环境,能够使用户很容易地使用和配置他们的计算机。GNOME包括一个面板(用来启动应用程序和显示状态),一个桌面(存放数据和应用程序的地方),一套标准的桌面工具和应用程序,和一套与其他人相互协同工作的协议集。其他操作系统的用户在使用GNOME提供的强大的图形驱动环境时会觉得很好。
安装GNOME
安装GNOME的最简单的方法是第2章描述的在FreeBSD安装过程中通过“Desktop
Configuration”菜单来进行。它们也可以很容易地从一个package或ports collection安装:
要从网络安装GNOME,只要键入:
#
pkg_add -r gnome
如果你想从源代码来建立GNOME,可以使用port树:
# cd /usr/ports/x11/gnome
# make install clean
GNOME一旦被安装好,X Server必须被告知启动GNOME以代替默认的窗口管理器。如果在适当的位置已经定制好了文件.xinitrc,简单地将启动当前窗口管理器的那行替换为/usr/X11R6/bin/gnome-session。如果对配置文件不想添加任何特殊改动,只需简单地键入:
# echo
“/usr/X11R6/bin/gnome-session” > ~/.xinitrc
接着,键入startx,GNOME桌面环境就启动了。
注意:如果已经使用了一个像XDM这样的显示管理器,就不能这样做。而是,用同样的命令创建一个可执行文件.xsession文件。要这样做,需要先编辑文件,然后用/usr/X11R6/bin/gnome-session替换已存在的窗口管理命令;
# echo “#!/bin/sh” >
~/.xsession
# echo
“/usr/X11R6/bin/gnome-session” >> ~/.xsession
# chmod +x ~/.xsession
另一个选项是在登陆时配置显示管理器允许你选择窗口管理器;有关KDE2的那节——KDE显示管理器,会解释如何使用kdm来做。
在GNOME上使用Anti-aliased字体
当anti-aliased字体第一次出现在XFree86桌面的KDE环境,而且用标准的安装来支持时,它们也可以被使用在如GNOME环境的gtk应用程序上。最直接的方法是使用libgdkxft库,它位于x11/gdkxft
port中。安装完这个port之后,可以仔细地看看/usr/X11R6/share/doc/gdkxft/README这个文件。
接着,在访问标准的位置之前,需要做的是告诉gtk应用程序在libgdkxft.so中寻找字体显示功能。这可以通过设置一个环境变量指向一个正确的位置来很容易地完成。对于Bourne shell(/bin/sh)或其他相似的shell,键入下面的命令(这里启动Gimp程序):
% LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so gimp
对于csh或其他相似的shell,只要键入:
% setenv
LD_PRELOAD /usr/X11R6/lib/libgdkxft.so
% gimp
或
LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so
export
LD_PRELOAD
把这些命令加入到.xinitrc,.xsession文件中,或是/usr/X11R6/lib/X11/xdm/Xsession中的合适的地方,这主要依赖于X是如何启动的。但是,如果Linux Gtk库在运行的话,这段语句可能会产生问题。
5.7.2 KDE2
有关KDE2
KDE是一个容易使用的现代桌面环境。KDE有很多很好的特性:
一个美丽的现代的桌面。
一个集合了完美网络环境的桌面。
一个集成的允许你方便,高效地帮助你使用KDE桌面和它的应用程序的帮助系统。
所有的应用程序具有一致的所见即所得界面。
标准的菜单和工具栏,键盘布局,颜色配置等。
国际化:KDE可以使用超过40种语言。
集中的一致化的桌面驱动配置。
许多有用的KDE应用程序。
KDE是一个以KDE的“KParts”技术为基础的办公软件套件,它包括电子表格,幻灯片,日程管理和新闻等软件。KDE也包含一个与当前UNIX系统上其他Web浏览器相竞争的叫做Konqeuror的浏览器。如果需要了解更多信息,请访问KDE的网站(www.kde.org)。
安装KDE2
与GNOME或其他桌面环境一样,安装KDE的最容易的方法是在FreeBSD的安装过程中通过“Desktop
Configuration”菜单安装。另外,它也可以很容易地从packages或ports collection安装。
要从网络安装KDE2,只要这样做:
# pkg_add -r kde2
要从源代码建立KDE,使用port树:
# cd /usr/ports/x11/kde2
# make install clean
KDE2安装完成后,X server必须被告知启动这个应用程序以代替默认的窗口管理器。这可以通过编辑.xinitrc文件来完成:
# echo “/usr/X11R6/bin/startkde”
> ~/.xinitrc
现在,无论你什么时候用startx进入X-window,KDE2就是你的桌面。
如果使用一个像xdm这样的显示管理器,那配置文件可能有点不同。需要编辑一个.xsession文件,有关kdm的用法会在这章的后面介绍。
5.7.3 有关KDE2的更多细节
现在KDE2已经安装在系统中了,通过帮助页面或点击多个菜单可以发现很多东西。Windows或Mac用户会有回到家的感觉。
有关KDE的最好的参考资料是它的在线文档。KDE拥有它自己的web浏览器Konqueror,还有很多其他的应用程序和丰富文档。这节的余下部分将讨论一些很难用走马观花的方法来学习的技术项目。
KDE显示管理器
一个多用户系统的系统管理员可能希望给用户提供一个图形化的登陆界面,可以使用xdm。然而,一个叫KDM的登陆界面也是另一个选择,它看起来很吸引人,还包含很多登陆选项。特别的,用户可以很容易地(通过一个菜单)选择登陆后使用哪个桌面环境(KDE2,GNOME或其他)。
首先,以root用户身份运行KDE2的控制面板,kcontrol。通常情况下,以root用户来运行X环境是很不安全的。你应当以普通用户来使用窗口管理器,打开一个终端窗口(如xterm 或KDE的konsole,用su来切换成root用户,然后再键入kcontrol。
点击左面标记“system”的图标,然后选择“Login manager”。在右面,有几个配置选项(KDE联机手册会详细介绍的)。点击右边的“sessions”。点击“New type”来添加几个窗口管理器或桌面环境。这些只是标签,所以它们用KDE或GNOME要比用startkde或gnome-session来得好,也可以是failsafe。
也可以用同样方法定制其他菜单,它们主要是起修饰和自我解释用的。完成之后,键入“Apply”按钮,退出控制中心。
要确信KDM理解标签(KDE,GNOME等)的意思,需要编辑一些xdm用的文件。
注意:在KDE2.2中,这有些变化:kdm现在使用它自己的配置文件。请看看KDE2.2的文档。
在一个终端窗口,作为root用户,要编辑/usr/X11R6/lib/X11/xdm/Xsession文件,中间有一部分是这样的。
case $# in
1)
case $1 in
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esac
需要在这部分加几行。假定使用的标签是KDE2和GNOME,就像下面这样:
case $# in
1)
case $1 in
KDE2)
exec /usr/X11R6/bin/startkde
;;
GNOME)
exec /usr/X11R6/bin/gnome-session
;;
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esac
为了加上KDE的登陆桌面背景,需要在/usr/X11R6/lib/X11/xdm/Xsetup_0中加入下面这行:
/usr/X11R6/bin/kdmdesktop
现在,确信kdm在/etc/ttys中列出来了,并且将被启动。要这样做,只要跟着先前有关xdm用法,用/usr/local/bin/kdm程序的用法替换/usr/X11R6/bin/xdm的用法就可以了。
Anti-aliased字体
启动版本4.0.2,XFree86可以通过它的“RENDER”扩展来支持anti-aliasing,从2.3版本开始,Qt支持这个扩展。在有关anti-aliasing X11字体的5.5.3节描述到了如何配置这些。所以,对于现在的软件,anti-aliasing也可以用在KDE2桌面上。只需要到KDE2菜单,到Preferences
-> Look and Feel -> Style,然后点击“Use
Anti-Aliasing for Fonts and Icons”。就这样。对于一个不是KDE的一部分的Qt应用程序,环境变量QT_XFT需要在启动程序前被设置成true。
5.7.4 XFCE
有关XFCE
XFCE是被GNOME使用的以GTK toolkit为基础的桌面环境,但对于那些需要一个易于使用和配置并且简单而高效的桌面的人来说还是要难得多。看起来,它非常像使用在商业UNIX系统上的CDE环境。XFCE的主要特性是下面这些:
一个简单,易于使用的桌面。
完全通过鼠标的拖动和按键来控制等。
与CDE相似的主面板,菜单,applets和应用launchers。
集成的窗口管理器,文件管理器,声音管理器,GNOME应用模块,和其他一些。
有很多主题界面。
快速,轻便,高效:对于比较老的/旧的机器或带有很少内存的机器仍然很理想。
更多有关XFCE的信息可以参考XFCE网站(www.xfce.org)。
安装XFCE
有一个二进制的xfce软件包存在。要安装的话,执行下面的命令:
# pkg_add -r xfce
另外,要从源代码建立,使用ports collection:
# cd /usr/ports/x11-wm/xfce
# make install clean
现在,要告诉X服务器在下次X启动时执行XFCE。只要执行下面的命令:
# echo “/usr/X11R6/bin/startxfce” >
~/.xinitrc
接下来就是启动X,XFCE将成为你的桌面。与以前一样,如果使用像xdm这样的显示管理器,需要创建一个.xsession文件(就像有关GNOME的那节描述的),使用/usr/X11R6/bin/startxfce命令;或者,配置显示管理器允许在启动时选择一个桌面(就像有关kdm的那节描述的)。