gnome-terminal a cessé de fonctionner

Mon gnome-terminal 3.16.2-1 cessé de fonctionner après une mise à jour du système. J'utilise Linux arch 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux .

Quand je le lance, je reçois

 Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: GDBus.Error:org.freedesktop.DBus.Error.Spawn.ChildExited: Process org.gnome.Terminal exited with status 8 

Google Googling le problème m'a dit de rétablir les parameters régionaux. Pour cela j'ai ouvert /etc/locale.gen et fait en sorte que en_US.UTF-8 UTF-8 n'a pas été commenté.

J'ai ensuite exécuté sudo locale-gen pour générer les locales. Pour couronner le tout, j'ai également lancé localectl set-locale LANG=en_US.UTF-8 et redémarré.

Lorsque le problème est apparu pour la première fois, j'ai reçu un message d'erreur concernant les parameters régionaux. Après avoir fait les étapes précédentes, ces messages d'erreur ont disparu, mais gnome-terminal ne fonctionne toujours pas. Le message d'erreur ci-dessus rest affiché.

Comportement étrange que je puisse observer autrement:

Mon gestionnaire de files Nautilus ne démarre pas à partir du raccourci sur le bureau, mais démarre sans problème depuis la console.

gnome-terminal lance quand il est exécuté en tant que root.

sorties locale :

 LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC=de_DE.UTF-8 LC_TIME=de_DE.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=de_DE.UTF-8 LC_MESSAGES="en_US.UTF-8" LC_PAPER=de_DE.UTF-8 LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 

sorties localectl

 System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: us,de 

Solution :

Exécuter dans le terminal (alt + ctrl + F1 si vous n'avez installé que le gnome-terminal ), mais callbackez-vous que ce n'est pas permanent. Après le redémarrage, vous devrez le refaire:

 dbus-update-activation-environment --all 

Ou pour le résoudre de manière permanente (en supposant que vous avez un script manquant dans votre /etc/X11/xinit/xinitrc.d voir l'explication pour plus de détails) chargez dans vos scripts appropriés ~/.xinitrc :

 if [ -d /etc/X11/xinit/xinitrc.d ] ; then for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do [ -x "$f" ] && . "$f" done unset f fi 

Notez que cela ne fonctionnera que si vous avez le bon script dans /etc/X11/xinit/xinitrc.d

Explication :

Dans mon cas, le problème manquait la variable DISPLAY pour les services de session D-Bus. En raison de cela, je ne pouvais pas démarrer gnome-terminal ni nautilius .

J'utilise Arch Linux avec Slim et certains .xinitrc personnalisés. En raison de cela, j'ai manqué de charger du personnel supplémentaire à partir de /etc/X11/xinit/xinitrc.d/ . Dans le cas d' Arch Linux il y a un script appelé 50-systemd-user.sh qui s'occupe de la mise en place d'un environnement approprié pour la session D-Bus. Dans mon cas, il ressemble à ceci:

 #!/bin/sh systemctl --user import-environment DISPLAY XAUTHORITY if which dbus-update-activation-environment >/dev/null 2>&1; then dbus-update-activation-environment DISPLAY XAUTHORITY fi 

Je crois comprendre que la variable DISPLAY et XAUTHORITY est imscope dans le bloc d'environnement systemd manager et également dans dbus-deamon --session qui a utilisé ces variables lors de l'activation des services de session. Certaines applications (cela dépend également de la manière dont elles sont appelées) échouent en raison de l'absence de ces variables au démarrage.

J'ai ajouté la ligne suivante à ~/.profile Elle définit la variable DBUS_SESSION_BUS_ADDRESS. Il a résolu le problème pour moi.

 eval `dbus-launch --sh-syntax` 

Ajoutez la ligne suivante au bas de ~ / .bashrc et un redémarrage fonctionne pour moi

 dbus-update-activation-environment --all