我正在使用 Red Hat 5.6,并且我已经为我的 Unix 用户配置了 VNC,没有任何问题。我能够登录它,它默认为 Gnome。机器上安装了 KDE,我想使用它。下面是我的 ~/.vnc/xstartup 文件。
我尝试用“startkde &”替换下面的twm,但它不起作用。尽管下面显示了 twm,但 Gnome 似乎是默认桌面,即使我更改了它,它也不起作用。即使没有列出桌面,Gnome 仍然会启动。
有谁知道为什么会发生这种情况以及如何启动其他桌面?
#!/bin/sh
# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
vncconfig -nowin &
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
脚本永远不会到达底部,因为“exec”导致当前进程被 exec 的目标替换,在本例中是脚本 /etc/X11/xinit/xinitrc,它源自 /etc/X11 /Xsession 脚本,依次执行 /etc/X11/Xsession.d 的运行部分,调用默认的 x-session-manager,即 gnome-session。
仅记录一个如何启动KDE的示例(适用于Centos7),如下:
#!/bin/sh
[ -r /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
export LANG
export SYSFONT
vncconfig -iconic &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
DSKTPSTARTKDE="$(type -p startkde)"
# KDE.
echo "KDE session"
exec "$DSKTPSTARTKDE"
下面是在 Centos7 上启动 KDE、MATE 或 Gnome 的更复杂的原始版本。
#!/bin/sh
[ -r /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n
export LANG
export SYSFONT
vncconfig -iconic &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
case "$WINDOWMANAGER" in
*gnome*)
if [ -e /etc/SuSE-release ]; then
PATH=$PATH:/opt/gnome/bin
export PATH
fi
;;
esac
fi
## select a desktop preference MATE, KDE, DEFAULT.
# comment out mate to get kde, etc. If not there then will try the next.
#DSKTPMSESSION="$(type -p mate-session)"
DSKTPSTARTKDE="$(type -p startkde)"**
#DSKTPGSESSION="$(type -p gnome-session)"
if [ -n "$DSKTPMSESSION" ]; then
# if MATE run that.
echo "MATE session"
# Start up the standard mate desktop
exec "$DSKTPMSESSION"
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
x-window-manager &
elif [ -n "$DSKTPSTARTKDE" ]; then
# if MATE isn't installed, try KDE.
echo "KDE session"
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec "$DSKTPSTARTKDE"
elif [ -n "$DSKTPGSESSION" ]; then
################################ !!!!!!!!!!!!!!!!!! doesn't work
# echo "DESKTOP=KDE" > /etc/sysconfig/desktop
# KDE default on montpelier tricky to get back to gnome-classic
# if MATE and KDE isn't installed, try Gnome3 or 2.
echo "Gnome session"
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export GNOME_SHELL_SESSION_MODE=classic
if [ -x /etc/X11/xinit/xinitrc ]; then
exec /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
exec sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xset r off # switch off key repeat
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
exec "$DSKTPGSESSION"
# below didn't work
# exec "$DSKTPGSESSION --session=gnome-classic"
################ Still shows KDE on montpelier drat!!!!!!!!
else
## else is go with whatever is the standard probably GNOME3 on centos7
## echo "DESKTOP=KDE" > /etc/sysconfig/desktop ;# can switch the default
echo "DEFAULT session"
if [ -x /etc/X11/xinit/xinitrc ]; then
exec /etc/X11/xinit/xinitrc
fi
if [ -f /etc/X11/xinit/xinitrc ]; then
exec sh /etc/X11/xinit/xinitrc
fi
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xset r off # switch off key repeat
xsetroot -solid grey
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &
fi
只是想补充一点,在将 exec 放在配置文件的底部之后,这在我的 rhel9 上有效。
#!/bin/sh
取消设置SESSION_MANAGER vncconfig -nowin &
[ -x /etc/vnc/xstartup ] && 执行 /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot - 纯灰色 vncconfig - 标志性的 & xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP 桌面" & TWM &
执行/etc/X11/xinit/xinitrc