web-dev-qa-db-fra.com

Pourquoi "lxsession &" via "ssh -X" rend Ubuntu différent même après la déconnexion?

Je travaillais avec mon Raspberry Pi et j'ai fini par gâcher ma machine Ubuntu. JE ssh -X 'd dans le Pi depuis mon bureau Ubuntu 14.04, et essayait d'obtenir une session graphique pour démarrer sur le pi afin que je puisse le voir avec le transfert X11. J'ai couru startx et cela a eu une erreur, donc en regardant autour, j'ai vu cette discussion sur raspberrypi.org , et (ne sachant pas vraiment ce que je faisais) j'ai essayé lxsession&.

Cela a changé Ubuntu donc il ressemblait à une version de Windows, avec une barre de tâches en bas de l'écran et une apparence différente pour tous mes programmes, surtout les onglets de mes navigateurs Web. Cela a persisté après la fermeture de la session Pi (à l'exception de la barre des tâches: elle a disparu).

C'est ce que j'ai fait dans le terminal:

pi@raspberrypi ~ $ startx

X.Org X Server 1.12.4
Release Date: 2012-08-27
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.0-2-mx5 armv7l Debian
Current Operating System: Linux raspberrypi 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015 armv6l
Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0xc4895bc4 smsc95xx.macaddr=B8:27:EB:89:5B:C4 bcm2708_fb.fbswap=1 sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Build Date: 11 February 2015  09:31:17PM
xorg-server 2:1.12.4-6+deb7u6 (Julien Cristau <[email protected]>) 
Current version of pixman: 0.33.1
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Fri Apr 24 02:10:24 2015
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
FATAL: Module g2d_23 not found.
^Cxinit: connection to X server lost

waiting for X server to shut down Server terminated successfully (0). Closing log file.

