用户工具

站点工具


doc:x:x_usage

FreeBSD系统桌面环境配置指南

前言:

这本来不是一个什么困难的问题,并且在FreeBSD HandBook Chapter 5上已经有详细的解释了,但是总有人搞不清楚,网上还有很多误人子弟的文章胡乱地解释,我也不能总是回答同样的问题,于是我把这个问题详细地写清楚,这个wiki页面不是为了替代FreeBSD HandBook Chapter 5,只是为了明确一些概念,帮助新手理清头绪迅速配置好桌面环境。

需要说明的是,这里主要介绍如何使用ports来安装相关软件。如果不了解ports是什么可以参考FreeBSD HandBook Chapter 4。 对于某些硬件比较老的系统来说,使用ports安装可能会需要比较长的编译时间。比如在我的电脑上,重新编译整个系统以及所有需要的软件大概需要6-7个小时。我电脑的主要配置如下:

* CPU:AMD Athlon 5200+

* RAM:1*2G DDR-II 800Mz

注:

  • X或者说桌面环境对于FreeBSD、OpenBSD或者是Linux这些Unix-Like系统来说只是一个软件,并不是系统必须的基本组件,你完全可以不安装它;
  • 本wiki页面内容适用于FreeBSD、OpenBSD(OpenBSD的基本系统里面包含Xorg)以及各个Linux发行版,例如:DebianGentoo
  • 本wiki页面内容适合于FreeBSD的6.x、7.x或者是stable current分支(各个分支共享同一个ports树,所以如果你使用ports安装X的组件的话,各个分支的X的版本是一样的);
  • 本wiki页面内容适用于各个Linux发行版的不同版本或者分支(不同系统在软件的安装命令以及具体软件包的命名上可能存在某些差异),因为各个系统都是使用Xorg作为自己的X-server,不同版本的Xorg可能会有性能以及功能上的少许变化,但是其配置文件xorg.conf的语法却没有改变。

基本概念:

什么是X:

严格的说X是一个标准,也就Unix系统上图形界面的基本模式,顺便说一句,最早实现图形界面的是在Unix上,不是在Windows上。这个标准指定了一个Server/Client的基本模型来实现图形界面功能,具体的细节不需要太过深入。通常情况下,谈到X时就是指的图形界面。X的设计体现了Unix的哲学,也就是模块化,各个模块之间遵守相同的标准,所以运行X需要很多组件,包括x-server、s-client、window manager、x display manager,下面我们分别介绍每一个组件的具体含义。

什么是X-server:

在一般的server/client模型中,server总是代表性能比较高,处理很多数据的那个机器,比如你登录一个ftp站点或者是某个网站的时候,server指的是对方的系统。但是在X的server/client模型中恰好相反,这里面server仅仅负责鼠标、键盘、显卡、显示器这些输入输出部件,而x-client却是负责处理数据的。到目前为止,我们在FreeBSD系统里面使用x-server是:xorg-server。除此之外还有其他的商业的x-server,但是目前在FreeBSD上以及Linux这些自由的开源系统上使用的x-server主要是由xorg提供的xorg-server。所以,如果你想在自己的FreeBSD运行X,那么x-server是必须的。这就是为什么在安装图形界面的时候一定要先安装xorg或者是xorg-minimal,这两个port都是meta port,就是说这个port本身是一个空的port,但是这个port有很多依赖关系,这样可以帮助使用者迅速地安装软件。

由于x-server负责鼠标、键盘、显卡、显示器这些输入输出部件,你必须在安装好以后,告诉x-server你当前系统使用的是什么样的鼠标、键盘、显卡、显示器。由于当前硬件厂商众多,所以不要指望x-server自动识别出所有需要的参数,通常你需要编辑一下/etc/X11/xorg.conf这个文件来提示它一下。现在你应该知道为什么论坛上总有人在买了USB鼠标以后相互讨论如何修改xorg.conf了。

什么是X-Client:

X-server负责管理鼠标、键盘、显卡、显示器,而X-client则负责处理程序的运行。比如说,我桌面上有一个gvim的图标,我现在移动鼠标点击了一下gvim的图标,那么X-server会告诉X-client:“用户移动了鼠标到什么位置,然后单击了一下鼠标的左键”。X-client收到这个信息以后会对这个行为做出反应,经过一番思考,它发现,我这个行为是要打开一个叫gvim的程序,于是X-client会运行gvim,然后告诉X-server:“你在显示器上给用户画出一个像gvim的东西来”。然后,我就在我的屏幕上很高兴地看见了我可爱的gvim编辑器了,当然还有伟大的DejaVu Sans Mono等宽字体。

