輕松切換X窗口管理器
2024-07-21 02:37:34
供稿:網(wǎng)友
在linux下使用X-Window,當(dāng)你也象Lanche一樣在系統(tǒng)中安裝了七八個窗口治理器時,是否也為選擇啟動哪一個治理器而傷腦筋呢? 因為還沒有在啟動X-Window時可以選擇使用哪一個窗口治理器的好工具,而且只有極少數(shù)的窗口治理器提供直接切換到其它界面的功能,比如在mlvwm中可能通過菜單操作來直接啟動進(jìn)入icewm,而反之在icewm中卻不能直接切換回mlvwm;雖然許多Linux發(fā)行套件都帶有的KDE和Gnome這兩個杰出的桌面操作環(huán)境可以利用swithdesk工具來實現(xiàn)切換,但在切換后仍須重啟動X會話才能進(jìn)入新的桌面環(huán)境。
要在啟動X-Window時可以選擇使用哪一個窗口治理器,其實最簡單的做法就是修改用戶主目錄下的.xinitrc文件,利用它來控制啟動哪一個窗口治理器,這樣做既輕易又不會影響到其它X資源文件或系統(tǒng)的其它用戶。可是每次啟動不同的窗口治理器時都要手動修改.xinitrc文件是不太可取的,為了一勞永逸Lanche就寫了一個叫做xwin的腳本,通過運(yùn)行這個腳本就可以在每次運(yùn)行X-Window時任意選擇想要啟動的Window Manager了。
xwin腳本的清單附后,在此先作一個簡要說明:
清單中的行號只是用于閱讀,在真正的腳本中是沒有行號的;007-014行在首次運(yùn)行本腳本時備份你的.xinitrc文件;016-063行的Functions段有兩個函數(shù),writerc( )函數(shù)將“<< RCFILE”和“RCFILE”之間的HERE文本寫入$HOME/.xinitrc,它是用于運(yùn)行位于$HOME/Desktop/Autostart的啟動組程序的語句,并非是必須的;getchose( )函數(shù)則是顯示選擇菜單;065-144行判定用戶輸入的選擇動態(tài)地修改$HOME/.xinitrc文件然后啟動相應(yīng)的窗口治理器,假如選擇了系統(tǒng)中還沒有安裝的窗口治理器則會給出錯誤提示。
小技巧:利用此腳本,你還可以同時在一臺機(jī)子的七號及八號虛擬控制臺上運(yùn)行兩個完全不同的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