第九章,X

内容列表

9.1. 何谓 X?
9.2. 设定
9.3. 鼠标
9.4. 键盘
9.5. 屏幕
9.6. 显卡
9.6.1. XFree 3.x
9.6.2. XFree86 4.x
9.7. 启动 X
9.8. 个性化 X
9.9. 其它的窗口管理
9.10. 使用xdm进入图形界面登陆

9.1. 何谓 X?

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时,你会遇到一些新名词,它们是:

总结:使用图形环境你需要:

注意

你需要清楚诸如GNOME和KDE这样的桌面系统并不提供X服务器。它们在由XFree86支持的X服务器上运行。GNOME和KDE即可以使用自带的窗口管理器,也可以用其他的。

通常,你可以在给定的一个X服务器上运行至少一个窗口管理器(你可以在一台计算机上运行多个X服务器)。运行GNOME或KDE时,如果你没有运行窗口管理器,它们会给你运行一个。

9.2. 设定

只要你不是在安装时选择最小安装,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这个文件,也可以通过交互式的问答自动创建。已知最好的交互程序是xf86configXF86Setup(用于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 

这两个程序的界面不同,但都要求获取以下信息:

配置之前,你得收集好这些信息。

9.3. 鼠标

第一步检测鼠标类型(串口、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处参阅更多的参考。

9.4. 键盘

即使你已经为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

9.5. 显示器

正确的给出显示器的水平和垂直刷新率很重要:正确的数值能在不兼容的显卡配置下保护显示器。这些信息可以在显示器手册中找到。X的文档目录中有一个文件包含了很多显示器的信息;这些信息可以成为配置的初始值。

9.6. 显卡

在交互程序的数据库里可以选择显卡类型;程序会处理后续工作。但XFree86 3.x和4.x不同。

XFree86 3.x对不同的显卡芯片使用不同的服务器。而XFree86 4.x只使用一个。不同的显卡芯片由平台无关的驱动模块支持,这些模块可以在/usr/X11R6/lib/modules/drivers找到。

9.6.1. XFree 3.x

你选择显卡后必须选择相应的X服务器。通常,配置程序会自动选择一个服务器,但很多显卡被多个服务器支持(比如S3 Virge就被SVGA和S3V支持);在这种情况下,应当从文档中参考选择那个服务器好:不同的服务器用不同的能力,支持不同的显卡。

9.6.2. XFree86 4.x

你选择显卡后程序会自动选择最接近的驱动程序。如果你没有选择显卡,那么选择需要的模块也可以。

9.7. 启动 X

配置程序结束后,它会创建文件/etc/X11/XF86Config,之后可对此文件进行检验和编辑。

启动X之前当:

现在使用以下命令启动X:

# startx

如果X没有能启动,很可能是配置文件的问题。

如果X启动,但行为不正常(比如鼠标不动),同时按下Ctrl-Alt-Backspace可以迅速退出X(但不是在所有平台上都可以)。一切正常的话,你就会进入默认的窗口管理器(twm,简单,但很多人认为这足够了)。如果想要更强大的管理器,可以从软件包集合(package collection/pkgsrc)出安装,参见9.9. 其它的窗口管理

要自定义X,参考以下命令,它在xterm中改变背景色:

# xsetroot -solid DarkSeaGreen

9.8. 个性化 X

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)中安装一些工具:

xcolorsel

显示rgb.txt中定义的全部颜色。使用它选择根窗口和xterm的背景色。

xpmroot

使用图片作背景。

xscreensaver

X的屏幕保护程序。

xdaemon

所有桌面系统都或多或少的依赖于此,它显示两个两种大小的可以动的BSD吉祥物。

9.9. 其它的窗口管理

如果你不喜欢twm的过于简单、缺乏功能和缺乏配置能力,你可以从软件包集合众选择其它窗口管理器。比较有名的是:fvwm2olwm/olvwm (Open Look Window Manager)WindowMakerEnlightenmentAfterStep

本节以下的部分以安装WindowMaker为例。WindowMaker是一个美观且高度可配置的窗口管理器。使用预编译包windowmaker-0.60.tgz可以安装它,另外一些依赖包也是必需的。通常pkg_addmake install两个命令都回自动下载所有依赖包。

# cd /usr/pkgsrc/x11/windowmaker
# make depends-list
xpm-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!

9.10. 使用xdm进入图形界面登陆

如果想一直使用X工作,那么登陆后第一件事就是运行startx。如果认为这样太麻烦的话,可以使用一个图形化的登陆工具,使用这个工具的方法很简单:

  1. 在你的主目录中创建.xsession,它与~/.xinitrc很相似,事实上,完全可以只做一个都后者的链接。

    $ cd $HOME
    $ ln -s .xinitrc .xsession 
  2. 编辑/etc/rc.conf

    xdm=YES       xdm_flags=""       # x11 display manager

    或者不编辑/etc/rc.conf,而是在/etc/rc.local后面添加:

    /usr/X11R6/bin/xdm

    这个方法可以启动kdmgdm而不是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等其它的显示管理器在配置上有所不同,通常是通过图形界面进行的。


Valid XHTML 1.0!