49 FreeBSD连载:进入X Window

进入X WindowX服务器的执行程序位于/usr/X11R6/bin目录中,并且使用一个符号联接 “X” ,指向具体的执行程序,如XF86_VGA16或XF86_S3V等 。因此直接输入X命令就能启动设置好的X服务器,系统将进入图形状态,并出现一个可以移动的X形鼠标指针,但并没有其他反应 。这是因为X服务器只负责处理输入和显示,具体对使用者的输入进行处理则由其他X客户负责,而直接启动X服务器没有启动任何X客户,因而不能处理用户的任何输入 。
手工启动X Window
因此为了利用图形界面的处理能力,在启动X服务器的同时还应该启动X客户程序来负责回应用户的输入 。这个任务可以通过shell程序startx或xinit来作到,这两个程序能在启动X的同时,启动X Window的窗口管理程序和其他X程序 。
startx和xinit缺省查看使用者个人目录下的.xinitrc文件,在这个文件内应该包含启动各个X客户程序的命令 。最简单的.xinitrc可能只包含一个命令来启动一个仿真终端xterm,也可以包含一系列命令来启动多个程序,创建出漂亮的X环境 。想自己定制X Window操作环境的使用者可以手工创建和修改这个文件,以得到不同的用户界面 。
xmodmap -e "keysym Alt_L = Meta_L Meta_L"xterm &xearth &twm【49 FreeBSD连载:进入X Window】在这个例子中执行了 xmodmap用于修改X的键盘定义,然后在后台执行xterm提供一个仿真终端,执行xearth设置X Window的背景,最后在前台执行一个简单的窗口管理器twm 。窗口管理器被放到前台执行,这样当退出窗口管理器时将退出整个X服务器的执行 。
缺省情况下,用户并没有创建这个.xinitrc文件,这样xinit命令就只能启动一个xterm终端仿真程序,而没有执行任何其他的X程序,也没有执行窗口管理器 。因此,直接使用xinit启动的X Window仅仅具备一个终端窗口,将鼠标移动到它上面之后,才能输入命令执行其他操作 。用户如果想要启动窗口管理器或其他程序,必须在终端窗口中输入相应的命令 。
由于X Window中存在多个窗口,但只有一个称为 “焦点” 的窗口才能接收输入 。X Window缺省使用鼠标的位置来选择输入焦点窗口,当然另一些窗口管理器也可以通过键盘来切换输入焦点窗口 。
但是即使不存在.xinitrc文件,使用startx也能启动窗口管理器和几个X客户程序,这是由于startx发现用户个人目录下不存在.xinitrc文件之后,就使用系统中的/usr/X11R6/lib/X11/xinit/xinitrc作为xinit程序的启动文件(startx只是调用xinit的一个shell脚本) 。因此更改系统的xinitrc文件,就能使所有没有创建.xinitrc的用户仍然享有启动文件来启动X Window系统 。由于FreeBSD是一个多用户系统,这样配置启动文件就能简化每个用户的初始配置任务 。在用户对X Window的了解加深之后,就能进一步配置自己的启动文件来定制自己使用的X Window风格 。
XDM系统登录方式
startx或xinit必须先在控制台下登录之后,输入相应命令才能进入X Window环境 。另一种方法为预先启动X Window系统,在X Window下登录进系统 。这种方式是使用xdm来实现的 。
以root用户登录之后,在命令行输入xdm,则系统立即启动X服务器,并启动相应的登录管理程序,在X Window上出现一个登录窗口,允许各个用户登录入系统 。
在用户通过登录认证之后,xdm就需要为用户启动登录会话 。xdm就以用户身份执行/usr/X11R6/lib/X11/xdm/Xsession文件,然后再执行用户个人目录下的.xsession文件 。个人目录下的.xsession文件与.xinitrc文件类似,也是一个标准shell脚本,以下是一个例子 。
PATH=/usr/bin:/usr/sbin/:/usr/X11R6/bin:/usr/local/binxrdb -load .Xdefaults xterm &xearth &twm这个文件与.xinitrc文件的不同之处在于,由于.xinitrc是在用户登录之后由xinit使用的,因此包括PATH在内的环境变量都已经在用户的.profile等文件中设置正确了,而通过xdm登录的用户并没有执行.profile等设置文件,因此必须在.xsession中设置PATH等环境变量,才能正确找到各个执行文件,否则就必须使用绝对路径来启动应用程序 。

推荐阅读