xinit: unexpected signal 2
pi@raspberrypi ~ $ lxsession&
[1] 2290
pi@raspberrypi ~ $ 
(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-can-change-accels after class was initialised

(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popup-delay after class was initialised

(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popdown-delay after class was initialised

** (lxpolkit:2301): CRITICAL **: polkit_agent_listener_register_with_options: assertion 'POLKIT_IS_SUBJECT (subject)' failed

(lxpolkit:2301): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-images after class was initialised

(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-label-select-on-focus after class was initialised
pi@raspberrypi ~ $ Openbox-Message: A window manager is already running on screen 0

(lxpanel:2297): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-button-images after class was initialised

(pcmanfm:2298): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-can-change-accels after class was initialised

(pcmanfm:2298): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popup-delay after class was initialised

(pcmanfm:2298): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-popdown-delay after class was initialised

(pcmanfm:2298): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-label-select-on-focus after class was initialised

(pcmanfm:2298): GLib-GObject-WARNING **: Attempt to add property GtkSettings::gtk-menu-images after class was initialised
tray: another systray already running
^C
pi@raspberrypi ~ $ Sudo shutdown -h now

Broadcast message from root@raspberrypi (pts/0) (Fri Apr 24 02:22:27 2015):
The system is going down for system halt NOW!
pi@raspberrypi ~ $ Connection to 192.168.254.7 closed by remote Host.
Connection to 192.168.254.7 closed.
max@max-ubuntu:~$ ^C
max@max-ubuntu:~$ man lxsession
No manual entry for lxsession
max@max-ubuntu:~$ lxsession -help
The program 'lxsession' is currently not installed. You can install it by typing:
Sudo apt-get install lxsession
max@max-ubuntu:~$ lxsession& -help
[1] 25443
No command '-help' found, did you mean:
 Command 'dhelp' from package 'dhelp' (universe)
-help: command not found
max@max-ubuntu:~$ The program 'lxsession' is currently not installed. You can install it by typing:
Sudo apt-get install lxsession
ok
ok: command not found
[1]+  Exit 127                lxsession
[1]+  Exit 127                lxsession

Qu'est-ce qui cause ce problème et comment le résoudre? Un redémarrage sur la machine Ubuntu récupérera-t-il le look Ubuntu, ou va-t-il le rendre permanent?

Voici à quoi ressemble mon navigateur Firefox maintenant. Plus particulièrement, les onglets et les barres de défilement sont différents:

The tabs don't look like normal Ubuntu.

EDIT: Je l'ai corrigé en redémarrant, mais je serais toujours intéressé de savoir pourquoi cela se produit.

3
Max B

The Fix

Le redémarrage est suffisant pour résoudre ce problème, mais pas nécessaire. Vous pouvez réparer votre bureau en vous déconnectant puis en vous reconnectant. Vous le feriez sur le système affecté, c'est-à-dire le système dont le bureau a été foiré, le système Ubuntu utilisé comme client SSH, pas le Rapsberry Pi qui était le serveur SSH. Notez que simplement verrouiller et déverrouiller l'écran ne fonctionnera pas - mais la déconnexion est suffisante.

Si vous utilisez Unity, il s'exécute probablement compiz --replace sur la machine concernée fonctionnerait également et éviterait de se déconnecter, mais je recommande de vous déconnecter puis de vous reconnecter.

Le redémarrage a résolu le problème car il impliquait de se déconnecter et de se reconnecter. C'est correct, mais pas nécessaire.


Qu'est-il arrivé

Lorsque vous utilisez ssh -X et exécutez un programme graphique, le programme:

  • s'exécute sur le serveur SSH (ici, le Raspberry Pi)
  • s'affiche sur le client SSH (ici, votre système Ubuntu)

LXSession est LXDE gestionnaire de session. Exécution lxsession sur le serveur SSH depuis le ssh -X session démarre une session graphique LXDE sur le serveur en utilisant l'affichage du client . Cela produit les deux changements majeurs que vous avez remarqués:

lxsession s'exécute lxpanel . LXDE utilise LXPanel comme panneau. Elle ressemble un peu à la barre des tâches de Windows en ce qu'elle a un seul panneau par défaut sur le bord inférieur de l'écran qui, à moins d'être personnalisé, a (a) un seul menu imbriqué pouvant être ouvert depuis le bord gauche panneau à partir duquel les applications sont placées en groupes et (b) une liste de fenêtres à l'intérieur du panneau lui-même qui facilite le basculement entre les applications.

lxsession s'exécute openbox . LXDE utilise Openbox comme gestionnaire de fenêtres = (voir aussi cet article et cette page ). Les gestionnaires de fenêtres contrôlent la façon dont les fenêtres sont affichées; ils vous permettent de changer, déplacer et redimensionner les fenêtres; et ils fournissent des bordures et un style. Votre interface nity utilise le gestionnaire de fenêtres Compiz . Parce qu'elle était connectée à l'affichage sur le client SSH, l'instance openbox s'exécutant sur le serveur SSH a tenté de gérer les fenêtres sur le client SSH.

Lorsque vous arrêtez et déconnectez-vous du serveur SSH, tous les programmes en cours d'exécution sur le serveur SSH qui utilisaient l'affichage du client SSH s'arrêtent. Le panneau a disparu, comme vous l'avez observé. Openbox a également cessé de tenter de gérer les fenêtres sur le client SSH, mais il avait déjà déplacé Compiz.

Autres correctifs possibles

Ce sont les deux changements majeurs, mais probablement pas les seuls. Si vous vouliez vraiment tout savoir sur lsession, vous pouvez consulter sa documentation et lire les fichiers de configuration sur le Raspberry Pi qu'il utilise, ou vous pouvez essayer de répliquer le problème et d'exécuter pstree sur le serveur SSH pour voir tout ce que lxsession a commencé. Mais ce n'est pas nécessaire. La déconnexion et la reconnexion suffisent à tout remettre en place. Le redémarrage, comme vous l'avez fait, est également suffisant.

Parce que le problème major était que Compiz ne fonctionnait plus correctement, exécutant compiz --replace sur votre système Ubuntu (le client SSH) aurait corrigé cela. Mais se déconnecter et se reconnecter est facile, simple et ne vous oblige pas à passer plus de temps à analyser le problème.

Pourquoi vous n'avez pas trouvé lxsession sur le client SSH

Après avoir fermé la connexion au Raspberry Pi (le serveur SSH), vous avez essayé les commandes man lxsession et lxsession sur votre système Ubuntu qui était le client SSH. Cependant, vous n'aviez pas cette page de manuel ou cet exécutable, car lxsession n'était pas installé - ou en cours d'exécution - sur le client SSH. Il s'exécutait sur le serveur SSH et certains des programmes qu'il exécutait affectaient le client SSH.

S'il s'agissait d'un système Lubunt ou si vous aviez autrement installé LXDE - ou lxsession spécifiquement - alors vous auriez pu voir la page de manuel et exécutez le programme. Ce ne serait pas nécessairement la même version de lxsession que vous avez sur le Raspberry Pi. Vous pouvez essayer SSHing sur le Raspberry Pi et exécuter man lxsession Là. (Sauf si vous essayez de reproduire le problème, je vous déconseille d'exécuter lxsession sur le Raspberry Pi.)


Ce que vous vouliez faire

Vous pourriez exécuter X11 sur Ubuntu sans gestionnaire de session ni même gestionnaire de fenêtres, et vous pourriez exécuter ssh -X puis lxsession sur le Raspberry Pi. Avec rien de tel qu'une session X existante déjà en cours d'exécution, votre bureau ne serait pas perturbé. Mais je doute que c'est ce que vous voulez. Vous voulez probablement l'une des trois choses:

  • Pour exécuter des programmes graphiques individuels installés sur le serveur SSH via ssh -X. Dans ce cas, exécutez simplement ces programmes, par exemple, xclock, firefox, libreoffice. SSH les transmettra à l'interface graphique sur le client SSH. (Si vous voulez pouvoir vous déconnecter et vous reconnecter sans quitter le programme, alors l'une des deux options suivantes peut vous intéresser, mais voyez cette réponse et celle-là .)
  • Pour exécuter un bureau graphique persistant sur le serveur SSH auquel vous pouvez vous déconnecter et vous connecter, sans terminer et redémarrer la session de bureau. Dans ce cas, vous ne voudrez pas que des programmes comme lxsession soient limités à une seule session SSH ou qu'ils utilisent directement et s'appuient sur l'affichage du client SSH. Dans cette situation, une solution consiste à maintenir un bureau graphique en cours d'exécution sur le serveur SSH et à s'y connecter à partir du client. Cela peut être fait, par exemple, avec VNC ou xrdp . ( Remmina est un client populaire.) Les lecteurs peuvent avoir besoin de poser de nouvelles questions en fonction de leurs situations spécifiques, mais voir Comment configurer une session xrdp qui réutilise une session existante?
  • Pour que le serveur SSH gère entièrement un bureau sur le client SSH. Si vous le voulez vraiment et que vous utilisez déjà une interface graphique sur le client que vous ne voulez pas être perturbé- -qui est ce qui vous est arrivé - alors vous pouvez exécuter un serveur seconde X en même temps sur le client SSH. De ces trois options, je pense que c'est celle que vous êtes le moins susceptible de vouloir - bien qu'elle soit la plus similaire à ce que vous avez fait - et les détails spécifiques sur la façon de le faire dépassent le cadre de cette réponse. Mais voyez cette question et celle-là .
1
Eliah Kagan

Le redémarrage résout le problème en me redonnant un écran normal:

fixed, normal Ubuntu look

Cependant, lorsque j'ai redémarré, on m'a montré une framboise géante sur mon bureau momentanément, comme on le verrait lors de l'arrêt du Pi avec une interface graphique démarrée. (À ce stade, le Raspberry Pi a été éteint et déconnecté pendant un certain temps.)

Donc, si quelqu'un a ce problème, le redémarrage de votre ordinateur le corrigera.

0
Max B