FreeBSD连载(50):定制X Window的基本方法
与其他图形界面相比,X Window是高度可配置的,这是因为X Window本身只是定义了一系列最基本的显示功能调用,而并没有规定图形窗口应该是什么样子的,因此大批程序员为X Window开发了各种不同风格的开发工具包和窗口管理程序,使得X Window的风格多种多样。因此X Window的使用者有多种选择,可以根据自己的喜好来定制工作站的图形界面。
颜色深度、分辨率与字体配置:
在前面的设置过程中可以设置X服务器使用多种色彩深度,如8bpp、16bpp、24bpp和32bpp,一般来讲色彩深度越大,所能表现的色彩越丰富,而24bpp就被称为真彩色,能真实的表现图象的色彩(32bpp实际也只是24bpp,它是为了让每个象素都占据独立的32位双字,以对齐象素边界,加速处理速度)。缺省的色彩深度为对应于256色的8bpp,显然这不足于表现图象的色彩,在硬件能力满足的条件下应该使用更高的色彩深度(要受显存大小和分辨率大小的限制)。例如要设置X服务器工作在16bpp的准真彩色下,可以使用带参数的startx或xinit。
$ startx -- -bpp 16
其中前面的两个--线表示将后面的参数不加改变的传递给X服务器。另一种设置缺省色彩深度的方法是在X的设置文件XF86Config中设置DefaultColorDepth选项。
由于X Window中的色彩深度是可以改变的,为了帮助客户程序使用具体的色彩,X客户程序中使用的色彩将通过X服务器映射为真实的色彩。X中还定义了多种标准色的名字,在X程序或资源定义文件中直接使用色彩名字,如Red、Blue,就得到常用的颜色。
X服务器也可以同时支持多种分辨率,并能够在运行时刻动态切换它所支持的分辨率。在前面XF86Setup设置程序中的显示器设置选项中,有部分显示器能同时设置了几个显示模式,然而这些分辨率并不是该显示器能支持的分辨率的全部,如果是使用xf86config或者手工更改设置文件,还能设置更多的分辨率。当设置了多个分辨率模式的时候,就能在XWindow下使用热键、和向后切换模式,使用、和向前切换分辨率模式,其中和是小键盘上的键,主键盘上的并不能用来切换分辨率。
虽然存在不同的分辨率模式,但是X服务器显示的虚屏大小仍然相同,虚拟显示屏大于实际显示屏,但可以通过鼠标的移动,在实际显示屏上显示虚拟显示屏的不同部分。因此在有多个分辨率的时候,虚拟显示屏至少应该等同于最大分辨率的大小,这样不论切换到哪个分辨率,应用程序的窗口仍然保持原有的样子,只是窗口有可能位于真实的显示屏外,需要通过移动鼠标来移动虚拟显示屏,看到应用程序窗口的全貌。由于移动虚拟显示屏是通过直接控制显示卡上的寄存器来进行的,不需要在显存或内存中进行额外的移动或复制操作,因此几乎不消耗资源,也不影响任何显示速度。
虽然XFree86缺省已经支持了相当丰富的字体,但是还是有可能需要安装新的字体,例如某种中文字体。X Window的字体应该在配置文件中设置其搜寻路径,但在启动X Window之后,也可以使用xset命令来重新设置字体的搜寻路径。
xset fp+ :增加一个字体搜寻目录。
xset fp- :删除一个字体搜寻目录。
xset fp= :重新设置字体搜寻目录。
xset fp rehash:更改某个字体目录中的内容后,强迫系统刷新字体搜寻路径。
要想使用一些使用者自己设置的字体,就要按下面的步骤将这些字体加入到X Window的搜寻路径。
将这些字体单独放在一个目录下,或者放到系统原有的字体目录下。
运行 “mkfontdir 该字体目录” ,构建这个字体目录(将按照所有的字体,重新生成fonts.dir文件)。
使用 “xset fp+ 该字体目录” 或 “xset fp rehash” ,使设置生效。
fonts.dir文件中包含该字体目录下所有字体的名字,以下为一个例子的部分内容,该文件每一行都给出一个字体的名字。
gb16st.pcf.gz -isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0gb24st.pcf.gz -isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-010x20.pcf.gz -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1gb16fs.pcf.gz -isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0可以看出font.dir中的内容分为两部分,第一部分为字体文件的名字,第二部分为字体的名字。每个字体的名字用 “-” 将不同的部分分隔开了,这些相互分隔的部分包括字体的开发者、字体的类别、字体本身的尺寸(磅数)、倾斜度和点的大小,字符间距的类型、字体所为的字符集,以及字符的风格。
可以看出,每个字体的名字相当复杂,然而可以通过定义别名的方式来简化具体字体的名字,在一个字体目录下,都有一个对应的fonts.alias的文件,这里就登记了很多字体的别名,使用者也可以自己根据需要增添。
fixed-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-15x7-misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-15x8-misc-fixed-medium-r-normal--8-80-75-75-c-50-iso646.1991-irv上面就是某个font.alias的一部分,它的第一列就为简单易记的别名。在运行X Window时,可以使用xlsfonts来查看系统中可以使用的字体信息,使用xfontsel来查看每种字体的外观。
定制客户桌面基本方法
根窗口的特征可以使用xsetroot命令来设置,可以使用它来定制窗口的颜色(背景色和前景色),或者使用一个位图作为背景等。也可以使用”xset s seconds”来定义屏幕保护的激活时间,”xset s default”将屏幕保护设为系统的缺省配置。
还有很多更强大的X程序能用来定制X的根窗口,设置壁纸和屏幕保护。例如可以使用xv来将gif或jpg等类型的图片设置为壁纸,这些程序都可以在FreeBSD的Packages Collection和Ports Collection中找到。
X客户程序通常使用标准的构件,通常这些构件都有一些标准的参数来定义它们使用的字体、文字的前景色、背景色、滚动条等。这些参数可以通过更改构件的资源设置,来改变其设置。一般使用用户个人目录下的.Xdefaults或.Xresoures作为用户的个人资源文件,资源文件在启动时在.xinitrc文件中由xrdb命令载入系统。
除了资源设置之外,标准X客户程序中的构件也支持标准的命令行选项,可以用来改变窗口构件的属性:
-borderwith或-bw,框架的宽度,以像素为单位
-foreground或-fg,前景色
-background或-bg,背景色
-display,客户程序要使用的X服务器的显示位置
-font或-fn,显示特殊文字使用的字体
-geometry,窗口的几何结构,包括位置和大小
-iconic,以图标方式启动
-title,标题栏的标题
选择窗口管理器和桌面环境
在FreeBSD安装好XFree86之后,缺省的窗口管理器是twm,这是一个比较简单的窗口管理器,会使得第一次接触X Window的使用者对X Window产生不好的印象,但是如果进一步了解X Window系统,就会知道X Window本身并没有包括真正好用的窗口管理器,但是却存在很多种优秀的窗口管理器能达到这个目的,使X Window变得更华丽、更易用。
因此必须从Packages Collection中选择安装相应的窗口管理器或桌面环境,可供选择的有fvwm95、AfterStep、KDE等。
fvwm95是从另一个窗口管理器fvwm2的进行改进之后的版本,它被设置为与Windows95的桌面非常相似,因此习惯于Windows95界面的个人计算机使用者常常会选择这个窗口管理器,然而既然使用的是X Window,没有必要一定还要使用Window95的显示风格,使用fvwm2、AfterStep等其他窗口管理器来尝试其他风格更为有益。一般情况下使用者还是会安装一个fvwm95,fvwm95使用的配置文件是用户主目录下的.fvwm2rc95文件,而缺省配置文件为/usr/X11R6/lib/fvwm95/system.fvwm2rc95文件。使用fvwm95时最简单的启动文件.xinitrc应包括:
/usr/X11R6/bin/fvwm95
AfterStep是模仿NextStep的窗口管理器,这个窗口管理器精巧而且漂亮,如果不是过于沉迷于Windows95的操作方式,不妨使用这个窗口管理器,它还有几个派生的管理器,如WindowMaker、enlightenment等。为了充分发挥AfterStep的华丽,X的显示屏应该大于800x600的分辨率,并至少使用16bpp的色彩深度。AfterStep的所有配置文件均放置在用户主目录下的GNUStep目录中,相应的启动文件为:
/usr/X11R6/bin/AfterStep
与前面两者不同,gnome和KDE不仅仅是一个窗口管理器,还包括大量的应用程序和相关工具(gnome使用enlightenment作为其缺省窗口管理器)。这些桌面环境包括各种应用程序、控制条、图形化的设置程序等,使用它们能够全面享受到图形桌面环境的优点,但它们占用的系统资源也相对较多。如果是将安装FreeBSD的计算机用做一台工作站,那么就应该选择其中一种桌面环境,用户可以根据自己的喜好来选择安装gnome或者KDE。
如果选择安装了KDE时,在.xinitrc及.xsession中应该包含的相应启动命令为:
/usr/local/bin/startkde
在3.2=RELEASE之后,FreeBSD能通过Sysinstall来设置不同的桌面环境,Sysinstall能安装相应的软件包,并在/usr/share/skel中添加dot.xinitrc和dot.xsession文件,这样在生成用户时就自动生成.xinitrc和.xsession文件。
配置和使用KDE
KDE不单单是一个窗口管理程序,它包括了使用X Window图形界面进行操作所需要的各种应用程序。它的主要部分为一个拥有任务条、工具条、快捷图标的桌面环境,并包括可用于浏览WWW网页的文件管理器、编辑器、计算器、CD播放器、邮件处理程序、新闻组阅读程序等等大量的应用程序。
KDE的另一个特点就是包括了对图形界面外观的定制程序,一般情况下Unix中进行配置需要修改对应的配置文件,虽然这种方式提供了很大的灵活性,但对于很多不重要的设置,并不需要这么灵活的方式,而要求方便、简易。在KDE下不需要使用手工更改配置文件,而是通过图形界面的设置程序进行设置,因此更容易使用。下面为一个KDE界面的例子:
由于KDE是为了高性能的图形界面开发的,因此为了获得较好的观感,至少应该以800x600分辨率运行X Window,建议使用1024x768以上的分辨率,以充分发挥KDE的显示效果。
KDE图形桌面由桌面背景、快捷图标、工作栏和任务条组成,每个可以点击的位置上通常使用左键一次点击启动相应的功能,使用右键点击出现一个菜单,可以进行相关设置。上图为进行工作栏和任务条的外观设置,设置它们显示的不同的大小和位置。此外,在桌面上使用右键可以配置桌面外观,包括墙纸和屏幕保护。点击左下角的K图标可以弹出一个菜单,菜单中包括了KDE环境提供个多种应用程序,也可以添加对其他应用程序的连接。
与MS Windows不同,KDE(以及大部分X窗口管理器),使用一次点击启动应用程序,而不是双击。KDE下切换窗口的热键与Windows相同为Alt-Tab。
KDE界面低部工作栏上的各个按钮都对应一个相应的应用程序,而其中并列的四个按钮,对应四个不同虚拟屏幕,每个屏幕上的内容各不相同,可以分别配置。KDE最多可支持八个虚拟屏幕,每个窗口只显示在一个屏幕上,除非使用鼠标将窗口左上角的图钉标志打开,这样操作之后这个窗口总显示在屏幕上,而不管如何切换虚拟屏幕。
KDE的配置工作全部可以通过KDE配置中心(KDE Control Center)来完成。点中左下角的 “K” 图标,在菜单中选中KDE Control Center或使用工作栏上的快捷图标,就可以启动它对KDE的外观进行配置。
KDE控制中心可以设置KDE桌面环境的排列方式,如工作栏、任务栏的大小和位置,窗口的风格,使用的颜色,屏幕保护以及其他一些应用程序的相关设置。这些设置也可以在KDE桌面环境中,使用鼠标右键弹出的菜单中的选项来启动。
由于KDE是一种国际化的应用程序,因此可以使用上面的设置程序将KDE使用的字符设置为中文。当将KDE使用的语言设置为中文时,那么所有KDE的菜单都使用中文,但是这需要中文X服务器或其他中文系统的中文显示能力的支持,否则KDE虽然显示的是中文字符,但是显示的却会是乱码。
对于使用XDM登录方式的系统,需要使用xdm以提供系统登录。虽然用户登录后可以从.xsessin中启动KDE,但仍然摆脱不了xdm过于简陋的登录画面。而KDE的另一个特点就是提供一个xdm的替代程序kdm,这使得系统管理员可以替换掉简单的xdm界面,使用kdm来提供更漂亮的XDM登录界面,这使得X Window系统表现得更为华丽。
上图就是一个kdm的外观,它同样也是在KDE控制中心中来进行配置的,只是由于kdm属于系统程序,因此只有root运行的KDE控制中心才能选择这一项配置功能。设置KDM,需要选择KDE配置中心的第一个选项Desktop Manager。
这个选项中可以设置kdm的图标、出现在kdm的用户列表中的用户、或者不出现在kdm的用户列表中的用于,以及在会话结束时用于关闭系统的指令等。
将工作站用作专用X终端
专用机房中常常使用X终端为公共使用者提供服务,使用者可以通过这些终端以XDM方式登录到机房中的Unix主机上去。X终端不允许使用者登录到自己系统中,而只能使用本地X服务器的处理能力,登录到其他主机上进行使用。
由于个人计算机硬件更为便宜,并且由于硬件的发展其性能也并不落后,使用个人计算机作X终端也是一种在使用专用X终端之外很不错的选择。可以使用FreeBSD作操作系统,Xfree86支持X Window系统,就能将FreeBSD系统用作专用X终端,这样的优势是所有的软件都可以免费得到,就使得在实现几乎同样的性能的条件下,却减少了大量的资金投入。
同样也可以通过设置使得用户不能登录进本地系统,而是直接登录到网络上的其他Unix主机中去。这需要那台提供登录服务的Unix主机运行xdm,这样X终端就能通过xdmcp协议在网络中通过广播或者直接查询的方式,查找到运行xdm的主机,并连接上来提供登录登录画面,就如同在本地系统一样。用作X终端的FreeBSD系统需要以使用特别的参数运行X,以查找XDM主机。
如果运行XDM的Unix主机和用作X终端的FreeBSD系统在同一个以太网段上,可以使用广播的方式寻找运行XDM的主机,此时启动X的命令为:
# /usr/X11R6/bin/X -broadcast
这样系统上将列出本地所有运行XDM的Unix主机,供使用者选择登录。或者可以直接查询方式,通过query参数直接与某台Unix主机相连接,这可以用在客户机和服务器不在同一个网段上的时候。
# /usr/X11R6/bin/X -query Unixhost
为了使系统一启动就进入这个登录状态,可以将这个命令写入shell脚本,并放入系统启动目录/usr/X11R6/etc/rc.d中。然而此时使用ttys文件进行设置更佳,因为此时可能同时想关闭虚拟控制台,以防止X终端使用者切换到虚拟控制台上。
未完,待续。。。