花了2天时间写了一个shell,如果把楼上的软件装全了,再安装上xserver-Xephyr,可以用这个shell文件在来选择和启动这些WM。
注意:要在图形界面(主WM)的一个虚拟桌面上面打开一个终端,在里面调用这个文件。
(有改动:加上了自动KILL进程功能,增加了一些选择的智能化--2011.08.14)
(有改动:加上了Xmonad的支持,去掉了不能正常启动的tritium、larswm,将Stumpwm归类改变到“平铺”类---2011.08.15)
(有改动:WM分类改变了一下,加上了一个:Bluetile----2011.08.16)
(有改动:加上一个“随机抽取WM功能,可以随机搭配组合----2011.08.17”)
[bash]
#!/bin/bash
#xstarter.sh
#need to assign the $TERM comparison to a variable
#same goes for the console comparison
choice=0
choiced=0
choicewm=' '
#下面变量是记录哪些程序被启动,文件结束时,会KILLALL掉他们
Z9wm=0
Aewm=0
Aewmjj=0
Amiwm=0
Afterstep=0
Awesome=0
Blackbox=0
Bluetile=0
Ctwm=0
Dwm=0
E17=0
Evilwm=0
Fluxbox=0
Flwm=0
Fvwm=0
I3=0
Icewm=0
Jwm=0
Kde_window_manager=0
Lwm=0
Metacity=0
Miwm=0
Metacity=0
Olvwm=0
Olwm=0
Openbox=0
Oroborus=0
Parti=0
Pekwm=0
Ratpoison=0
Sapphire=0
Sawfish=0
Scrotwm=0
Stumpwm=0
Tinywm=0
Tritium=0
Vtwm=0
W9wm=0
WindowLab=0
Wm2=0
Wmaker=0
Wmii=0
Xmonad=0
Kmail=0
Kmix=0
Bbrun=0
Asclock=0
Gpe_clock=0
Deskmenu=0
Trayer=0
Lxpanel=0
Tint2=0
Pcmanfm=0
Rox_filer=0
Backstep=0
Wmbubble=0
Wmcpuload=0
Wmforkplop=0
Wmifs=0
Wmmemload=0
Wmmount=0
Gkrellm=0
Gdesklets=0
Conky=0
Parcellite=0
Klipper=0
echo '**********************************'
echo '** Linux WM 搭积木程序 **'
echo '** 通过选择来搭积木 **'
echo '** 请先选择一个WM **'
echo '** 然后逐步选择其他组件 **'
echo '** 最后搭建出来一个linux桌面 **'
echo '**********************************'
echo '**********************************'
echo '** 请先选择WM类型 **'
echo '**********************************'
WML_LIST=( '直接退出' '适合“搭积木”的' 'box类' 'fvwm、Wmaker、AfterStep类' '虚拟视窗类' '平铺类' '微型WM' '无使用价值和无法使用的' '搭配好的组合' '随机产生组合' )
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WML_LIST[$i]} "
done
echo ' '
read -n 1 choice_wml
echo ' '
echo "你选择了:${WML_LIST[$choice_wml]}"
while [ $choice = 0 ] && [ $choice_wml != 0 ] && [ $choiced = 0 ]; do
case ${WML_LIST[$choice_wml]} in
直接退出)
;;
适合“搭积木”的)
echo '********************************************'
echo '** 现在开始选择我适合搭积木的WM **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'Sawfish' 'Flwm' 'metacity' 'Jwm' 'evilwm' 'Icewm' 'Oroborus' 'kde_window_manager')
TOTAL_WMS=8
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo ' '
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
Sawfish)
DISPLAY=:6 sawfish &
Sawfish=1
;;
Flwm)
DISPLAY=:6 flwm &
Flwm=1
;;
metacity)
DISPLAY=:6 exec metacity &
Metacity=1
;;
Jwm)
DISPLAY=:6 jwm &
Jwm=1
echo '** JWM自带面板、托盘和时钟, **'
;;
evilwm)
DISPLAY=:6 evilwm &
Evilwm=1
echo '** 请用CTRL+ALT+鼠标来控制调整窗口 **'
echo '** 请用CTRL+ALT+ESC 关闭窗口 **'
echo '** 请用CTRL+ALT+Return打开终端 **'
echo '** 其他快捷键请查询帮助 **'
;;
Icewm)
DISPLAY=:6 icewm &
Icewm=1
echo '** Icewm自带面板、托盘和时钟, **'
;;
kde_window_manager)
DISPLAY=:6 kwin &
Kwin=1
;;
Oroborus)
DISPLAY=:6 oroborus &
Oroborus=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
box类)
echo '********************************************'
echo '** 此类可定义自启动程序 **'
echo '** 注意不要重复启动和冲突 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'fluxbox' 'blackbox' 'Openbox' 'Sapphire')
TOTAL_WMS=4
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
fluxbox)
DISPLAY=:6 fluxbox &
Fluxbox=1
;;
blackbox)
DISPLAY=:6 blackbox &
Blackbox=1
;;
Openbox)
DISPLAY=:6 openbox &
Openbox=1
;;
Sapphire)
DISPLAY=:6 sapphire &
Sapphire=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
fvwm、Wmaker、AfterStep类)
echo '********************************************'
echo '** 注意 此类WM自带壁纸 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'fvwm' 'Wmaker' 'AfterStep' 'e17')
TOTAL_WMS=4
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
fvwm)
DISPLAY=:6 exec fvwm &
Fvwm=1
;;
Wmaker)
DISPLAY=:6 exec wmaker &
Wmaker=1
;;
AfterStep)
DISPLAY=:6 afterstep &
Afterstep=1
;;
e17)
DISPLAY=:6 enlightenment_start &
E17=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
虚拟视窗类)
echo '********************************************'
echo '** 此类与面板、桌面无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'olvwm' 'VTWM' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
olvwm)
DISPLAY=:6 olvwm &
Olvwm=1
;;
VTWM)
DISPLAY=:6 vtwm &
Vtwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
平铺类)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'ratpoison' 'StumpWM' 'awesome' 'dwm' 'i3' 'Xmonad' 'wmii' 'Bluetile')
TOTAL_WMS=8
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
awesome)
DISPLAY=:6 awesome &
Awesome=1
;;
dwm)
DISPLAY=:6 dwm &
Dwm=1
;;
i3)
DISPLAY=:6 i3 &
I3=1
;;
ratpoison)
DISPLAY=:6 ratpoison &
Ratpoison=1
;;
StumpWM)
DISPLAY=:6 stumpwm &
Stumpwm=1
;;
Xmonad)
DISPLAY=:6 xmonad &
Xmonad=1
;;
wmii)
DISPLAY=:6 wmii &
Wmii=1
;;
Bluetile)
DISPLAY=:6 bluetile &
Bluetile=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
微型WM)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'ctwm' 'LWM' 'MIWM' 'pekwm' 'TinyWM' 'WindowLab' 'wm2')
TOTAL_WMS=7
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
ctwm)
DISPLAY=:6 ctwm &
Ctwm=1
;;
LWM)
DISPLAY=:6 lwm &
Lwm=1
;;
MIWM)
DISPLAY=:6 miwm &
Miwm=1
;;
pekwm)
DISPLAY=:6 pekwm &
Pekwm=1
;;
TinyWM)
DISPLAY=:6 tinywm &
Tinywm=1
;;
WindowLab)
DISPLAY=:6 windowlab &
Windowlab=1
;;
wm2)
DISPLAY=:6 wm2 &
Wm2=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
无使用价值和无法使用的)
echo '********************************************'
echo '** 此类与面板、桌面可能无法配合 **'
echo '** 此类WM也许有BUG,慎用 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' '9wm' 'aewm' 'aewm++' 'olwm' 'w9wm' 'Scrotwm' 'tritium' 'Parti' 'amiwm')
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
9wm)
DISPLAY=:6 9wm &
Z9wm=1
;;
aewm)
DISPLAY=:6 aewm &
Aewm=1
;;
aewm++)
DISPLAY=:6 aewm++ &
Aewmjj=1
DISPLAY=:6 aewm++_appbar &
DISPLAY=:6 aewm++_fspanel &
;;
olwm)
DISPLAY=:6 olwm &
Olwm=1
;;
w9wm)
DISPLAY=:6 w9wm &
W9wm=1
;;
Scrotwm)
DISPLAY=:6 scrotwm &
Scrotwm=1
;;
tritium)
DISPLAY=:6 tritium &
Tritium=1
;;
Parti)
DISPLAY=:6 parti &
Parti=1
;;
amiwm)
DISPLAY=:6 amiwm &
Amiwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
搭配好的组合)
echo '********************************************'
echo '** 此类与面板、桌面已经搭配 **'
echo '** 请先选择一个WM **'
echo '** 选择后会全屏进入这个WM **'
echo '** 你可以尝试一下并记录需要补充什么 **'
echo '** 然后需要切换回这个窗口来继续选择 **'
echo '********************************************'
WM_LIST=( '返回上层' 'awesome(定制)' 'openbox(定制)' 'jwm(定制)' )
TOTAL_WMS=3
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${WM_LIST[$choice]}"
if [ $choice != 0 ];then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
fi
case ${WM_LIST[$choice]} in
awesome(定制))
DISPLAY=:6 exec awesome &
DISPLAY=:6 geany &
DISPLAY=:6 dolphin &
DISPLAY=:6 sakura &
DISPLAY=:6 chromium-browser &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Awesome=1
Parcellite=1
;;
openbox(定制))
DISPLAY=:6 openbox &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Openbox=1
Parcellite=1
;;
jwm(定制))
DISPLAY=:6 jwm &
DISPLAY=:6 rox-filer -p default &
DISPLAY=:6 parcellite &
DISPLAY=:6 fcitx &
Rox_filer=1
Parcellite=1
Jwm=1
;;
*)
;;
esac
choicewm="${WM_LIST[$choice]}"
;;
随机产生组合)
# icewm/jwm(不能使用面板托盘)
# evilwm/oroborus/metacity/kwin(只能使用lxpanel)
# wmii/Bluetile/dwm/ratpoison/stumpwm/flwm/Sawfish/fluxbox/blackbox/Openbox/pekwm/fvwm/Wmaker/AfterStep(选择面板或者托盘)
# wmii/Bluetile/dwm/ratpoison/stumpwm/fvwm/afterstep(不能选择桌面,其他随机桌面)
SWM_LIST=( 'sawfish' 'flwm' 'metacity' 'jwm' 'evilwm' 'icewm' 'oroborus' 'kwin' 'fluxbox' 'blackbox' 'openbox' 'fvwm' 'wmaker' 'afterstep' 'enlightenment_start' 'ratpoison' 'stumpwm' 'awesome' 'dwm' 'i3' 'xmonad' 'wmii' 'bluetile' 'pekwm' 'wm2')
S_RUN=2
while [ $S_RUN = 2 ];
do
CMD1=' '
CMD2='无'
CMD2_2=' '
CMD3='无'
CMD4='无'
CMD4_2=' '
rand=40
top=25
while [ "$rand" -ge $top ];
do
rand=$RANDOM
done
CMD1="${SWM_LIST[$rand]}"
if [ $CMD1 != 'awesome' ] && [ $CMD1 != 'enlightenment_start' ] ;then
if [ $CMD1 != 'icewm' ] && [ $CMD1 != 'jwm' ] ; then
if [ $CMD1 == 'evilwm' ] || [ $CMD1 == 'oroborus' ] || [ $CMD1 == 'metacity' ] || [ $CMD1 == 'kwin' ] ;then
CMD2='lxpanel'
else
rand=200
top=99
while [ "$rand" -ge $top ]; do
rand=$RANDOM
done
if [ "$rand" -ge 49 ]; then
CMD2='lxpanel'
else
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
fi
fi
fi
if [ $CMD1 != 'wmii' ] && [ $CMD1 != 'bluetile' ] && [ $CMD1 != 'dwm' ] && [ $CMD1 != 'ratpoison' ] && [ $CMD1 != 'stumpwm' ] && [ $CMD1 != 'pekwm' ] && [ $CMD1 != 'xmonad' ] && [ $CMD1 != 'fvwm' ] && [ $CMD1 != 'afterstep' ]; then
rand=200
top=99
while [ "$rand" -ge $top ]; do
rand=$RANDOM
done
if [ "$rand" -ge 49 ]; then
CMD4='rox-filer'
CMD4_2=' -p default'
else
CMD4='pcmanfm'
CMD4_2=' --desktop'
fi
fi
fi
if [ $CMD1 == 'E17' ]; then
CMD2='trayer'
CMD2_2=' --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request'
CMD3='gpe-clock'
fi
echo "随机抽取到以下组件:"
echo "窗口管理器: $CMD1"
if [ $CMD3 != '无' ]; then
echo "面 板: $CMD2 $CMD3"
else
echo "面 板: $CMD2"
fi
echo "桌 面: $CMD4"
echo "请选择:"
choicewm='随机组合'
SF_LIST=( '回主菜单' '确认并启动' '重新随机' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${SF_LIST[$i]} "
done
echo ' '
read -n 1 S_RUN
if [ $S_RUN = 1 ]; then
Xephyr :6 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=euro -noreset -host-cursor -dpi 96 -ac -name wm -title wm &
sleep 3
DISPLAY=:6 $CMD1 &
if [ $CMD2 != '无' ]; then
DISPLAY=:6 $CMD2 $CMD2_2 &
fi
if [ $CMD3 != '无' ]; then
DISPLAY=:6 $CMD3 &
fi
if [ $CMD4 != '无' ]; then
DISPLAY=:6 $CMD4 $CMD4_2 &
fi
DISPLAY=:6 fcitx &
DISPLAY=:6 parcellite &
fi
done
case ${SF_LIST[$S_RUN]} in
确认并启动)
choice=1
echo '** 选择 是否帮你关闭和退出 **'
IP_LIST=( '直接回到命令行' '关闭所有选择打开的程序' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
关闭所有选择打开的程序)
if [ $CMD4 != '无' ]; then
killall $CMD4 &
fi
if [ $CMD2 != '无' ]; then
killall $CMD2 &
fi
if [ $CMD3 != '无' ]; then
killall $CMD3 &
fi
killall $CMD1
;;
*)
;;
esac
;;
回主菜单)
choice=0
;;
*)
;;
esac
;;
*)
;;
esac
if [ $choice = 0 ]; then
clear
echo '**********************************'
echo '** Linux WM 搭积木程序 **'
echo '** 通过选择来搭积木 **'
echo '** 请先选择一个WM **'
echo '** 然后逐步选择其他组件 **'
echo '** 最后搭建出来一个linux桌面 **'
echo '**********************************'
echo '**********************************'
echo '** 请先选择WM类型 **'
echo '**********************************'
WML_LIST=( '直接退出' '适合“搭积木”的' 'box类' 'fvwm、Wmaker、AfterStep类' '虚拟视窗类' '平铺类' '微型WM' '无使用价值和无法使用的' '搭配好的组合' '随机产生组合')
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${WML_LIST[$i]} "
done
echo ' '
read -n 1 choice_wml
echo " "
echo "你选择了:${WML_LIST[$choice_wml]}"
else
choiced=1
fi
done
if [ $choice_wml != 0 ] && [ $choice_wml != 9 ]; then
if [ $choicewm != "awesome(定制)" ] && [ $choicewm != "openbox(定制)" ] && [ $choicewm != "jwm(定制)" ] && [ $choicewm != "olvwm" ] && [ $choicewm != "VTWM" ] && [ $choicewm != "i3" ] && [ $choicewm != "TinyWM" ] && [ $choicewm != "WindowLab" ] && [ $choicewm != "ctwm" ]; then
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "wmii" ] && [ $choicewm != "ratpoison" ] && [ $choicewm != "Xmonad" ] && [ $choicewm != "StumpWM" ] && [ $choicewm != "pekwm" ] && [ $choicewm != "fvwm" ] && [ $choicewm != "AfterStep" ]; then
echo '** 选择 桌面和图标 **'
ZM_LIST=( '都不启动' 'Rox-filer' 'PcmanFM' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${ZM_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${ZM_LIST[$choice]}"
case ${ZM_LIST[$choice]} in
Rox-filer)
DISPLAY=:6 rox-filer -p default &
Rox_filer=1
;;
PcmanFM)
DISPLAY=:6 pcmanfm --desktop &
Pcmanfm=1
;;
*)
;;
esac
else
echo '** 这个WM不能使用桌面和图标 **'
fi
if [ $choicewm != "Icewm" ] && [ $choicewm != "Jwm" ] && [ $choicewm != "Flwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "Xmonad" ]; then
if [ $choicewm == "evilwm" ] || [ $choicewm == "metacity" ] || [ $choicewm == "Oroborus" ] || [ $choicewm == "kde_window_manager" ];then
echo '** 你选择的WM本身没有任何菜单 **'
echo '** 强制选择”Lxpanel(带菜单面板)“ **'
DISPLAY=:6 lxpanel &
Lxpanel=1
else
echo ''
echo ''
echo '** 选择面板和托盘 **'
PA_LIST=( '都不启动' 'Trayer(托盘)' 'Tint2(面板)' 'Lxpanel(带菜单面板)' )
TOTAL_WMS=3
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${PA_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${PA_LIST[$choice]}"
case ${PA_LIST[$choice]} in
Trayer(托盘))
DISPLAY=:6 trayer --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request &
Trayer=1
echo ' '
echo ''
echo '** 选择 托盘时钟 **'
CK_LIST=( '不启动' 'gpe-clock(托盘时钟)' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CK_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CK_LIST[$choice]}"
case ${CK_LIST[$choice]} in
gpe-clock(托盘时钟))
DISPLAY=:6 gpe-clock &
Gpe_clock=1
;;
不启动)
;;
*)
;;
esac
;;
Tint2(面板))
DISPLAY=:6 tint2 &
Tint2=1
;;
Lxpanel(带菜单面板))
DISPLAY=:6 lxpanel &
Lxpanel=1
;;
都不启动)
;;
*)
;;
esac
fi
else
if [ $choicewm == "Flwm" ] || [ $choicewm == "Xmonad" ]; then
echo '** 这个 WM 与面板配合效果不好 **'
echo '** 强制选择 Trayer(托盘)+ gpe-clock **'
DISPLAY=:6 trayer --expand true --transparent true --alpha 255 --edge bottom --align right --expand true --SetDockType true --widthtype request &
DISPLAY=:6 gpe-clock &
Gpe_clock=1
Trayer=1
else
echo '** 忽略对面板和时钟的选择 **'
fi
fi
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "Xmonad" ]; then
echo '** 选择 是否启动独立时钟 **'
CK_LIST=( '不启动' 'asclock(独立时钟)' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CK_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CK_LIST[$choice]}"
case ${CK_LIST[$choice]} in
asclock(独立时钟))
echo '** 选择 时钟样式 **'
CF_LIST=( ' ' 'classic' 'Orb' 'Stone' 'Newstone' 'Freeamp' 'Freeamp-es' 'penguin' 'shaped' 'beats' )
TOTAL_WMS=9
for ((i=1; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${CF_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${CF_LIST[$choice]}"
case ${CF_LIST[$choice]} in
classic)
DISPLAY=:6 asclock -theme classic &
;;
Orb)
DISPLAY=:6 asclock -theme Orb &
;;
Stone)
DISPLAY=:6 asclock -theme Stone &
;;
Newston)
DISPLAY=:6 asclock -theme Newston &
;;
Freeamp)
DISPLAY=:6 asclock -theme Freeamp &
;;
Freeamp-es)
DISPLAY=:6 asclock -theme Freeamp-es &
;;
penguin)
DISPLAY=:6 asclock -theme penguin &
;;
shaped)
DISPLAY=:6 asclock -theme shaped &
;;
beats)
DISPLAY=:6 asclock -theme beats &
;;
*)
;;
esac
Asclock=1
;;
不启动)
;;
*)
;;
esac
else
echo '** 这个WM不能使用桌面部件 **'
fi
echo '** 选择 全局剪切板 **'
PT_LIST=( '不启用' 'Parcellite' 'Klipper' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${PT_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${PT_LIST[$choice]}"
case ${PT_LIST[$choice]} in
Parcellite)
DISPLAY=:6 parcellite &
Parcellite=1
;;
Klipper)
DISPLAY=:6 klipper &
Klipper=1
;;
不启用)
;;
*)
;;
esac
clear
echo '** 选择 输入法 **'
IP_LIST=( '不启用' 'Fcitx' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
Fcitx)
DISPLAY=:6 fcitx &
;;
不启用)
;;
*)
;;
esac
clear
echo '** 选择 音量控制 **'
IP_LIST=( '不启用' 'KMix' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
KMix)
DISPLAY=:6 kmix &
Kmix=1
;;
不启用)
;;
*)
;;
esac
else
echo '** 由于WM不支持(或已定制) **'
echo '** 已经忽略对桌面、面板、输入法 **'
echo '** 音量控制、剪切板、时钟的选择 **'
echo '** 如果确有需要,请到WM中去启动 **'
fi
if [ $choicewm != "dwm" ] && [ $choicewm != "awesome" ] && [ $choicewm != "i3" ] && [ $choicewm != "Xmonad" ]; then
echo ' '
echo '** 选择 系统监控 **'
IP_LIST=( '不启用' 'conky' 'gkrellm' )
TOTAL_WMS=2
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
conky)
DISPLAY=:6 conky -c ~/.conky/conky_right -quiet &
Conky=1
;;
gkrellm)
DISPLAY=:6 gkrellm &
Gkrellm=1
;;
不启用)
;;
*)
;;
esac
sleep 2
choice=1
clear
while [ $choice != 0 ]; do
clear
echo '** 选择 可选组件 **'
echo '** 本选项将反复出现,以便多选 **'
echo '** 按 0 退出 **'
IP_LIST=( '退出' 'bbrun(“运行”按钮)' 'wmmemload(内存状况)' 'wmmount(硬盘空间)' 'wmifs(网络)' 'Wmforkplop(进程)' 'WMCPULoad(cpu)' 'kmail(邮件监控)' 'Backstep(缩小窗口为图标)' 'DeskMenu(桌面菜单)' 'gdesklets(桌面部件)' )
TOTAL_WMS=9
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
kmail(邮件监控))
DISPLAY=:6 kmail &
Kmail=1
;;
bbrun(“运行”按钮))
DISPLAY=:6 bbrun &
Bbrun=1
;;
Backstep(缩小窗口为图标))
DISPLAY=:6 backstep &
Backstep=1
;;
wmmemload(内存状况))
DISPLAY=:6 wmmemload &
Wmmemload=1
;;
wmmount(硬盘空间))
DISPLAY=:6 wmmount &
Wmmount=1
;;
WMCPULoad(cpu))
DISPLAY=:6 wmcpuload &
Wmcpuload=1
;;
wmifs(网络))
DISPLAY=:6 wmifs &
Wmifs=1
;;
Wmforkplop(进程))
DISPLAY=:6 wmforkplop &
Wmforkplop=1
;;
DeskMenu(桌面菜单))
DISPLAY=:6 deskmenu &
Deskmenu=1
;;
gdesklets(桌面部件))
DISPLAY=:6 gdesklets &
Gdesklets=1
;;
*)
;;
esac
done
else
echo '** 这个WM不能使用桌面部件 **'
fi
echo '**************************************'
echo '** 积木搭建成功,祝你愉快 **'
echo '**************************************'
#下面开始KILLALL掉进程
echo '** 选择 是否帮你关闭和退出 **'
IP_LIST=( '直接回到命令行' '关闭所有选择打开的程序' )
TOTAL_WMS=1
for ((i=0; i<=$TOTAL_WMS; i++))
do
echo "** $i. ${IP_LIST[$i]}"
done
echo ' '
read -n 1 choice
echo " "
echo "你选择了:${IP_LIST[$choice]}"
case ${IP_LIST[$choice]} in
关闭所有选择打开的程序)
if [ $Kmail == 1 ]; then
killall kmail &
fi
if [ $Kmix == 1 ]; then
killall kmix &
fi
if [ $Bbrun == 1 ]; then
killall bbrun &
fi
if [ $Asclock == 1 ]; then
killall asclock &
fi
if [ $Gpe_clock == 1 ]; then
killall gpe-clock &
fi
if [ $Deskmenu == 1 ]; then
killall deskmenu &
fi
if [ $Trayer == 1 ]; then
killall trayer &
fi
if [ $Lxpanel == 1 ]; then
killall lxpanel &
fi
if [ $Tint2 == 1 ]; then
killall tint2 &
fi
if [ $Pcmanfm == 1 ]; then
killall pcmanfm &
fi
if [ $Rox_filer == 1 ]; then
killall rox-filer &
fi
if [ $Backstep == 1 ]; then
killall backstep &
fi
if [ $Wmbubble == 1 ]; then
killall wmbubble &
fi
if [ $Wmcpuload == 1 ]; then
killall wmcpuload &
fi
if [ $Wmforkplop == 1 ]; then
killall wmforkplop &
fi
if [ $Wmifs == 1 ]; then
killall wmifs &
fi
if [ $Wmmemload == 1 ]; then
killall wmmemload &
fi
if [ $Wmmount == 1 ]; then
killall wmmount &
fi
if [ $Gkrellm == 1 ]; then
killall gkrellm &
fi
if [ $Gdesklets == 1 ]; then
killall gdesklets &
fi
if [ $Conky == 1 ]; then
killall conky &
fi
if [ $Parcellite == 1 ]; then
killall parcellite &
fi
if [ $Klipper == 1 ]; then
killall klipper &
fi
if [ $Z9wm == 1 ]; then
killall 9wm &
fi
if [ $Aewm == 1 ]; then
killall awm &
fi
if [ $Aewmjj == 1 ]; then
killall aewm* &
fi
if [ $Amiwm == 1 ]; then
killall amiwm &
fi
if [ $Afterstep == 1 ]; then
killall afterstep &
fi
if [ $Awesome == 1 ]; then
killall awesome &
fi
if [ $Blackbox == 1 ]; then
killall blackbox &
fi
if [ $Bluetile == 1 ]; then
killall bluetile &
fi
if [ $Ctwm == 1 ]; then
killall ctwm &
fi
if [ $Dwm == 1 ]; then
killall dwm &
fi
if [ $E17 == 1 ]; then
killall enlightenment &
fi
if [ $Evilwm == 1 ]; then
killall evilwm &
fi
if [ $Fluxbox == 1 ]; then
killall fluxbox &
fi
if [ $Flwm == 1 ]; then
killall flwm &
fi
if [ $Fvwm == 1 ]; then
killall fvwm &
fi
if [ $I3 == 1 ]; then
killall i3 &
fi
if [ $Icewm == 1 ]; then
killall icewm &
fi
if [ $Jwm == 1 ]; then
killall jwm &
fi
if [ $Kde_window_manager == 1 ]; then
killall kwin &
fi
if [ $Lwm == 1 ]; then
killall lwm &
fi
if [ $Metacity == 1 ]; then
killall metacity &
fi
if [ $Miwm == 1 ]; then
killall miwm &
fi
if [ $Olvwm == 1 ]; then
killall olvwm &
fi
if [ $Olwm == 1 ]; then
killall olwm &
fi
if [ $Openbox == 1 ]; then
killall openbox &
fi
if [ $Oroborus == 1 ]; then
killall oroborus &
fi
if [ $Parti == 1 ]; then
killall parti &
fi
if [ $Pekwm == 1 ]; then
killall pekwm &
fi
if [ $Ratpoison == 1 ]; then
killall ratpoison &
fi
if [ $Sapphire == 1 ]; then
killall sapphire &
fi
if [ $Sawfish == 1 ]; then
killall sawfish &
fi
if [ $Scrotwm == 1 ]; then
killall scrotwm &
fi
if [ $Stumpwm == 1 ]; then
killall stumpwm &
fi
if [ $Tinywm == 1 ]; then
killall tinywm &
fi
if [ $Vtwm == 1 ]; then
killall vtwm &
fi
if [ $W9wm == 1 ]; then
killall w9wm &
fi
if [ $WindowLab == 1 ]; then
killall windowLab &
fi
if [ $Wm2 == 1 ]; then
killall wm2 &
fi
if [ $Wmaker == 1 ]; then
killall wmaker &
fi
if [ $Wmii == 1 ]; then
killall wmii &
fi
if [ $Tritium == 1 ]; then
killall tritium &
fi
if [ $Xmonad == 1 ]; then
killall xmonad &
fi
;;
直接回到命令行)
;;
*)
;;
esac
fi
echo '**************************************'
echo '** 谢谢使用,祝你愉快 **'
echo '**************************************'
[/bash]
下面是本程序的执行效果:
初始选单
分别选择初始选单的1-9,出现以下效果:
如果从1-7中选择了一个WM后,需要进行后续的选择。
而8、9两项不需要后续的选择,直接启动进入。
有时本终端窗口会被新选择的WM窗口盖住,为了看到效果,需要用alt-tab之类切换窗口的快捷键来回切换。
有些选择是智能化的,即根据你所选的WM的特点,帮你直接选择一些选项,或者直接避免你选到不合适的选项。
选择过程中有时会受到所选的程序的终端提示的困扰,把选项冲的有点乱。
最终的效果(之一):
然后还有一个选项:
这是为了让你完成工作和测试后,能够比较干净的kill掉进程的,
注意:他会kill掉主WM中同名进程,所以请判断后再选择。