LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 03-06-18, 16:49 第 1 帖
pupilzeng 帅哥
 
 
 
注册会员  
  注册日期: Jun 2002
  我的住址: 云游四海
  帖子: 2,280
  精华: 11
 

标题: 修改了一下startx,用于窗口管理器的选择


如果你有多个窗口管理器,而又喜欢用startx启动的话,那这个脚本可以满足你的要求。
1.修改startx,变成这样:
代码:
#!/bin/sh # $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $ # # This is just a sample implementation of a slightly less primitive # interface than xinit. It looks for user .xinitrc and .xserverrc # files, then system xinitrc and xserverrc files, else lets xinit choose # its default. The system xinitrc should probably do things like check # for .Xresources files and merge them in, startup up a window manager, # and pop a clock and serveral xterms. # # Site administrators are STRONGLY urged to write nicer versions. # # $XFree86: xc/programs/xinit/startx.cpp,v 3.12.2.2 2002/01/28 18:27:34 tsi Exp $ #--------------------增加---------------------- GNOME=$HOME/.startx/gnome ICEWM=$HOME/.startx/icewm #FVWM=$HOME/.startx/fvwm #----------------------------------------------- userclientrc=$HOME/.xinitrc userclientrc=$HOME/.xinitrc userserverrc=$HOME/.xserverrc sysclientrc=/usr/X11R6/lib/X11/xinit/xinitrc sysserverrc=/usr/X11R6/lib/X11/xinit/xserverrc defaultclient=/usr/X11R6/bin/xterm defaultserver=/usr/X11R6/bin/X defaultclientargs="" defaultserverargs="" clientargs="" serverargs="" if [ -f $userclientrc ]; then defaultclientargs=$userclientrc elif [ -f $sysclientrc ]; then defaultclientargs=$sysclientrc fi if [ -f $userserverrc ]; then defaultserverargs=$userserverrc elif [ -f $sysserverrc ]; then defaultserverargs=$sysserverrc fi whoseargs="client" while [ x"$1" != x ]; do case "$1" in #----------------------增加-------------------------- gnome) if [ x"$clientargs" = x ]; then if [ -e $GNOME ]; then client=$GNOME fi else clientargs="$clientargs $1" fi ;; icewm) if [ x"$clientargs" = x ]; then if [ -e $ICEWM ]; then client=$ICEWM fi else clientargs="$clientargs $1" fi ;; # fvwm) # client=$FVWM # ;; #if there are more window manager that you want to start by startx, #you can add it here # ...) # ;; #----------------------------------------------------------------- # '' required to prevent cpp from treating "/*" as a C comment. /''*|\./''*) if [ "$whoseargs" = "client" ]; then if [ x"$clientargs" = x ]; then client="$1" else clientargs="$clientargs $1" fi else if [ x"$serverargs" = x ]; then server="$1" else serverargs="$serverargs $1" fi fi ;; --) whoseargs="server" ;; *) if [ "$whoseargs" = "client" ]; then clientargs="$clientargs $1" else # display must be the FIRST server argument if [ x"$serverargs" = x ] && expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then display="$1" else serverargs="$serverargs $1" fi fi ;; esac shift done # process client arguments if [ x"$client" = x ]; then # if no client arguments either, use rc file instead if [ x"$clientargs" = x ]; then client="$defaultclientargs" else client=$defaultclient fi fi # process server arguments if [ x"$server" = x ]; then # if no server arguments or display either, use rc file instead if [ x"$serverargs" = x -a x"$display" = x ]; then server="$defaultserverargs" else server=$defaultserver fi fi if [ x"$XAUTHORITY" = x ]; then XAUTHORITY=$HOME/.Xauthority export XAUTHORITY fi removelist= # set up default Xauth info for this machine # check for GNU hostname if hostname --version > /dev/null 2>&1; then if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then hostname=`hostname -f` fi fi if [ -z "$hostname" ]; then hostname=`hostname` fi authdisplay=${display:-:0} mcookie=`mcookie` for displayname in $authdisplay $hostname$authdisplay; do if ! xauth list "$displayname" | grep "$displayname " >/dev/null 2>&1; then xauth add $displayname . $mcookie removelist="$displayname $removelist" fi done xinit $client $clientargs -- $server $display $serverargs if [ x"$removelist" != x ]; then xauth remove $removelist fi if command -v deallocvt > /dev/null 2>&1; then deallocvt fi
2.然后创建文件~/.startx/gnome,~/.startx/icewm
下面是我的文件内容:
>cat ~/.startx/gnome
exec gnome-session
>cat ~/.startx/icewm
fcitx &
xscreensaver -no-splash &
exec /usr/bin/icewm
killall fcitx
其实他们的作用跟~/.xinitrc是一样的。
3.使用方法。
启动gnome:startx gnome
启动icewm:startx icewm
当然还是可以利用~/.xinitrc:startx
仿照这个方法,你也可以改动它,能启动其他的一些窗口管理器。







__________________
Simplicity is beauty!
  pupilzeng 当前离线   回复时引用此帖
旧 03-06-18, 19:18 第 2 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

very good
  KornLee 当前离线   回复时引用此帖
旧 03-06-24, 13:30 第 3 帖
tylj
 
 
 
注册会员  
  注册日期: Mar 2003
  帖子: 15
  精华: 0
 

mandrake就是用这个方式启动到不同的图形界面,是不是借用过来的呢?
  tylj 当前离线   回复时引用此帖
旧 03-06-24, 19:14 第 4 帖
pupilzeng 帅哥
 
 
 
注册会员  
  注册日期: Jun 2002
  我的住址: 云游四海
  帖子: 2,280
  精华: 11
 

不是吧?
我只是在懂shell 之前用过mandrake,它不是用gmd/kdm启动?
  pupilzeng 当前离线   回复时引用此帖
旧 03-06-26, 20:22 第 5 帖
neil007
 
neil007 的头像
 
 
注册会员  
  注册日期: Jan 2003
  我的住址: 济南
  帖子: 655
  精华: 3
 

我写了几个非常简单的脚本,名字叫xfvwm,ice,kde,等,然后在自己的根目录下写了几个.XSESSION的复本,比如启动FVWM
$cat xfvwm
cp ~/.xsession-fvwm ~/.xsession
startx
呵呵,只是太简单了
  neil007 当前离线   回复时引用此帖
旧 03-06-27, 12:09 第 6 帖
carlos
 
 
 
★☆临时★退役☆版主★☆  
  注册日期: Sep 2002
  我的住址: NZ
  帖子: 7,719
  精华: 24
 

我觉得neil007的方法更好一些
不是任何用户都有权改startx的







__________________
Aoccdrnig to a rscheearch at an Elingsh uinervtisy,
it deosn't mttaer in waht oredr the ltteers in a wrod are,
the olny iprmoetnt tihng is taht frist and lsat ltteer is at the rghit pclae.
  carlos 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 13:18


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org