什么是窗口管理器:

你通常会运行几个程序,比如我现在在运行gvim、epiphany、gnome-terminal,这些程序在屏幕上都放在什么位置呢?这些程序在屏幕上看起来是什么样子的呢?窗口上需要有最大化、最小化图标吗?这些都是由窗口管理器(Window Manager)来负责的。

窗口管理器有很多种,比如fvwm(定制能力很强)、metacity(gnome项目提供的,目前gnome desktop environment所使用的)。

什么是X应用程序:

这个概念最好理解了,简单的说就是你需要运行的图形界面的程序,比如gvim编辑器、epiphany网页浏览器,eog图片浏览器。

什么是XDM:

XDM的全称是X Display Manager,这个程序允许你以图形界面的方式来登录系统。常见的XDM有xdm(很土很难看)、gdm(由gnome项目提供)、kdm(由kde项目提供)。对于运行X来说,这个组件不是必须的,也就是说:

  • 你可以安装它(比如安装gdm)并设定gdm在开机的时候运行(通过rc.conf),然后在系统启动的时候,系统会直接运行gdm,然后你就可以在一个很漂亮、很友好的图形界面的登录环境里面输入用户名、密码并选择语言(严格地说是选择locale环境变量);
  • 你可以不安装它,当系统开机以后,你会看到提示符,这时你输入用户名、密码,然后当你希望进入图形界面的时候运行startx命令,这个命令会读取你home目录下的.xinitrc文件中的内容,来运行X。

显然,前者比较方便。

什么是桌面环境:

如果上面的概念都理解了,那么理解桌面环境就很容易了。简单的说桌面环境是一个程序的集合,这个集合里面包括窗口管理器,X登录管理器,以及一下图形界面的应用程序,但是它不包括x-server。

举个例子:gnome是一个桌面环境,在这个桌面环境中包含了:一个窗口管理器 (metacity)、一个X登录管理器(gdm)以及其他的图形界面程序,比如epiphany网页浏览器、gnome-terminal、eog,等等。

GNOME的安装与配置:

硬件环境介绍:

操作系统:

  • FreeBSD Release 7.1 amd64

显卡:

  • NVIDIA GeForce 9500 GT

显示器:

  • 型号Philips 190CW8
  • 水平刷新频率:30-83
  • 垂直刷新频率:56-76
  • 分辨率:1440×900

显示器的水平以及垂直刷新频率可以在你所购买的显示器的生产厂家的官方网站上查到,每个显示器是不一样的,对于某些没有“超出控制”功能的老显示器,设置错误可能导致显示器烧毁!

鼠标键盘:

  • 普通鼠标键盘

安装xorg-minimal:

上文已经说明了xorg-server的作用,对于运行X来说,这个是必须的。

# cd /usr/ports/x11/xorg-minimal/
# make config-recursive
# make fetch-recursive
# make install clean

安装开源的n卡驱动:

到目前为止,对于amd64构架的FreeBSD来说,还没有NVIDIA提供的驱动程序,所以只能使用由Xorg提供的nv开源驱动。

# /usr/ports/x11-drivers/xorg-drivers
# make config
# make install clean

当运行完make config命令以后,会出现对话框,这时要选择nv,你也可以直接到nv这个驱动的port目录下面去运行make install clean命令,如果你是其他的显卡,那么你应该根据自己的具体情况选择相应的驱动程序。

安装gnome2-lite:

你可以通过编辑gnome2-lite的Makefile来定制安装的组件,比如我不喜欢totem播放器,我就删掉了Makefile中的这个依赖关系,关于Makefile的语法规则请参考FreeBSD Porter's Handbook

# cd /usr/ports/x11/gnome2-lite/
# make config-recursive
# make fetch-recursive
# make install clean

安装gdm:

我比较喜欢直接用图形界面登录系统,至少这样关机比较方便。

# cd /usr/ports/x11/gdm/
# make fetch-recursive
# make config
# make install clean

安装后的配置:

配置xorg-server:

配置xorg-server就是创建并编辑xorg.conf这个文件,其详细语法可以man xorg.conf。对于7.0版本之前的Xorg来说运行x-server必须要有/etc/X11/xorg.conf;但是对新版本的Xorg来说,如果在/etc/X11/目录下面没有找到xorg.conf也可以运行;但是如果在/etc/X11/下面找到一个xorg.conf,并且这个配置文件里面包含错误的话,那么将无法运行x-server。

创建:

安装xorg以后,运行下述命令,将会在/root目录下生成一个xorg.conf.new文件,这个文件中包含了xorg对系统的检测结果,但是这个检测结果不一定完整的,因为硬件厂商实在是太多了,所以你可能需要提示它一些东西,比如你显示器的水平以及垂直刷新频率,最佳分辨率,通常情况下它都需要你提示一下,也就是需要你编辑一下xorg.conf。

# Xorg -configure
测试:

运行下述命令或者直接复制/root/xorg.conf.new到/etc/X11/xorg.conf然后运行startx命令。如果测试成功的话,那么你很幸运,因为Xorg自己识别出了你的硬件并配置了合适的参数,但是这些参数不一定是绝对正确的,所以你可能还需要编辑一下/etc/X11/xorg.conf这个文件;如果测试不成功,那么可能由于某些原因导致Xorg没有识别出你的硬件或者是没有配置合适的参数,这时你解决问题的方法就是手工编辑/etc/X11/xorg.conf。总结一下,不管测试是不是成功,你都应该去手工编辑一下/etc/X11/xorg.conf,不要指望Xorg能自己搞定一切,因为硬件厂商实在是太多了。

# Xorg -config xorg.conf.new

注意:

  • 如果你安装的是xorg这个port,那么你可以做这个测试,当你测试成功的时候你会看见一个比较难看的绿色的窗口管理器,这个窗口管理器叫twm;
  • 如果你安装的是xorg-minimal这个port,那么你根本没有办法进行这个测试,因为xorg-minimal里面根本没有对任何窗口管理器的依赖关系,没有窗口管理器是没有办法运行X的,你可以在安装了gnome或者是其他的桌面环境之后进行这个测试。
编辑:

编辑的目的在于准确地描述自己系统的硬件信息,上面已经说过了,Xorg不一定能自己搞定一切,我在这里只介绍重要的内容,也就是显卡驱动问题显示器刷新频率问题以及显示器分辨率问题

1.显卡驱动问题:

Section "Device"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "SWcursor"           	# [<bool>]
        #Option     "HWcursor"           	# [<bool>]
        #Option     "NoAccel"            	# [<bool>]
        #Option     "ShadowFB"           	# [<bool>]
        #Option     "UseFBDev"           	# [<bool>]
        #Option     "Rotate"             	# [<str>]
        #Option     "VideoKey"           	# <i>
        #Option     "FlatPanel"          	# [<bool>]
        #Option     "FPDither"           	# [<bool>]
        #Option     "CrtcNumber"         	# <i>
        #Option     "FPScale"            	# [<bool>]
        #Option     "FPTweak"            	# <i>
        #Option     "DualHead"           	# [<bool>]
	Identifier  "Card0"
	Driver      "nv"
	VendorName  "nVidia Corporation"
	BoardName   "GeForce 9500 GT"
	BusID       "PCI:1:0:0"
EndSection

上面的Driver “nv”这一行的意思是我指定系统使用开源的nv驱动作为我显卡的驱动程序,也就是说这个部份解决你的显卡驱动问题,如果你是其他类型的显卡你就需要安装其他的驱动程序并修改xorg.conf中Driver这个变量的相应内容。


2.显示器刷新频率问题:

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	HorizSync	30-83
	VertRefresh	56-76
	Option		"DPMS"
EndSection

上面的HorizSync 30-83VertRefresh 56-76这两行用于指定显示器的水平以及垂直刷新频率,配置好这两个参数以后显示器的刷新频率才会正常。

再次提醒:

显示器的水平以及垂直刷新频率可以在你所购买的显示器的生产厂家的官方网站上查到,每个显示器是不一样的,对于某些没有“超出控制”功能的老显示器,设置错误可能导致显示器烧毁!


3.显示器分辨率问题:

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth	24
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes	"1440x900"
	EndSubSection
EndSection

这一部分指定你所使用的分辨率。X系统分辨率是在xorg.conf中指定的,GNOME或者是KDE会读取这个数据,如果你需要修改你系统分辨率,那么你应该编辑xorg.conf文件中的相关内容,而不是点击你的桌面环境中某个菜单上的某个图标。

