讨论KDE、Gnome、Xfce、LXDE、openbox、awesome、FVWM等WM
-
tank_dr
- 帖子: 13
- 注册时间: 2012-05-26 8:31
-
送出感谢:
1 次
-
接收感谢:
0
#1
帖子
由 tank_dr » 2013-05-22 15:37
因为长期使用xfreerdp登陆Windows,Super键与Unity重叠,加上不能快速切出到ubuntu桌面,就产生了这个"远程桌面独占一个终端"的想法。这样也就可以完全避开一些Windows的常用快捷键了,不知道有人这么弄过没有?
看到如下session,怎样能做到登陆后只运行一个最简单的桌面和xfreerdp呢?
代码: 全选
$ ls /usr/share/xsessions
cairo-dock.desktop gnome-classic.desktop gnome-shell.desktop
cairo-dock-fallback.desktop gnome.desktop ubuntu-2d.desktop
cairo-dock-unity.desktop gnome-fallback.desktop ubuntu.desktop
$ cat /usr/share/xsessions/gnome-shell.desktop
[Desktop Entry]
Name=GNOME
Comment=This session logs you into GNOME
Exec=gnome-session --session=gnome
TryExec=gnome-shell
Icon=
Type=Application
X-Ubuntu-Gettext-Domain=gnome-session-3.0
上次由
tank_dr 在 2013-05-30 16:21,总共编辑 2 次。
-
tank_dr
- 帖子: 13
- 注册时间: 2012-05-26 8:31
-
送出感谢:
1 次
-
接收感谢:
0
#3
帖子
由 tank_dr » 2013-05-30 15:01
lanjian9151 写了:新开一个X,把xfreedp显示在新X上就行了。
只知道xfreerdp有个-X的参数,就是不会用的说:
-X: embed into another window with a given XID.
找到一条这样的例子(
xinit.1.html#toc3):
xinit /usr/ucb/rsh fasthost cpupig -display ws:1 -- :1 -a 2 -t 5
This will start a server named X on display 1 with the arguments -a 2 -t 5. It will then start a remote shell on the machine fasthost in which it will run the command cpupig, telling it to display back on the local workstation.
我的启动文件大概要是这样子的吧:
代码: 全选
$ cat /usr/share/xsessions/rdp-init
#!/bin/sh
RGEO=1024x800
RUSR=xxxx
RPSW=xxxx
R_IP=xx.xx.xx.xx
RPORT=80
RDP_ADD=--plugin rdpdr --data disk:Downloads:/home/tank/Downloads -- -a 16 -f --app -x l -z --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming
/usr/bin/xfreerdp -g $RGEO -u ${RUSR} -p ${RPSW} ${RDP_ADD} -o -t ${RPORT} ${R_IP} &
EOF
$ cat /usr/share/xsessions/XrdpS
RGEO=1024x800
/usr/bin/xinit /usr/share/xsessions/rdp-init -- :0 -- /usr/bin/X11/X -geometry ${RGEO}-0+0 -nolisten tcp "[email protected]" &
xscreensaver -no-splash &
EOF
还有就是"X: usr not authorized to run X server, aborting."怎么破啊?(我有限制tty的数量为7个)
再比如说:想在tty6登入后直接进xfreerdp的X,不清楚是在哪个启动步骤里处理/etc/X11/default-display-manager这个文件的,所以也一直都没弄明白是哪里设置tty7是直接启动lighdm了。从Ubuntu开始搞upstart就更不清楚了。
难道是直接像下面这样做下去?
代码: 全选
$ less ~/.bashrc
# enable chinese inputer in ttys
alias fbterm="LC_CTYPE=zh_CN.UTF-8 ucimf_keyboard && fbterm -i fbterm_ucimf"
alias zhterm="LC_CTYPE=zh_CN.UTF-8 && zhcon --utf8 --drv=fb"
if [ "x$TERM" = "xlinux" ] ; then
[[ $(tty) == \/dev\/tty[1] ]] && fbterm
[[ $(tty) == \/dev\/tty[2] ]] && zhterm
#[[ $(tty) == \/dev\/tty[6] ]] && /usr/share/xsessions/XrdpS
fi
-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#4
帖子
由 lanjian9151 » 2013-05-30 15:49
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac - terminat &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
-
tank_dr
- 帖子: 13
- 注册时间: 2012-05-26 8:31
-
送出感谢:
1 次
-
接收感谢:
0
#5
帖子
由 tank_dr » 2013-05-30 16:17
lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac -terminate &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
原来DISPLAY是这么玩的

-
hawkIdeality
- 帖子: 411
- 注册时间: 2012-05-14 18:39
-
送出感谢:
5 次
-
接收感谢:
8 次
#6
帖子
由 hawkIdeality » 2013-05-30 16:56
tank_dr 写了:lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac -terminate &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
原来DISPLAY是这么玩的

就是就是。不说我都不知道。。。

崩溃是不可抗拒滴
攒钱买(第?台)macbook,然后装ubuntu
那些说unity找不到应用程序的人拜托按一下win+A好吗?
Novelty, Novelty, Give Me Novelty
发表Linux、Win、OS X的对比帖时,建议您确认一下您真的用过Linux&&Win&&OS X,而不是用过Linux||Win||OS X。
吾乃古剑奇谭NC粉!
-
hawkIdeality
- 帖子: 411
- 注册时间: 2012-05-14 18:39
-
送出感谢:
5 次
-
接收感谢:
8 次
#7
帖子
由 hawkIdeality » 2013-05-30 17:18
lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac - terminat &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
这个到底怎么玩啊?我做到第2步以后,屏幕就黑了。我按ctrl+alt+F7切回原来的桌面,再做第3步。可是按ctrl+alt+F3也切不回那个黑屏的界面啊。我打开个gedit,按ctrl+alt+F3也没有把gedit切换到新桌面啊?
崩溃是不可抗拒滴
攒钱买(第?台)macbook,然后装ubuntu
那些说unity找不到应用程序的人拜托按一下win+A好吗?
Novelty, Novelty, Give Me Novelty
发表Linux、Win、OS X的对比帖时,建议您确认一下您真的用过Linux&&Win&&OS X,而不是用过Linux||Win||OS X。
吾乃古剑奇谭NC粉!
-
hawkIdeality
- 帖子: 411
- 注册时间: 2012-05-14 18:39
-
送出感谢:
5 次
-
接收感谢:
8 次
#8
帖子
由 hawkIdeality » 2013-05-30 17:22
哦,有了有了,做第3步之前要打开一个新的terminal才行。
崩溃是不可抗拒滴
攒钱买(第?台)macbook,然后装ubuntu
那些说unity找不到应用程序的人拜托按一下win+A好吗?
Novelty, Novelty, Give Me Novelty
发表Linux、Win、OS X的对比帖时,建议您确认一下您真的用过Linux&&Win&&OS X,而不是用过Linux||Win||OS X。
吾乃古剑奇谭NC粉!
-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#9
帖子
由 lanjian9151 » 2013-05-31 10:27
tank_dr 写了:lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac -terminate &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
原来DISPLAY是这么玩的

一般wine过war3的都知道啊

-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#10
帖子
由 lanjian9151 » 2013-05-31 10:27
hawkIdeality 写了:tank_dr 写了:lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac -terminate &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
原来DISPLAY是这么玩的

就是就是。不说我都不知道。。。

难道你也没wine过war3啊?
-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#11
帖子
由 lanjian9151 » 2013-05-31 10:32
hawkIdeality 写了:lanjian9151 写了:
1. 运行一个终端模拟器
2. 新开一个X会话
代码: 全选
X :3 -ac - terminat &
3. 更改当前终端模拟器的DISPLAY
4. 运行你想运行的软件,这时则可用ctrl+alt+Fx来切换不同的X
这个到底怎么玩啊?我做到第2步以后,屏幕就黑了。我按ctrl+alt+F7切回原来的桌面,再做第3步。可是按ctrl+alt+F3也切不回那个黑屏的界面啊。我打开个gedit,按ctrl+alt+F3也没有把gedit切换到新桌面啊?
一般来讲X会占用f7-f12的tty,f3当然不行了

-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#12
帖子
由 lanjian9151 » 2013-05-31 10:33
hawkIdeality 写了:哦,有了有了,做第3步之前要打开一个新的terminal才行。
莫非这就是传说中的二般的情况?

-
tank_dr
- 帖子: 13
- 注册时间: 2012-05-26 8:31
-
送出感谢:
1 次
-
接收感谢:
0
#13
帖子
由 tank_dr » 2013-05-31 13:24
lanjian9151 写了:hawkIdeality 写了:哦,有了有了,做第3步之前要打开一个新的terminal才行。
莫非这就是传说中的二般的情况?

没注意 "&" 符号吧,估计是没看到命令提示符,没敢继续输入。
如下继续,搞了个自动切换VT的脚本(chvt需要特定权限,我自已用gksu来跑),取消 -terminate 远程断开后X自动退出的参数。
TODO:不清楚X什么时候会自动退出,也不知怎么强行销毁。
代码: 全选
#!/bin/sh
RGEO=1024x800
RUSR=xxxx
RPSW=xxxx
R_IP=xx.xx.xx.xx
RPORT="3389"
VT_N="8"
RDIS="3"
RMSG="exec_error: /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -novtswitch -background none -nolisten tcp &"
RDP_ADD="--plugin rdpdr --data disk:Downloads:/home/tank/Downloads -- -a 16 -f --app -x l -z -o --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming"
RICO="/usr/share/icons/Humanity/apps/48/application-x-remote-connection.svg"
[ -f /tmp/.X${RDIS}-lock ] || /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -novtswitch -background none -nolisten tcp &
sleep 1
test -f /tmp/.X${RDIS}-lock
if [ $? -eq 0 ] ;then
chvt ${VT_N}
DISPLAY=:${RDIS}
/usr/bin/xfreerdp -g ${RGEO} -u ${RUSR} -p ${RPSW} ${RDP_ADD} -t ${RPORT} ${R_IP}
DISPLAY=:0
chvt 7
RMSG="Disconnected from ${R_IP}:${RPORT}"
fi
notify-send -c "network.disconnected" -u critical -t 1000 -i "${RICO}" "${RMSG} $?"
-
lanjian9151
- 帖子: 403
- 注册时间: 2008-01-09 21:19
- 系统: Gentoo
-
送出感谢:
0
-
接收感谢:
10 次
-
联系:
#14
帖子
由 lanjian9151 » 2013-05-31 17:27
tank_dr 写了:lanjian9151 写了:hawkIdeality 写了:哦,有了有了,做第3步之前要打开一个新的terminal才行。
莫非这就是传说中的二般的情况?

没注意 "&" 符号吧,估计是没看到命令提示符,没敢继续输入。
如下继续,搞了个自动切换VT的脚本(chvt需要特定权限,我自已用gksu来跑),取消 -terminate 远程断开后X自动退出的参数。
TODO:不清楚X什么时候会自动退出,也不知怎么强行销毁。
代码: 全选
#!/bin/sh
RGEO=1024x800
RUSR=xxxx
RPSW=xxxx
R_IP=xx.xx.xx.xx
RPORT="3389"
VT_N="8"
RDIS="3"
RMSG="exec_error: /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -novtswitch -background none -nolisten tcp &"
RDP_ADD="--plugin rdpdr --data disk:Downloads:/home/tank/Downloads -- -a 16 -f --app -x l -z -o --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming"
RICO="/usr/share/icons/Humanity/apps/48/application-x-remote-connection.svg"
[ -f /tmp/.X${RDIS}-lock ] || /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -novtswitch -background none -nolisten tcp &
sleep 1
test -f /tmp/.X${RDIS}-lock
if [ $? -eq 0 ] ;then
chvt ${VT_N}
DISPLAY=:${RDIS}
/usr/bin/xfreerdp -g ${RGEO} -u ${RUSR} -p ${RPSW} ${RDP_ADD} -t ${RPORT} ${R_IP}
DISPLAY=:0
chvt 7
RMSG="Disconnected from ${R_IP}:${RPORT}"
fi
notify-send -c "network.disconnected" -u critical -t 1000 -i "${RICO}" "${RMSG} $?"
如果不加 -terminat参数的话是没法销毁X的。
-
tank_dr
- 帖子: 13
- 注册时间: 2012-05-26 8:31
-
送出感谢:
1 次
-
接收感谢:
0
#15
帖子
由 tank_dr » 2013-06-05 16:56
lanjian9151 写了:如果不加 -terminat参数的话是没法销毁X的。
不知道这里玩VirtualBox的多不,花了些时间改了下,方便自己用。很少玩shell,做法不聪明就更不要说了。
终结版:
- -terminat 参数加了回去。
把脚本扩展了一下,解析脚本同目录下远程登陆的配置文件。
加入VirtualBox的VMrdp启用,类似Windows RDP。
代码: 全选
$ cat Start_xfreerdp.cfg
#IS_VM RDP_Lable RGEO RUSR RPSW R_IP RPORT VT_N RDIS
false HT_.62_rdp 1024x800 bala balabala 172.32.54.12 88 8 1
false test_ask 1024x800 bala <ask> 172.32.54.21 3389 8 2
true Windows XP 1024x800 <skip> <skip> 127.0.0.1 3390 9 3
true Windows 7 1024x800 <skip> <skip> 127.0.0.1 3391 10 4
true Windows 2003 1024x800 <skip> <skip> 127.0.0.1 3392 11 5
代码: 全选
$ cat Start_xfreerdp
#!/bin/sh
VM_RDP="Windows XP"
RGEO="1024x800"
RUSR="test"
RPSW="test"
R_IP="127.0.0.1"
RPORT="3389"
VT_N="8"
RDIS="3"
RMSG=""
RICO="/usr/share/icons/Humanity/apps/48/application-x-remote-connection.svg"
SPLIT_="------------------------------------------------------------"
BAKIFS=${IFS}
IFS=$'\t\n'
RCFG=$0.cfg
RLOG=$0.log
RTMPS=/tmp/.vms
RTMPR=/tmp/.vmr
RTMPC=/tmp/.vmc
#cmds:setvar|getlist|getlist,VM_RDP
function cfg_fun()
{
case $1 in
setvar)
if [ ! -z "$2" ] ;then
cat ${RCFG} | grep -m 1 "$2" > ${RTMPC}
#cat ${RCFG} | grep -m 1 "$2" | sed 's/\t/\n/g'
read ISVM VM_RDP RGEO RUSR RPSW R_IP RPORT VT_N RDIS < ${RTMPC}
fi
;;
getlist)
if [[ `cat "${RCFG}" | grep -v "^#" | cut -f2` ]]; then
rm "${RTMPS}" "${RTMPR}" >/dev/null 2>&1
VBoxManage list vms > "${RTMPS}" 2>&1
if [ $? -eq 0 ] ;then
VBoxManage list runningvms > "${RTMPR}" 2>&1
fi
echo "${SPLIT_}";
[[ `stat -c%s "${RTMPS}"` -gt 0 ]] && echo -e "\033[1m\033[32mSystem VMS:\033[0m\n`cat ${RTMPS}`"
[[ `stat -c%s "${RTMPR}"` -gt 0 ]] && echo -e "\033[1m\033[32mCurrent Running VMS:\033[0m\033[31m\n`cat ${RTMPR}`\033[0m"
fi
;;
genlist)
cat "${RCFG}" | grep -v "^#" | cut -f2
;;
*)
echo "\033[1musage :$0 <setvar|getlist|genlist> <para1>\033[0m"
;;
esac
return $?
}
#<query|setvar <var>>
function vbox_fun()
{
case $1 in
setvar)
[ ! -z $2 ] && VBoxManage showvminfo "${VM_RDP}" --machinereadable 2>/dev/null | grep "^$2=" | cut -d\" -f2
;;
query)
VBoxManage showvminfo "${VM_RDP}" --machinereadable 2>/dev/null | grep -E '(^vrde=|^SharedFolderPathMachineMapping|^VRDE|^vrdeport|^vrdeaddress|^CurrentSnapshotName|^VMState)'
;;
*)
echo "\033[1musage :$0 <setvar <var>|query>\033[0m"
;;
esac
return $?
}
function do_connect()
{
RMSG="\033[1mConnect to ${R_IP}:${RPORT} @ :${RDIS} On tty${VT_N} ...\033[0m"
echo -e "${RMSG}" | tee -a "${RLOG}"
[ -f /tmp/.X${RDIS}-lock ] || /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -terminate -novtswitch -background none -nolisten tcp 2>>"${RLOG}" &
#ps aux | grep `cat /tmp/.X${RDIS}-lock`
#openvt -c ${VT_N} -s -w -l -- /usr/bin/xfreerdp -g "${RGEO}" -u "${RUSR}" -p "${RPSW}" ${RDP_ADD} -t ${RPORT} ${R_IP}
sleep 1
test -f /tmp/.X${RDIS}-lock
if [ $? -eq 0 ] ;then
#chvt ${VT_N}
DISPLAY=:${RDIS}
echo -e "\033[1m/usr/bin/xfreerdp -g \"${RGEO}\" -u \"${RUSR}\" -p \"${RPSW}\" --plugin rdpdr --data disk:Share:/home/tank/Downloads -- -a 16 -f --app -x l -z -o --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming -t ${RPORT} ${R_IP}\033[0m" | tee -a "${RLOG}"
/usr/bin/xfreerdp -g "${RGEO}" -u "${RUSR}" -p "${RPSW}" --plugin rdpdr --data disk:Share:/home/tank/Downloads -- -a 16 -f --app -x l -z -o --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming -t ${RPORT} ${R_IP} &
sleep 3
DISPLAY=:0
#chvt 7
else
RMSG="\033[31merror: /usr/bin/X11/X :${RDIS} -ac vt${VT_N} -terminate -novtswitch -background none -nolisten tcp &\033[0m"
fi
return $?
}
function main()
{
while true
do
echo -e "${RMSG}" | tee -a "${RLOG}"
echo "Parsing config file:\"${RCFG}\""
cfg_fun "getlist"
echo "${SPLIT_}" | tee -a "${RLOG}"
PS3="Choose a RDP for connect:"
echo -ne "\033[33m"
select VM_RDP in `cfg_fun "genlist"` "[jobs]" "[fg]" "[clear]" "[exit]";do
case ${VM_RDP} in
"[jobs]"|"")
echo -e "\033[0m`jobs -l | grep ^\[[0-9]*\][+-]`\033[33m";
;;
"[fg]")
cjb=`jobs -l | grep '^\[[0-9]*\][+]' | sed 's/^\[\([0-9]*\)\].*$/\1/g'`
echo -e "\033[0mSwitch to background jobs:${cjb}\033[33m"
[ ! -z "${cjb}" ] && fg %${cjb}
;;
"[clear]")
clear;
;;
"[exit]")
if [ -z "`jobs -l | grep ^\\[[0-9]*\\][+-]`" ]; then echo -ne "\033[0m"; break 2; else echo -e "\033[1mJobs Exist:\033[0m\n`ps axo ppid,pid,pcpu,stat,tty,command | grep \"^[ ]*$$\" | grep -v \"[RS]+\"`\033[33m"; fi;
;;
*)
break;
;;
esac
done
echo -ne "\033[0m"
cfg_fun "setvar" "${VM_RDP}"
if [ "${ISVM}" == "true" ] ;then
echo "${SPLIT_}"
vbox_fun "query";
if [ $? -gt 0 ] ;then
RMSG="\033[31mVirtualMachine \033[0m\033[36m\"${VM_RDP}\"\033[0m\033[31m Not Found.\033[0m"
continue;
fi
fi
echo "${SPLIT_}"
echo -e "VirtualMachine:<${ISVM}>\n\tname:\"${VM_RDP}\"\n\tScreen:${RGEO}\n\tLoginas:[${RUSR}]\tuse:[${RPSW}]\n\t${R_IP}:${RPORT}\tto tty${VT_N}@:${RDIS}"
if [ "${ISVM}" == "true" ] ;then
if [[ "`vbox_fun \"setvar\" \"VMState\"`" == "running" ]] ;then
if [[ "`vbox_fun \"setvar\" \"VRDEActiveConnection\"`" == "on" ]] ;then
echo -e "\033[31m\033[3mVirtualMachine \033[0m\033[36m\"${VM_RDP}\"\033[0m\033[31m is connected by \033[0m\033[36m`vbox_fun setvar VRDEUserName`\033[0m\033[31m.\033[0m"
fi
fi
fi
Choice="S"
echo "${SPLIT_}"
read -n1 -p "Skip, Connect or Quit? (S/c/q):" Choice
echo
case ${Choice} in
q|Q)
if [ -z "`jobs`" ]; then break; else echo -e "\033[1mJos Exist:\033[0m\n`ps axo ppid,pid,pcpu,stat,tty,command | grep \"^[ ]*$$\"`\033[0m"; continue; fi;
;;
c|C)
;;
*)
RMSG="\033[31mSkiping:\033[3m${VM_RDP}:${RPORT}\033[0m"
continue;
;;
esac
if [ "${ISVM}" == "true" ] ;then
VMState=`vbox_fun "setvar" "VMState"`;
case ${VMState} in
poweroff)
VBoxHeadless --startvm "${VM_RDP}" --vrdeproperty "TCP/Ports=${RPORT}" --vrdeproperty "TCP/Address=${R_IP}" &
sleep 2
if [[ "`vbox_fun \"setvar\" \"VMState\"`" != "running" ]] ;then
RMSG="\033[31mError in starting:\033[3m${VM_RDP}:${RPORT}\033[0m"
continue;
fi
;;
running)
;;
*)
RMSG="\033[31mERROR in quering VBoxState:VMState=\033[3m\"${VMState}\".\033[0m"
continue;
;;
esac
fi
echo "${SPLIT_}"
[ "${RUSR}" == "<skip>" ] && RUSR=""
[ "${RPSW}" == "<skip>" ] && RPSW=""
[ "${RUSR}" == "<ask>" ] && read -p "Input Login User Name[${RUSR}]:" RUSR
[ "${RPSW}" == "<ask>" ] && read -p "PassWord:[${RPSW}]" RPSW
do_connect;
notify-send -c "network.disconnected" -u critical -t 1000 -i "${RICO}" "${RMSG} $?"
done
}
main;
echo -ne "\033[0m"
IFS=${BAKIFS}
exit $?;
P.S.
不明白为什么切换不到后台的程序。