首页 > 开发 > 综合 > 正文

轻松切换X窗口管理器

2024-07-21 02:37:34
字体:
来源:转载
供稿:网友

  在linux下使用X-Window,当你也象Lanche一样在系统中安装了七八个窗口治理器时,是否也为选择启动哪一个治理器而伤脑筋呢? 因为还没有在启动X-Window时可以选择使用哪一个窗口治理器的好工具,而且只有极少数的窗口治理器提供直接切换到其它界面的功能,比如在mlvwm中可能通过菜单操作来直接启动进入icewm,而反之在icewm中却不能直接切换回mlvwm;虽然许多Linux发行套件都带有的KDE和Gnome这两个杰出的桌面操作环境可以利用swithdesk工具来实现切换,但在切换后仍须重启动X会话才能进入新的桌面环境。
  
  
  要在启动X-Window时可以选择使用哪一个窗口治理器,其实最简单的做法就是修改用户主目录下的.xinitrc文件,利用它来控制启动哪一个窗口治理器,这样做既轻易又不会影响到其它X资源文件或系统的其它用户。可是每次启动不同的窗口治理器时都要手动修改.xinitrc文件是不太可取的,为了一劳永逸Lanche就写了一个叫做xwin的脚本,通过运行这个脚本就可以在每次运行X-Window时任意选择想要启动的Window Manager了。
  xwin脚本的清单附后,在此先作一个简要说明:
  清单中的行号只是用于阅读,在真正的脚本中是没有行号的;007-014行在首次运行本脚本时备份你的.xinitrc文件;016-063行的Functions段有两个函数,writerc( )函数将“<< RCFILE”和“RCFILE”之间的HERE文本写入$HOME/.xinitrc,它是用于运行位于$HOME/Desktop/Autostart的启动组程序的语句,并非是必须的;getchose( )函数则是显示选择菜单;065-144行判定用户输入的选择动态地修改$HOME/.xinitrc文件然后启动相应的窗口治理器,假如选择了系统中还没有安装的窗口治理器则会给出错误提示。
  
  
  小技巧:利用此脚本,你还可以同时在一台机子的七号及八号虚拟控制台上运行两个完全不同的X-Window Manager。
  
  xwin脚本清单:
  
  001 #!/bin/sh
  002 #
  003 # xwin This script display a text menu and allow you to select
  004 # which X-Window Manager you want to use
  005 # Author: Lanche , < lanche@163.com >
  006 #
  007 # Backcup your $HOME/.xinirtc file while run this
  008 # script first time
  009 #
  010 if [ -f $HOME/.xinitrc~ ];then
  011 echo
  012 else
  013 cp $HOME/.xinitrc $HOME/.xinitrc~
  014 fi
  015 #
  016 # Functions
  017 #
  018 writerc( ) {
  019 tee $HOME/.xinitrc << RCFILE
  020 #!/bin/sh
  021 #
  022 # This file writed by the xwin script
  023 #
  024 # Start-up items from ~/Desktop/Autostart
  025 #
  026 for i in /$(ls /$HOME/Desktop/Autostart/); do
  027 if test -x /$HOME/Desktop/Autostart//$i; then
  028 /$HOME/Desktop/Autostart//$i &
  030 fi
  031 done
  032 #
  033 # And launch window manager
  034 #
  035 RCFILE
  036 }
  037 #
  038 getchose( ) {
  039 clear
  040 echo
  041 echo
  042 echo
  043 echo
  044 echo
  045 echo
  046 echo ' ################################################'
  047 echo ' # #'
  048 echo ' # 你想使用哪一个窗口治理器? #'
  049 echo ' # #'
  050 echo ' # #'
  051 echo ' # 1 --- kde #'
  052 echo ' # 2 --- xfce #'
  053 echo ' # 3 --- icewm #'
  054 echo ' # 4 --- mlvwm #'
  055 echo ' # 5 --- Fvwm95 #'
  056 echo ' # 6 --- AfterStep #'
  057 echo ' # #'
  058 echo ' # #'
  059 echo ' ################################################'
  060 echo
  061 echo -n ' 请选择:'
  062 }
  063 # End of Functions
  064 #
  065 getchose
  066 read CHOSE
  067 #
  068 #Start the selected X-window manager
  069 #
  070 case $CHOSE in
  071 1)
  072 echo 'You chosed kde'
  073 if [ -f `which kde` ];then
  074 writerc
  075 echo 'startkde' >> $HOME/.xinitrc
  076 echo 'Starting kde...'
  077 startx
  078 else
  079 echo 'KDE is not installed on your system!
'
  080 fi
  081 ;;
  082 2)
  083 echo 'You chosed xfce'
  084 if [ -f `which xfce` ];then
  085 writerc
  086 echo 'exec xfwm' >> $HOME/.xinitrc
  087 echo 'Starting xfce...'
  088 startx
  089 else
  090 echo 'XFCE is not installed on your system!'
  091 fi
  092 ;;
  093 3)
  094 echo 'You chosed icewm'
  095 if [ -f `which icewm` ];then
  096 writerc
  097 echo 'xsetbg -onroot /root/wall.jpg &' >> $HOME/.xinitrc
  098 echo 'exec icewm' >> $HOME/.xinitrc
  099 echo 'Starting icewm...'
  100 startx
  101 else
  102 echo 'Icewm is not installed on your system!'
  103 fi
  104 ;;
  105 4)
  106 echo 'You chosed mlvwm'
  107 if [ -f `which mlvwm` ];then
  108 writerc
  109 echo 'cd /usr/X11R6/lib/X11/mlvwm' >> $HOME/.xinitrc
  110 echo 'xsetbg -onroot /usr/X11R6/lib/X11/mlvwm/mac.jpg &'>> $HOME/.xinitrc
  111 echo 'exec mlvwm' >> $HOME/.xinitrc
  112 echo 'Starting mlvwm...'
  113 startx
  114 else
  115 echo 'Mlvwm is not installed on your system!'
  116 fi
  117 ;;
  118 5)
  119 echo 'You chosed fvwm95'
  120 if [ -f `which fvwm95` ];then
  121 writerc
  122 echo 'exec fvwm95' >> $HOME/.xinitrc
  123 echo 'Starting fvwm95...'
  124 startx
  125 else
  126 echo 'fvwm95 is not installed on your system!'
  127 fi
  128 ;;
  129 6)
  130 echo 'You chosed AfterStep'
  131 if [ -f `which afterstep` ];then
  132 writerc
  133 echo 'exec afterstep' >> $HOME/.xinitrc
  134 echo 'Starting AfterStep...'
  135 startx
  136 else
  137 echo 'AfterStep is not installed on your system!'
  138 fi
  139 ;;
  140 *)
  141 echo 'No one was chosed.'
  142 esac
  143 #
  144 exit 0
  145 #
  146 # End of the script

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表