Удаленный рабочий стол через xrdp: отсутствующие элементы в меню "Приложения" и апплете индикатора
Я следовал руководству Гриффона по установке xrdp в Ubuntu 18.04 ( http://c-nergy.be/blog/?p=12761), но изменил /etc/xrdp/startwm.sh
использовать его с gnome-flashback-metacity
:
#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession
#gnome-session
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check & gnome-panel
Я мог войти в систему из Windows-клиента (сессия: Xorg), но на рабочем столе, кажется, отсутствуют различные элементы в меню "Приложения" (особенно "Терминал"), а также значки индикаторов. Я мог бы запустить gnome-терминал, используя трюк "щелкните правой кнопкой мыши на Home, Open in Terminal".
NB. Исходя из прошлого опыта, я считаю, что это может быть связано с разрешениями. Тем не менее, я не могу сказать, если это проблема с xrdp или GNOME Flashback или просто плохой конфиг с моей стороны. Обычный вход на физическую машину работает просто отлично.
Текущий /etc/xrdp/startwm.sh:
#!/usr/bin/env bash
#
# This script is an example. You might need to edit this script
# depending on your distro if it doesn't work for you.
#fixGDM-by-Griffon
gnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com
gnome-shell-extension-tool -e ubuntu-dock@ubuntu.com
if [ -f ~/.xrdp-fix-theme.txt ]; then
echo 'no action required'
else
gsettings set org.gnome.desktop.interface gtk-theme 'Ambiance'
#gsettings set org.gnome.desktop.interface icon-theme 'Humanity'
gsettings set org.gnome.desktop.interface icon-theme 'Ubuntu-mono-dark'
echo 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt
fi
#
# Uncomment the following line for debug:
# exec xterm
# Execution sequence for interactive login shell - pseudocode
#
# IF /etc/profile is readable THEN
# execute ~/.bash_profile
# END IF
# IF ~/.bash_profile is readable THEN
# execute ~/.bash_profile
# ELSE
# IF ~/.bash_login is readable THEN
# execute ~/.bash_login
# ELSE
# IF ~/.profile is readable THEN
# execute ~/.profile
# END IF
# END IF
# END IF
pre_start()
{
if [ -r /etc/profile ]; then
. /etc/profile
fi
if [ -r ~/.bash_profile ]; then
. ~/.bash_profile
else
if [ -r ~/.bash_login ]; then
. ~/.bash_login
else
if [ -r ~/.profile ]; then
. ~/.profile
fi
fi
fi
return 0
}
# When loging out from the interactive shell, the execution sequence is:
#
# IF ~/.bash_logout exists THEN
# execute ~/.bash_logout
# END IF
post_start()
{
if [ -r ~/.bash_logout ]; then
. ~/.bash_logout
fi
return 0
}
#start the window manager
wm_start()
{
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
# debian
if [ -r /etc/X11/Xsession ]; then
pre_start
export DESKTOP_SESSION=gnome-flashback-metacity
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export GDMSESSION=gnome-flashback-metacity
export XDG_SESSION_DESKTOP=gnome-flashback-metacity
. /etc/X11/Xsession
post_start
exit 0
fi
# el
if [ -r /etc/X11/xinit/Xsession ]; then
pre_start
. /etc/X11/xinit/Xsession
post_start
exit 0
fi
# suse
if [ -r /etc/X11/xdm/Xsession ]; then
# since the following script run a user login shell,
# do not execute the pseudo login shell scripts
. /etc/X11/xdm/Xsession
exit 0
fi
pre_start
xterm
post_start
}
#. /etc/environment
#export PATH=$PATH
#export LANG=$LANG
# change PATH to be what your environment needs usually what is in
# /etc/environment
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
#export PATH=$PATH
# for PATH and LANG from /etc/environment
# pam will auto process the environment file if /etc/pam.d/xrdp-sesman
# includes
# auth required pam_env.so readenv=1
wm_start
exit 1
Текущая.xsession:
/usr/lib/gnome-session/run-systemd-session gnome-session-flashback.target
1 ответ
Оказывается, это неверный конфиг и неправильное понимание того, как обычно инициализируется среда Flashback GNOME. После просмотра соответствующих файлов конфигурации - /usr/lib/systemd/user/gnome-session.service
а также/usr/share/xsessions/gnome-flashback-metacity.desktop
Я придумал следующие модификации, чтобы эмулировать то же поведение для xrdp:
/etc/xrdp/startwm.sh:
# these global variables are set during normal login through gdm greeter
export DESKTOP_SESSION=gnome-flashback-metacity
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export GDMSESSION=gnome-flashback-metacity
export XDG_SESSION_DESKTOP=gnome-flashback-metacity
Этот экспорт должен быть установлен где-то раньше . /etc/X11/Xsession
(когда начинается xsession)
~ /.xsession:
# starting the session through systemd, just like normal login through gdm greeter
/usr/lib/gnome-session/run-systemd-session gnome-session-flashback.target
Бег gnome-session
команда вызывала непосредственное появление значков индикатора (аналогично апплету на панели Gnome "Индикатор завершен" отсутствуют значки). Так что пока это было решено с использованием run-systemd-session
Я не определил, какая часть начинается gnome-panel
(панель с иконками индикаторов) при обычном входе в систему, поэтому для xrdp xsession мне пришлось добавить gnome-panel
для запуска приложений.