在Linux中方便地使用不同X-Windows窗口管理器

发表于:2007-07-01来源:作者:点击数: 标签:
X Windows 是 Linux 和许多其它 Unix 系统使用的、与 Microsoft Windows类似的图形窗口系统,在许多发行的 Linux 版本中包括的 X11 是 X Windows 的一个版本,主要支持各种 intel x86 平台的 unix 系统,与 Microsoft Windows 不同的是它被设计成 网络 化的
   X Windows 是 Linux 和许多其它 Unix 系统使用的、与 Microsoft Windows类似的图形窗口系统,在许多发行的 Linux 版本中包括的 X11 是 X Windows 的一个版本,主要支持各种 intel x86 平台的unix系统,与 Microsoft Windows 不同的是它被设计成网络化的客户机/服务器程序,窗口管理器只是一种运行在 X11服务器上的客户程序,因此,可以有许多风格各异的窗口管理器,用户能够根据自己的喜好任意选择一种来管理自己的屏幕窗口和程序。在 RedHat Linux 5.1中自带了 fvwm2(默认)、frwm、twm、motif等窗口管理器,笔者又安装了流行的 kde和独特的 enlighte,经常根据具体需要启动不同的管理器,但是,选择的灵活性也带来了操作上的不便,启动各种管理器要用不同的方法,有时还需要改动配置文件,十分麻烦,为了能够方便的使用各种窗口管理器,我修改了系统默认的 X 窗口管理器启动程序 startx,利用命令行参数方便地启动不同的窗口管理器,具体方法如下:

   编辑 /usr/X11/bin/startx,在下面语句:

whoseargs="client"
while [ "x$1" != "x" ]; do
case "$1" in
/@#@#*|\.*) if [ "$whoseargs" = "client" ]; then
clientargs="$1"
else
serverargs="$1"
fi ;;
--) whoseargs="server" ;;
*) if [ "$whoseargs" = "client" ]; then
clientargs="$clientargs $1"
else
serverargs="$serverargs $1"
fi ;;
esac
shift
done
xinit $clientargs -- $serverargs

   之前的任一空处(不要写在控制语句块内和程序开头)插入以下语句:

case "$1" in
"kde") if [ -r "/etc/X11/xinit/Xclients.kde" ]; then
cp /etc/X11/xinit/Xclients.kde $HOME/.Xclients
fi ;;
"mwm") if [ -r "/etc/X11/mwm/Xclients" ]; then
cp /etc/X11/mwm/Xclients $HOME/.Xclients
fi ;;
"twm") if [ -r "/etc/X11/twm/Xclients" ]; then
cp /etc/X11/twm/Xclients $HOME/.Xclients
fi ;;
*) if [ -r "/etc/X11/xinit/Xclients" ]; then
cp /etc/X11/xinit/Xclients $HOME/.Xclients
fi ;;
esac

   上面用到的 /etc/X11/twm/Xclients 程序是笔者为启动 twm 编写的,内容如下:

#!/bin/bash
xpmroot /usr/X11R6/include/X11/pixmaps/rhpenguin.xpm
xterm -title "Hello,welcome to twm!" &
exec twm

   仿照这个 Xclients 程序可以编写未提供 Xclients 的其它窗口管理器的Xclients 程序。

   根据具体情况修改、增加 case 选项即可满足不同需要。

   修改后程序的运行方法为:startx [ kde | mwm | twm ],例如:运行startx kde 命令即可启动 kde,运行不带参数的 startx 命令启动系统默认的fvwm95。

---- 以上程序在 RedHat Linux 5.1 中运行通过。

原文转自:http://www.ltesting.net