到此为止你的X-Server已经知道该如何的使用你的显卡和显示器了。

关于连接平板电视,需要注意,在xorg.conf中有以下设置:

Section "Monitor"
    Option "UseEdidDpi" "FALSE"
EndSection
Section "Screen"
    Option "metamodes" "1360x768 +0+0"
    SubSection "Display"
        Depth     24
        Modes "1360x768"
        Viewport   0 0
    EndSubSection
EndSection

挂载proc文件系统:

FreeBSD的默认安装配置中是不挂载虚拟文件系统proc的,并且FreeBSD基本系统的程序也并不倚赖这个虚拟文件系统,但是由于X的各个组件并不是单独为FreeBSD开发设计的,所有某些组件还要倚赖这个虚拟文件系统。如果不挂载这个虚拟文件系统,那么你在gdm和gnome里面没有办法直接关机,因为恰好是负责用户权限的那个程序依赖于proc文件系统,所以你必须挂载虚拟文件系统,挂载方法如下:

  • 首先,保证内核的配置文件里面有这两行:
options         PROCFS
options         PSEUDOFS  

如果是你使用系统自带的内核的话,那么这两行已经包含在配置文件中了;如果你自己编译了内核,那么一定要添加这两行到你的配置文件中去,然后重新编译安装内核。

  • 然后,添加下述内容到/etc/fstab中:
proc			/proc		procfs	rw		0	0

配置GDM开机运行:

添加下述内容到/etc/rc.conf中,告诉系统开机运行gnome的服务,其中包括gdm,按照FreeBSD GNOME中FAQ的介绍添加gnome_enable=“YES”即可,但是开机时系统提示我dbus没有设置好,这也许是FreeBSD的rc系统的某个bug,早些时候我在官方论坛讨论过这个问题,但是一直没有下文,从7.1到7.2一直都是这样。

dbus_enable="YES"
gnome_enable="YES"

配置完毕:

到此为止,xorg知道了自己要使用显卡和显示器参数,系统也知道了开机以后需要运行gdm了,可以说已经完成了X的配置工作,下面补充一个FreeBSD系统GNOME桌面环境下fcitx输入法的安装与配置方法。

KDE 的安装与配置

从 ports 安装

cd /usr/ports/x11/kde4/ && make install clean

建议选上KDEARTWORK、KDEGRAPHICS、KDEMULTIMEDIA、KDEUTILS。

启动 KDE 桌面

echo 'exec /usr/local/kde4/bin/startkde' >> ~/.xinitrc

然后在控制台输入startx即可运行。

配置 KDM 开机运行

echo 'ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure' >> /etc/ttys

让 GTK+ 程序具有 KDE 外观

安装 GTK+ 程序主题切换器和主题

cd /usr/ports/x11/gtk-theme-switch2 && make install clean
cd /usr/ports/x11-themes/qtcurve-gtk2 && make install clean

配置

rehash
switch2

选中 QtCurve ,重启Firefox等GTk+程序,它们的外观就焕然一新了。

中文化:(完善中)

概述:

一个很有趣的现象就是经常听见某些人说某某系统的中文化比较好。
比如某些人说Ubuntu的中文化非常好,实际上这个说法是没有任何根据的。
Ubuntu的开发者只是负责打包,并不负责任何软件的中文化问题。
所以不要在说那个系统中文化好了,因为没有任何的根据。
软件的中文化或者是多语言化是由软件的开发者完成的,比如GNOME的多语言化是由Gnome Translation Team完成的。

设置locale(待撰)

locale是本地化的先决条件。

中文字体

字体乃是一切中文化的先决条件。有了合适的字体,才能显示汉字。

使用文泉驿开源字体

文泉驿是一个不错的开源项目,它提供了文泉驿微米黑(类似雅黑)、文泉驿点阵宋体(类似宋体)等诸多字体。
ports中的文泉驿字体目前包含了WenQuanYi Bitmap Song,WenQuanYi Unibit,WenQuanYi Zen Hei。
安装它:

cd /usr/ports/x11-fonts/wqy && make install clean

使用微软系统中的字体

如果你不喜欢开源字体(或者字体存在bug),并且手头有一份合法的Windows拷贝,你就可以选择这一方案。
首先你需要准备一个目录:

mkdir /usr/ports/distfiles/msttf

然后把Windows中C:\Windows\Fonts(Windows7字体路径)中的simhei.ttf、simsun.ttc、tahoma.ttf,
复制到/usr/ports/distfiles/msttf中,开始安装:

