web-dev-qa-db-ja.com

xrdp経由のリモートデスクトップ:[アプリケーション]メニューとインジケーターアプレットに項目がありません

Griffonのガイドに従ってUbuntu 18.04にxrdpをインストールしました( http://c-nergy.be/blog/?p=12761 )が、/etc/xrdp/startwm.shgnome-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-terminalを起動できます。

messed-up gnome-flashback-metacity

注意:過去の経験に基づくと、これは権限に関連している可能性があると思います。ただし、これが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 [email protected]
gnome-Shell-extension-tool -e [email protected]

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
2
prusswan

構成が不適切で、GNOME Flashback環境が通常初期化される方法を誤解していることが判明しました。関連する構成ファイル-/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-panel applet "Indicator Applet Complete" is missing missing icons と同様)。したがって、これはrun-systemd-sessionを使用して対処されていますが、通常のログイン中にgnome-panelを開始する部分(インジケーターアイコンを格納するパネル)を特定できなかったため、xrdp xsessionの場合、スタートアップアプリケーションにgnome-panelを追加する必要がありました。

1
prusswan