web-dev-qa-db-fra.com

Bureau à distance via xrdp: éléments manquants dans le menu Applications et l'applet d'indicateur

J'ai suivi le guide de Griffon pour installer xrdp sur Ubuntu 18.04 ( http://c-nergy.be/blog/?p=12761 ) mais modifié /etc/xrdp/startwm.sh pour l'utiliser avec 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

Je pouvais me connecter depuis le client Windows (session: Xorg) mais le bureau semble manquer de plusieurs éléments dans le menu Applications (en particulier Terminal), ainsi que les icônes d'indicateur. Je pourrais démarrer gnome-terminal en utilisant l'astuce "cliquer avec le bouton droit sur Accueil, ouvrir dans le terminal".

messed-up gnome-flashback-metacity

NB: Sur la base de mon expérience passée, je pense que cela pourrait être lié aux autorisations. Cependant, je ne peux pas dire si c'est un problème avec xrdp ou GNOME Flashback ou tout simplement une mauvaise configuration de ma part. Une connexion régulière sur la machine physique fonctionne très bien.

Actuel /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

Session .x actuelle:

/usr/lib/gnome-session/run-systemd-session gnome-session-flashback.target
2
prusswan

Il s'avère qu'il s'agit d'une mauvaise configuration et d'une mauvaise compréhension de la façon dont l'environnement Flashback GNOME est normalement initialisé. Après avoir parcouru les fichiers de configuration associés - /usr/lib/systemd/user/gnome-session.service et /usr/share/xsessions/gnome-flashback-metacity.desktop, J'ai proposé les modifications suivantes pour émuler le même comportement pour 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

Ces exportations doivent être définies quelque part avant le . /etc/X11/Xsession (lorsque la xsession démarre)

~/.xsession:

# starting the session through systemd, just like normal login through gdm greeter
/usr/lib/gnome-session/run-systemd-session gnome-session-flashback.target

Fonctionnement gnome-session la commande entraînait directement la non-affichage des icônes d'indicateur (similaire à l'applet Gnome-Panel "Indicator Applet Complete" manque d'icônes ). Ainsi, bien que cela ait été résolu avec l'utilisation de run-systemd-session, Je n'ai pas identifié la partie qui commence gnome-panel (le panneau qui abrite les icônes d'indicateur) pendant la connexion normale, donc pour la xrdp xsession, j'ai dû ajouter gnome-panel aux applications de démarrage.

1
prusswan