安装完kde或gnome后,执行startx后只能进入twm.
需要下面步骤:
echo "exec startkde" > ~/.xinitrc
或
echo "exec gnome-session" > ~/.xinitrc
再执行 startx 就进入kde 或 gnome界面了.
###################################################
TWM是Tab Window Manager for the X Window System的简称,它是一个窗口管理器,初次发布于1988年4月,是个非常容易上手的Window Manager。不像其他的X程序,它没有基于任何GUI组件,而是直接使用的XLib,这样带来的好处就是:小、更方便的配置。所谓窗口管理器,它是一个特殊的程序,它用来给X程序提供诸如:标题的绘制、窗口阴影、窗口图标化、用户自定义宏、鼠标点击、键盘焦点、缩放等功能。
它和GNOME、KDE不同,不是一个桌面环境(Desktop Enviroment,DE)。那些所谓的桌面环境都会有一个窗口管理器,比如CentOS的GNOME用的就是MetaCity,这些DE集成了大量的应用程序,包括一些非常便利的系统管理工具、实用小工具、游戏等,大大方便了用户.
TWM是一个非常简单的xwindows,但可以运行诸如mozilla,gaim,konqueror这类只有在图形界面下才可以用的软件.试试在终端控制台执行这些命令!
左键点击桌面就弹出菜单,kill是终止进程,term是终端控制台.showicomgr是进程图标列表.
为了要启动TWM,而不是GNOME或KDE,我们需要在用户的目录下编辑一个.xinitrc的文件,它的内容如下:
#!/bin/sh
xclock -geometry 70x70+5+5 &
xterm -geometry +200+200 -fn 7x13 -fg gray -bg black &
exec twm
这样,当你在执行startx的时候,就只会启动TWM了。最后一行表示启动TWM,前面的两行表示启动的其他程序,比如xclock,它是一个时钟程序,它后面的参数表示它启动后所在的位置和大小。需要注意的是,除了最后一行,其他的行要在最后加上后台运行标志,否则后面的程序都没法进行了。除了最后一行,其他的都是可选的,你可以把你常用的一些程序放在exec twm前,这就和Windows下的启动一样。startx后,你将会发现,TWM的启动非常的快,至少比GNOME,KDE快多了,当然这样比有失公平。
桌面环境纵有千般好,也会有它的短处,比如:由于它的庞大,在系统启动的时候会显的很慢,其实有很多应用我们都不会用到,这个时候,你可选择只加载一个窗口管理器即可。而且你将会发现,几乎所有的窗口管理器都可以用rc文件来配置,你可以在允许的范围内,任意的配置。比如TWM的配置文件就是.twmrc。它位于用户目录下,在TWM启的时候它会首先从用户的主目录下找这个文件,如果它找不到,TWM就会使用一个系统共用的配置文件,一般情况下它位于:/usr/X11R6/lib/X11/twm/system.twmrc。
#################################################
TWM的配置逻辑上被分为三类概念:变量(Variables)、绑定(Bindings)和菜单(Menus)。它们都保存在用户目录下的.twmrc文件中。
变量
变量的配置必须放在第一,它用来描述字体、颜色、指针、边框宽度、图标、窗口的位置摆放,高亮、自动获得焦点等。
变量的名字和关键字是非大小写敏感的。字符串必须用引号引起来,比如:"blue",并且字符串是大小写敏感的。
举个例子:
BorderColor "gray50"{ "XTerm" "red" "xmh" "green"}
上面表示,所有的窗口的边框颜色为gray50,大致为灰色,括号中间表示特殊的情况,比如第一行的意思是:如果窗口的名字为"XTerm",或者它的类名为"XTerm"(注),它的边框颜色就为red,即红色的。我们可定义很多窗口元素的颜色,如菜单背景、菜单前景、标题背景、标题前景等。
Color{ MenuBackground "gray50" MenuForeground "blue" BorderColor "red" { "XTerm" "yellow" } TitleForeground "yellow" TitleBackground "blue"}
绑定
绑定配置通常放在第二位,主要用于描述键盘或者鼠标在窗口、图标、标题、框架上动作时,产生的影响。
比如我们可以把F1键绑定为最小化操作,把F2绑定为更改窗口的层次,把F11绑定为最大化窗口,把Shift+F4绑定为关闭窗口,F12用来把窗口焦点移到某个窗口上。
"F1" = : all : f.iconify"F2" = : all : f.raiselower"F4" = shift : all : f.delete"F11" = : all : f.fullzoom"F12" = : all : f.warpto "XTerm Icon Manager"
绑定键盘的语法为:
Button or Key = modlist : context : function
Button or Key,就是鼠标的按键或者是键盘上的某个键。modlist是一些功能键或者它们的组合,比如shift, control, lock, meta, mod1, mod2,mod3, mod4, mod5等,shift, control和lock这些键大家都知道,meta在有些系统上就是alt键。其他的我也没搞明白是什么东西,如果你知道,请告诉我。context表示上下文,所谓上下文,就是指鼠标或者焦点所在的地方。比如上面的 F4键的行,其中的all表示当鼠标指针点在程序的任意位置,shift+F4都会把当前窗口关闭,上下文还包括:
root: 根窗口frame: 窗口的框架title: 窗口的标题window: 窗口的客户区,就是窗口的内部那块区域,学过VC的应该很清楚icon: 图标iconmgr: 窗口管理器all: 就是所有啦
再举个例子:
Button1 = : root : f.menu "TwmWindows"
表示当鼠标左键在根窗口上点击的时候,弹出TwmWindows菜单,TwmWindows是一个菜单的标志符,我将在后面说明。
上下文可以任意组合,比如想表示鼠标在框架或者标题上的绑定,我们可以这样写 "F1" = shift : t|f : f.raise。其中t为title的缩写,f为frame的缩写。其他的上下文也都有缩写。
我们还可以把窗口的标题上加“标题按钮”,比如我们要在标题上加一个关闭按钮,我们可以这样:
LeftTitleButton "/usr/X11R6/include/X11/bitmaps/xm_noenter16" = f.delete
LeftTitleButton表示位置,然后是按钮图标的路径,最后是按钮的动作。
菜单
菜单用于给用户提供自定义单的机会。它们可以被分成不同组,方便管理。每个菜单都由一个名字来标识,这个名字将来用作f.menu的参数。并且,我们还可以定义菜单的背景色、前景色、菜单的项以及该项所对应的动作。如下例:
menu "LeftClickMenu"{"my menu" f.title"fcitx" f.exec "exec fcitx &""kill fcitx" f.exec "exec killall fcitx &""" ("rgb:0/2/4":"rgb:4/b/f") f.nop"Xterm" f.exec "exec xterm -fn 7x13 -fg gray -bg black &""GNOME Term" f.exec "gnome-terminal &""FireFox" f.exec "exec firefox &""Luma QQ" f.exec "exec ~/bin/LumaQQ/lumaqq &""Gaim" f.exec "exec gaim &""Time" f.exec "exec xmessage `date +\"%F %R:%S [%u]\"` &"}
菜单的内容编辑好后,你需要设置菜单的激活条件。比如上面的菜单,我们让它在鼠标左键点击屏幕时弹出。方法是在.twmrc中加入
Button1 = : root : f.menu "LeftClickMenu
Button1表示鼠标左键,root表示根窗口,可以说就是桌面。
正如你所看到的一样,配置非常的简单,其中我设置了一个空菜单,它用来分割不同类别的菜单项,它的颜色和别的稍有不同,括号中的前面表示前景色,后面表是背景色。而最后一项它的动作为f.nop表示没有任何动作。而f.exec表示执行某个程序。f.menu表示激活某个子菜单。
图标管理器
如果桌面上的图标过多,用起来比较麻烦,我们这个时候可以用图标管理器来简化工作。TWM支持多个图标管理器,每个还可以有一列或者多列,比如你想把所有的XTerm类程序的图标都放在一个图标管理器中管理,你可以创建一个如下的管理器:
IconManager{ "XTerm" "=100x5-10+10" 1}
XTerm是窗口的类名(注),后面的参数表示管理器窗口的位置在屏幕的右上角,大小为100X5, -10+10表示它在屏幕上的位置,最后的1表示它只有1列。这样你所打开的所有XTerm类的程序(比如xterm)的图标都会被这个管理器管理。管理器中的图标缺省是按照窗口打开的顺序来排序的,如果你愿意,你也可以修改排序的方式。
有用的设定
TWM默认情况下,在建立新窗口时,需要用户指定窗口的位置,这个“特色“实在让人头疼,不知道TWM的作者当初的用意何在。还好,有参数可以关闭它,在.twmrc的最上面加入RandomPlacement即可,以后新打开的窗口就会自动的找一个位置了。
在.twmrc中加入AutoRelativeResize,然后你就可以拖动标题栏最右边的按钮来改变窗口大小了。在实际操作中,我发现,如果要缩小窗口,需要先向放大的方向拖动,然后再往缩小的方向拖动才可以。如果不加入这个参数,要想改变窗口大小,需要把鼠标移动到右下角才可以,不够方便。
AutoRaise。有些窗口,我们会经常用到它,比如XTerm类(注)的窗口。为了方便起见,我们在配置中加入
AutoRaise{"XTerm"}
把你的鼠标移动到XTerm的窗口上,看到了吧,无须任何点击,窗口就会被放到最上层。
TWM并不是一个完美的窗口管理器,比如它在某种意义上说不够漂亮。但是每个窗口管理器都有它自己独特的地方,每个人都有可能爱上TWM,也许有一天你厌烦了别的管理器,你会尝试用一下TWM,以缓解一下审美疲劳.
###################################################
下面是fvwm的说明连接: