Comment redémarrer GNOME Shell en ligne de commande?

51

Je voudrais implémenter un raccourci clavier pour redémarrer gnome-shell chaque fois que celui-ci se bloque ( certains bugs ne sont pas encore corrigés). Pour cela, il me faudrait une ligne de commande pour redémarrer le shell.

Les commandes Alt+ F2et restartne fonctionneront pas lorsque le shell sera écrasé car l'invite est implémentée dans le shell.

Par conséquent, comment redémarrer le gnome-shell en ligne de commande?

Benjamin
la source
REMARQUE: Alt + F2 et restartarrêtera tous les programmes en cours d'exécution. (Je ne sais toujours pas comment redémarrer l'interface graphique sans arrêter les programmes.)
Andriy Makukha

Réponses:

48

La commande pour remplacer le gnome-shell serait gnome-shell --replace.

De la page de manuel de gnome-shell:

--replace             Replace the running window manager
jokerdino
la source
2
Merci je n'étais pas sûr --replace= "redémarrer".
Benjamin le
4
À partir de GNOME Shell 3.30.1 sur Ubuntu 18.10, cette solution ne fonctionne plus et renvoie l'utilisateur à l'écran de connexion, perdant ainsi tout son travail. La solution correcte est maintenant la ligne de commande: "killall -3 gnome-shell" ou ALT + f2 et r (si possible).
C.Rogers
1
ALT+f2(afficher l'invite de commande) + gnome-shell --replacefonctionnera bien en 18.04. Tous les programmes en cours ne seront pas arrêtés.
lifeisfoo
J'ajoute l'esperluette à la fin de la commande pour mettre le processus en arrière-plan afin de pouvoir fermer le terminal sans tuer le gnome-shell:gnome-shell --replace &
Teddy
AVERTISSEMENT: gnome-shell --replacesur ma machine Ubuntu 19.10, la plupart des applications en cours d'exécution se sont fermées et gnome-shell est entré dans un état problématique avec un écran blanc et une invite à redémarrer l'ordinateur.
Sparr
31

Le moyen le plus simple est de Alt+ F2et tapez rensuite .

agustibr
la source
5
C'est vrai, mais pas exactement la question. La question est alors: qu'est-ce qui se passe quand vous faites cela? Pour que vous puissiez le faire vous
see
4
Depuis GNOME Shell 3.30.1 sur Ubuntu 18.10, et la ligne de commande: "killall -3 gnome-shell" sont les seules solutions publiées ici qui fonctionnent. Tous les autres obligent l'utilisateur à se connecter à l'écran, perdant ainsi tout son travail.
C.Rogers
1
J'ai essayé cela sur Debian Buster. Obtenir l'erreur "Le redémarrage n'est pas disponible sur wayland".
livinston
27

Vous pouvez aussi faire un killall -3 gnome-shell.

Denis
la source
2
Je ne sais pas pourquoi les gens continuent à recommander cette commande. Tout cela ne tue que gnome-shell. Comment avez-vous répondu à la question de le redémarrer?
smac89
1
Probablement parce que c'est une bonne solution où l'autre commande ne fonctionne pas. J'ai essayé les deux, le choix est bon mais n'a pas résolu mon problème.
Mitro
2
À partir de la version 18.10 d’Ubuntu, GNOME Shell 3.30.1 - C’EST LA SOLUTION ADÉQUATE. Toutes les autres solutions redémarrent la session et obligent l'utilisateur à quitter l'écran de connexion en perdant tout son travail.
C.Rogers
3
SIGQUIT (3) ne tue pas le processus
Jack Wasey
Cela a semblé fonctionner pour moi. Alors que j'utilisais gnome-shell --replace &avant. Cela a fonctionné mais a continué à fonctionner dans le terminal. Le problème que je rencontrais était avec les vidéos Youtube en plein écran, ce qui entraînait le blocage de Dash-to-Dock et du panneau. github.com/micheleg/dash-to-dock/issues/…
Natetronn
5

La commande devrait juste être gnome-shell --replace.

Christopher Kyle Horton
la source
3
À partir de GNOME Shell 3.30.1 sur Ubuntu 18.10, cette solution ne fonctionne plus et renvoie l'utilisateur à l'écran de connexion, perdant ainsi tout son travail. La solution correcte est maintenant la ligne de commande: "killall -3 gnome-shell" ou ALT + f2 et r (si possible).
C.Rogers
ne fonctionne pas pour une session distante, donc lorsque gnome shell est gelé, cela ne fonctionne pas.
Jack Wasey
5

Au cas où le tout gnome-shellserait gelé, il existe un moyen de le redémarrer à partir du terminal sans avoir à redémarrer toute la fenêtre X:

  • Ctrl+ Alt+ F2pour passer au terminal
  • connectez-vous avec vos identifiants (nom d'utilisateur et mot de passe), puis exécutez:
  • DISPLAY=:0 gnome-shell -r &
  • déconnecter exitet
  • Alt+ F1pour revenir à l'interface graphique X Window.
ino
la source
1

Je suis venu avec cette fonction pour déconnecter les utilisateurs (voir en bas)

Il suppose

  • vous avez des permissions sudo
  • vous avez bash
  • les utilisateurs ont une session X en cours d'exécution (bien que vous puissiez pouvoir émettre la même commande de déconnexion plusieurs fois pour vous débarrasser des sessions restantes)

Vous pouvez lui donner plusieurs noms d'utilisateurs:

logout john jane mike elisa

Et vous pouvez lui donner des options supplémentaires:

logout john --force

Donc, j'ai la fonction d'assistance suivante:

function forcelogout() {
    logout "$@" --no-prompt --force
}

Remarques:

  • Il s’agit d’un instrument contondant qui fonctionne en copiant simplement l’environnement de session complet. Cela pourrait être plus sélectif.
  • Parfois, la déconnexion semble prendre un certain temps
  • Dans de rares occasions, la session continue d'être signalée jusqu'à ce que quelqu'un visite le vt où la session s'est déroulée, mais rien n'est plus là)

CODE

function logout() {
    local USERNAME
    export USERNAMES=( ) 
    while [ -n "$1" ]; do case "$1" in
        -* ) break ;;
        *) USERNAMES+=( "$1" ); shift ;;
    esac; done

    for USERNAME in "${USERNAMES[@]}"; do
        local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
        if [ -n "$SESSION_PID" ]; then
            (
                sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
                echo "gnome-session-quit --logout $@"
            ) | sudo -u "$USERNAME" sh -;
        fi
    done
}
voir
la source
1

J'ai défini un alias: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'

Vous pourrez peut-être démarrer un terminal en cliquant avec le bouton droit de la souris sur l'arrière-plan et en tapant à cet endroit (alt-tab est alors dysfonctionnel également). Sinon, connectez-vous à un terminal avec, par exemple, ctrl-alt-F2 et exécutez-le à partir de là.

MoreIT
la source