cd /usr/ports/chinese/msttf && make install clean

在图形界面中应用中文字体(待撰)

中文输入法

Fcitx输入法

本来是写X的,但是fcitx和X还是有点关系的,使用startx和使用gdm登录的fcitx的配置方法是不一样的,这里对使用gdm的配置方法做一下说明。

  • 首先,你要安装:
# cd /usr/ports/chinese/fcitx/
# make install clean
  • 然后,你需要配置环境变量:

配置环境变量的方法并不唯一,在这里通过profile来实现,把下述内容下如.profile,

LC_CTYPE=zh_CN.UTF-8; export LC_CTYPE
XMODIFIERS=@im=fcitx; export XMODIFIERS
fcitx&

前面两行是配置fcitx运行时需要的环境变量,最后一行是告诉系统开机自动运行fcitx。按照上述配置完以后,fcitx会在进入gnome桌面环境以后自动运行,激活的命令是Ctrl+Space,如果你觉得fcitx默认的外观比较难看的话,你可以修改你home下面的.fcitx/config中的参数文件来调整fcitx的外观。

配置fcitx的关键是环境变量,使用gdm和使用startx对环境变量的处理是不一样的。使用其他的XDM时,主要注意的问题也是环境变量,就是说你所使用的XDM如何处理对待环境变量。在上面的配置中我使用UFT-8编码方案,其具体含义可参考locale环境变量的资料,此处不做详细介绍。

另一种方法: 在~/.xinitrc加入

export XMODIFIERS=@im=fcitx
fcitx -d &

IBus 输入法

SCIM 输入法

使用CSH,修改 ~/.cshrc 添加以下内容,在英文环境下使用中文输入法。并可在 /usr/local/share/scim/tables目录下删除多余的输入法。

setenv	LC_CTYPE zh_CN.UTF-8
setenv	XMODIFIERS @im=SCIM
setenv	XIM SCIM
setenv	XIM_PROGRAM scim
setenv	GTK_IM_MODULE scim
setenv	QT_IM_MODULE scim

并安装以下软件:(当然你不必在意版本号)

% pkg_info -Ix scim
scim-1.4.9_1          Smart Common Input Method platform
scim-bridge-0.4.16_1           Scim-bridge agent (server)
scim-bridge-qt4-0.4.16_1           Qt4 client for Scim-bridge
scim-table-imengine-0.5.10_1           SCIM table based input method engine
zh-scim-pinyin-0.5.92           SCIM Chinese Smart Pinyin input method
zh-scim-tables-0.5.10_1           SCIM table based Chinese input methods

并在 ~/.xinitrc 文件中加入 scim -d & 启动SCIM输入法。

中文桌面环境

X 环境中文化

printf "export LANG=zh_CN.GBK\nexport LC_ALL=zh_CN.GBK" >> /etc/xprofile

这一步,添加到 ~/.xprofile 会不会更好一些?

GNOME 中文化

如果你想使用中文的桌面那么你就需要设定好自己的locale环境变量,设置的方法有两种:

  • 如果你是使用gdm登录系统,那么你直接在gdm的登录界面选择就可以了,gdm会自动帮你设定好所有的环境变量。
  • 如果你是使用startx来启动图形界面的,那么你就需要根据你所使用的shell来设定环境变量。

KDE 中文化

cd /usr/ports/chinese/kde4-l10n-zh_CN && make install clean
cd /usr/ports/chinese/auto-cn-l10n && make install clean

后记:

这个wiki页面并不是为了代替或者取代官方文档,它只是对官方文档的一个补充,如果内容上和官方文档有冲突,以官方文档为准。并且这个wiki页面中介绍的X是比较简单的情况,也就是X-Server和X-Client都运行在同一台电脑上,事实上可以分别在不同的机器上运行X-Server和X-Client,详细情况请参考相关资料。

最后,希望能对大家有所帮助,欢迎补充。

主要参考资料:

FreeBSD HandBook Chapter 5

FreeBSD GNOME

FreeBSD GNOME FAQ

关于FreeBSD下和GNOME有关的问题都可以在这个FAQ上找到,比如有人反映自己的GNOME启动比较慢,那么就应该参考FAQ的问题20.

FreeBSD Porter's Handbook

/data/vhosts/wiki-data/pages/doc/x/x_usage.txt · 最后更改: 2013/08/29 21:32 由 iheaing