如何通过 XRDP 获得完整的 Ubuntu Gnome 体验而不是通用的 Gnome 体验?
当我从控制台登录时,我获得了 Gnome 的 Ubuntu 定制:Dock 是一个从屏幕一边延伸到另一边的条纹,并且设置应用程序有一个 Dock 条目。
当我通过 XRDP 登录时,它看起来像通用 Gnome:Dock 仅足够容纳其图标,并且“设置”没有 Dock 条目。更重要的是,我的“Ubuntu”桌面上有一堆图标,而“通用”桌面上没有这些图标。
我读过,“Ubuntu 停靠设置只能从 Ubuntu 定制的 GNOME 会话访问,而不能从默认的 GNOME 会话访问”,所以这就是为什么我认为我可以通过 XRDP 获得通用 GNOME。
- 我正在运行 Ubuntu 18.04.3 并选择了“Ubuntu”窗口管理器。
- 我已经安装了 xdrp。
gnome-session --session=ubuntu
我已经使用chmod +x创建了 .xsession 。
在创建之前.xsession
,控制台会话和XDRP 会话ps
均显示。创建(并重新启动)后,两个会话均包含,但 XRDP 会话仍然看起来像通用 Gnome,并且缺少我的桌面图标。gnome-session-binary --session=ubuntu
gnome-session-binary
.xsession
--session=ubuntu
我检查了一下$XDG_CURRENT_DESKTOP
。在控制台上是ubuntu:GNOME
。在 XRDP 上是“GNOME”。所以我启动了,--session=ubuntu
但它似乎已经丢失了。
如何通过 XRDP 获得完整的 Ubuntu Gnome 体验而不是通用的 Gnome 体验?
答案1
他们的 git repo 论坛上有一篇帖子讨论了这个问题这里。激活完整桌面体验的一个相对简单的方法是编辑startwm.sh
位于下面的脚本,/etc/xrdp/startwm.sh
如下所示:
#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licence
if test -r /etc/profile; then
. /etc/profile
fi
if test -r /etc/default/locale; then
. /etc/default/locale
test -z "${LANG+x}" || export LANG
test -z "${LANGUAGE+x}" || export LANGUAGE
test -z "${LC_ADDRESS+x}" || export LC_ADDRESS
test -z "${LC_ALL+x}" || export LC_ALL
test -z "${LC_COLLATE+x}" || export LC_COLLATE
test -z "${LC_CTYPE+x}" || export LC_CTYPE
test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION
test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT
test -z "${LC_MESSAGES+x}" || export LC_MESSAGES
test -z "${LC_MONETARY+x}" || export LC_MONETARY
test -z "${LC_NAME+x}" || export LC_NAME
test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
test -z "${LC_PAPER+x}" || export LC_PAPER
test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
test -z "${LC_TIME+x}" || export LC_TIME
test -z "${LOCPATH+x}" || export LOCPATH
fi
if test -r /etc/profile; then
. /etc/profile
fi
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
笔记:不要删除并替换它,因为这会导致xrdp
启动失败。只需使用例如就地编辑文件即可sed
。在这里,我从第 4 行开始添加了 3 行。它们将从第 4 行附加到第 6 行。
sudo sed -i '4 i\export XDG_CURRENT_DESKTOP=ubuntu:GNOME' /etc/xrdp/startwm.sh
sudo sed -i '4 i\export GNOME_SHELL_SESSION_MODE=ubuntu' /etc/xrdp/startwm.sh
sudo sed -i '4 i\export DESKTOP_SESSION=ubuntu' /etc/xrdp/startwm.sh
最终文件如下所示:
#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos \
# published under The MirOS Licence
export DESKTOP_SESSION=ubuntu
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
if test -r /etc/profile; then
. /etc/profile
fi
if test -r /etc/default/locale; then
. /etc/default/locale
test -z "${LANG+x}" || export LANG
test -z "${LANGUAGE+x}" || export LANGUAGE
test -z "${LC_ADDRESS+x}" || export LC_ADDRESS
test -z "${LC_ALL+x}" || export LC_ALL
test -z "${LC_COLLATE+x}" || export LC_COLLATE
test -z "${LC_CTYPE+x}" || export LC_CTYPE
test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION
test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT
test -z "${LC_MESSAGES+x}" || export LC_MESSAGES
test -z "${LC_MONETARY+x}" || export LC_MONETARY
test -z "${LC_NAME+x}" || export LC_NAME
test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
test -z "${LC_PAPER+x}" || export LC_PAPER
test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
test -z "${LC_TIME+x}" || export LC_TIME
test -z "${LOCPATH+x}" || export LOCPATH
fi
if test -r /etc/profile; then
. /etc/profile
fi
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
之后,systemctl restart xrdp.service
或者重新启动您的机器,它应该可以正常工作。这是我重启后的 xrdp 会话。