内容列表
X窗口系统(以下简称X)是NetBSD和许多Unix(和非Unix)的图形子系统。事实上它还不止如此:感谢X协议(X protocol)的使用,X还是网络透明的,并能够分布式的运行程序(使用客户-服务器模式)。也就是说,你可以在一台主机(充当客户端)上运行应用程序,然后透明的将图形界面显示在另一台主机(充当服务器)上;而透明则意味着你根本不需要修改你的应用程序。X由X Consortium制作并维护,当前版本为X11R6(X version 11 release 6)。NetBSD使用的X实现版本为XFree86,这是一个对X的可再分发的开源实现。
请注意,X只是诸如GNOME、KDE和XFCE等现代桌面系统的基本骨架,那些系统并不是X的一部分,并且NetBSD现在使用的X并不包含那些系统。当然,如果你需要它们的话,可以从pkgsrc(参见第30章)另行安装。
当你开始使用X时,你会遇到一些新名词,它们是:
由XFree86支持的显示设备(Video hardware),比如显卡。
一个在硬件上运行的X服务器(X server)。X服务器提供了打开窗口、绘图(包括绘制文字的字体)和接收鼠标、键盘或其他设备输入的标准方法。X还是网络透明的,你可以在一台机器上运行程序,在另一台机器上显示界面。
一个运行在X服务器上的窗口管理器(window manager)窗口管理器是控制窗口显示的核心程序。它也通过添加标准边框(通常边框为窗口行为、大小改变、图标和一切其他行为提供服务)来修饰窗口。另外,它还提供窗口背景和关闭窗口等服务。
一个可选的桌面系统(desktop environment)。诸如GNOME和KDE就属此列。它们是由一系列设计好的应用程序组成的,并为这些程序提供的通用的外观。这些程序包括帮助系统、对你的文件系统的桌面影射(desktop-metaphor)、代替xterm(一个在图形状态下工作的命令行)的新终端、软件开发环境、音频系统和图片和动画显示器等等。
你其他的第三方程序。这些程序和X服务器、窗口管理器交互。桌面系统并不影响这些程序,除非窗口管理器是桌面环境的一部分。(也有例外,GNOME就会自动检测你是否按装了GIMP,然后根据结果添加启动GIMP的菜单)
总结:使用图形环境你需要:
XFree86
一个窗口管理器(XFree86自带一个称为twm的简单管理器)。
想要更好的环境就需要安装其他的桌面系统,不想要就算了。桌面系统会给你提供像Macintosh或MS-WINDOWS那样的美丽界面(比如KDE就很想MS-WINDOWS)。
你需要清楚诸如GNOME和KDE这样的桌面系统并不提供X服务器。它们在由XFree86支持的X服务器上运行。GNOME和KDE即可以使用自带的窗口管理器,也可以用其他的。
通常,你可以在给定的一个X服务器上运行至少一个窗口管理器(你可以在一台计算机上运行多个X服务器)。运行GNOME或KDE时,如果你没有运行窗口管理器,它们会给你运行一个。
只要你不是在安装时选择最小安装,X就会被安装而且可用。根据不同的硬件平台,你可能需要也可能不需要进行配置。在大多数工作站(sparc,pmax等)上,只要你使用了正确的X服务器就行了,/usr/X11R6/bin/X代表你当前选择的X服务器。
在PC(i386和amd64)、Shark和其它平台上,你需要进行配置。首先创建/etc/X11/XF86Config这个文件,/usr/X11R6/lib/X11/XF86Config.eg是一个例子。文件的结构参考XF86Config(5)。使用以下命令打开那个参考:
#man XF86Config
配置之前,最好先好好阅读一下/usr/X11R6/lib/X11/doc,那里有很多关于显卡、鼠标的文档(NetBSD专用版在README.NetBSD)。推荐先从QuickStart.doc开始。你也许认为其他的操作系统不会让你干这么多事,但阅读文档绝不是浪费时间:你从中学到的关于X的知识会在日后出现问题时显得非常重要,这些知识也能让你使用你大多数的硬件和软件。
你可以手工写出/etc/X11/XF86Config这个文件,也可以通过交互式的问答自动创建。已知最好的交互程序是xf86config、XF86Setup(用于XFree86 3.x)和xf86cfg(用于XFree86 4.x)。xf86config和xf86cfg默认安装。XF86Setup是一个图形化的交互程序,通过pkgsrc安装。
日后你会发现使用混合模式更好:先用交互程序自动创建XF86Config,然后手工修改。比如使用xf86cfg:
#xf86cfg# 在此进行配置,然后保存至/etc/X11/XF86Config#vi /etc/X11/XF86Config
获者使用命令行xf86config:
#xf86config# 在此进行配置,然后保存至/etc/X11/XF86Config#vi /etc/X11/XF86Config
这两个程序的界面不同,但都要求获取以下信息:
鼠标的类型和设备
键盘的类型和布局
显卡的类型
显示器的类型
配置之前,你得收集好这些信息。
第一步检测鼠标类型(串口、PS/2还是其它)与鼠标设备(wsmouse还是其它)。如果你使用串口鼠标,那么选择相应的协议并给出你把它连在哪个串口上了。
举个例子,PS/2和USB鼠标通常使用wsmouse设备,如此你可以在配置文件里写下:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "wsmouse"
Option "Device" "/dev/wsmouse"
EndSection
如果你的鼠标有滚轮,那个滚轮将被影射为4和5号键(一上一下)。很多像xterm和firefox这样的程序都支持滚轮。要启用滚轮,就这样写:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "wsmouse"
Option "Device" "/dev/wsmouse"
Option "ZAxisMapping" "4 5"
EndSection
对于插在第一个串口上的串行鼠标:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/tty00"
EndSection
/dev/tty00指的是第一个串口,/dev/tty01就是第二个,以此类推。"Protocol" "auto"指的是鼠标自动选择协议。如果不工作的话,把"auto"换成"Microsoft"、"ItelliMouse"或"Logitech",可以到/usr/X11R6/lib/X11/XF86Config.eg和/usr/X11R6/lib/X11/doc/README.mouse处参阅更多的参考。
即使你已经为wscons配置了键盘,你也要为X配置,特别是你不使用US布局。
一个简单的方法是使用XKB协议来描述键盘类型和布局。
交互式程序在配置键盘上是薄弱的,你可能需要手工修正配置文件:
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc102"
Option "XkbLayout" "de"
Option "XkbOptions" "ctrl:nocaps"
EndSection
如果你想在你的键盘上使用Windows键,那就把XkbModel的值从pc102换成pc105。
正确的给出显示器的水平和垂直刷新率很重要:正确的数值能在不兼容的显卡配置下保护显示器。这些信息可以在显示器手册中找到。X的文档目录中有一个文件包含了很多显示器的信息;这些信息可以成为配置的初始值。
在交互程序的数据库里可以选择显卡类型;程序会处理后续工作。但XFree86 3.x和4.x不同。
XFree86 3.x对不同的显卡芯片使用不同的服务器。而XFree86 4.x只使用一个。不同的显卡芯片由平台无关的驱动模块支持,这些模块可以在/usr/X11R6/lib/modules/drivers找到。
配置程序结束后,它会创建文件/etc/X11/XF86Config,之后可对此文件进行检验和编辑。
启动X之前当:
检查符号连接/usr/X11R6/bin/X是否指向正确的X服务器:
#ls -l /usr/X11R6/bin/X
检验配置是否正确:
#X -probeonly
仔细检验程序的输出。
现在使用以下命令启动X:
#startx
如果X没有能启动,很可能是配置文件的问题。
如果X启动,但行为不正常(比如鼠标不动),同时按下Ctrl-Alt-Backspace可以迅速退出X(但不是在所有平台上都可以)。一切正常的话,你就会进入默认的窗口管理器(twm,简单,但很多人认为这足够了)。如果想要更强大的管理器,可以从软件包集合(package collection/pkgsrc)出安装,参见9.9. 其它的窗口管理
要自定义X,参考以下命令,它在xterm中改变背景色:
#xsetroot -solid DarkSeaGreen
X环境的外观可以使用多种方法进行自定义。最简单的方法是拷贝默认的.xinitrc文件到你的主目录,然后手工编辑。也可以创建一个全新的,从头做起。
$cp /usr/X11R6/lib/X11/xinit/xinitrc $HOME/.xinitrc$vi $HOME/.xinitrc
以下实例展示了如何启动窗口管理器(twm),在屏幕右下处启动xclock和两个xterm。使用Bisque4作为背景。
# 保持.xinitrc前半部分不变 ... # 启动程序 twm & xclock -geometry 50x50-1-1 & xterm -geometry 80x34-1+1 -bg OldLace & xsetroot -solid Bisque4 & exec xterm -geometry 80x44+0+0 -bg AntiqueWhite -name login
如此之后,必须最后那个关闭xterm(标题为login,输入exit即可关闭)方可退出X。
即使只是做了如此简单的配置工作,X已然很漂亮了。想要更好的话,可以从程序包集合(package collection/pkgsrc)中安装一些工具:
显示rgb.txt中定义的全部颜色。使用它选择根窗口和xterm的背景色。
使用图片作背景。
X的屏幕保护程序。
所有桌面系统都或多或少的依赖于此,它显示两个两种大小的可以动的BSD吉祥物。
如果你不喜欢twm的过于简单、缺乏功能和缺乏配置能力,你可以从软件包集合众选择其它窗口管理器。比较有名的是:fvwm2,olwm/olvwm (Open Look Window Manager),WindowMaker,Enlightenment,AfterStep。
本节以下的部分以安装WindowMaker为例。WindowMaker是一个美观且高度可配置的窗口管理器。使用预编译包windowmaker-0.60.tgz可以安装它,另外一些依赖包也是必需的。通常pkg_add和make install两个命令都回自动下载所有依赖包。
#cd /usr/pkgsrc/x11/windowmaker#make depends-listxpm-3.4k jpeg-6b pkglibtool-1.2p2 giflib-3.0 libproplist-0.9.1 tiff-3.5.2
使用以下命令可以查看依赖包:
#pkg_info -f windowmaker-0.61.0.tgz | grep depends
所有依赖包都按装完成后,就可以安装WindowMaker和它的一些预编译好的主题:
#pkg_add windowmaker-0.61.0.tgz wmthemes-0.6x.tgz
现在WindowMaker安装完成;你需要编辑.xinitrc和/或.xsession:将启动twm的代码替换为启动wmaker的:
# 启动程序 # 启动WindowMaker wmaker & xclock -geometry 50x50-1-1 & xdaemon2 -geometry +0-70 & ...
本例中,xdaemon也被一同启动。
启动WindowMaker必须先运行配置程序:
$wmaker.inst$startx
按照上述实例,使用Quit或简单的在窗口管理器的菜单中选择退出窗口管理器,但它不会将你注销。要注销,在.xinitrc中运行last and with no &:
... xclock -geometry 50x50-1-1 & xdaemon2 -geometry +0-70 & wmaker # no & here!
如果想一直使用X工作,那么登陆后第一件事就是运行startx。如果认为这样太麻烦的话,可以使用一个图形化的登陆工具,使用这个工具的方法很简单:
在你的主目录中创建.xsession,它与~/.xinitrc很相似,事实上,完全可以只做一个都后者的链接。
$cd $HOME$ln -s .xinitrc .xsession
编辑/etc/rc.conf:
xdm=YES xdm_flags="" # x11 display manager
或者不编辑/etc/rc.conf,而是在/etc/rc.local后面添加:
/usr/X11R6/bin/xdm
这个方法可以启动kdm或gdm而不是xdm。
xdm的配置文件位于/usr/X11R6/lib/X11/xdm目录中。在Xservers文件中X默认从vt05启动,当你在终端的时候,使用Ctrl+Alt+F5切换至X;若想换一个终端启动X,那就修改此处。为了避免getty和xdm抢占键盘,最好在关闭getty的终端是用xdm。比如你的Xservers添加:
:0 local /usr/X11R6/bin/X :0 vt04
在/etc/ttys出添加
ttyE3 "/usr/libexec/getty Pc" vt220 off secure
(注意vt04代表ttyE3,因为vt从1开始,而ttyE从0开始)。
编辑xdm配置文件可以使xdm登陆界面更加美观。比如,在Xsetup_0文件后添加如下命令可以改变背景色:
xsetroot -solid SeaGreen
使用xpmroot可以设置背景为图像而不是颜色:
xpmroot /path_to_xpm/netbsd.xpm
深入分析配置文件,可以使界面更为美观,得到更好的登陆体验。注意,诸如gdm和kdm等其它的显示管理器在配置上有所不同,通常是通过图形界面进行的。