Appliquer les modifications ou redémarrer le tableau de bord / lanceur Unity /… sans redémarrage ni déconnexion


14

J'étais dans la situation qu'une application que je possédais n'était pas disponible dans la lentille des applications Unity après avoir supprimé un .desktopfichier de lancement personnalisé dans mon répertoire personnel qui avait remplacé celui à l'échelle du système.

Mon problème était que j'avais besoin d'appliquer ces modifications et de mettre à jour dans ce cas la base de données des .desktopfichiers installés , mais d'autres scénarios similaires sont également imaginables.

Alors, qu'aurais-je pu faire (et faire la prochaine fois) au lieu de redémarrer ou de vous déconnecter et de vous reconnecter pour mettre à jour la configuration Unity et le forcer à recharger et à réinitialiser tous ses éléments?

Je suis le 15.10, donc unity --reset &ça ne marche pas car c'est obsolète.

J'ai ensuite essayé à la unity --replace &place, mais cela a planté mon bureau et rendu mon TTY7 inutilisable. Il a d'abord clignoté sombre et semblait redémarrer Unity et restaurer le bureau, mais il n'a plus réagi. Passer à TTY1 et retour m'a laissé avec un écran noir et un curseur de souris. Après le redémarrage via la connexion TTY1 et reboot, cela a fonctionné à nouveau et Unity a même reconnu mon application maintenant.

Mais si j'aurais été dans une situation où un redémarrage ou une déconnexion n'était pas une option, quelle aurait été ma voie à suivre?


1
vous pouvez essayer setsid unity, cela «rafraîchira» l'unité. Sur l'une de mes installations, il le fait, l'autre entraîne une déconnexion. D'autres semblent dire qu'il revient à ses valeurs par défaut, ce n'est pas le cas dans les deux cas.
doug

Réponses:


33

Appuyez sur Alt+ F2type unityet appuyez sur Enter.


3
Simple mais génial. Je ne sais pas pourquoi personne n'y a pensé plus tôt. Je ne sais pas combien d'Unity est redémarré, mais c'est certainement suffisant pour reconnaître les fichiers .desktop remplacés. Je vous remercie! Je vous attribuerai la prime dans quelques jours, en attendant d'autres réponses.
Byte Commander

1
Félicitations à votre première prime @padlyuck! : D
Byte Commander

9
Je l'ai fait en 16.04 et j'ai gâché mes fenêtres et certaines applications se sont fermées (par exemple, le navigateur).
Daniel

Pourriez-vous nous expliquer cela ? Qu'est-ce que cela fait exactement?
George D

1
Attention - je l'ai fait le 14.04 et il a fermé X (et toutes les applications) et j'ai dû me reconnecter.
davidA

6
  • Unity est juste un plugin Compiz, vous pouvez le recharger en utilisant:

    compiz --replace
    

    Ou pour vous laisser fermer le terminal

    compiz --replace & disown
    

    Pour confirmer, vous pouvez vérifier:

    $ file `which unity`
    /usr/bin/unity: Python script, ASCII text executable
    
    $ more /usr/bin/unity
    
  • Une autre façon, la recharge légère du plugin uniquement (très rapide)

    1. Créer le compiz_plugin_reloaderscript

      Source: blog d'iXce : rechargement du plugin Compiz

      #!/usr/bin/env python
      
      '''Compiz plugin reloader (through compizconfig)
      Copyright (c) 2007 Guillaume Seguin <guillaume@segu.in>
      Licensed under GNU GPLv2'''
      
      import compizconfig
      from sys import argv, exit
      from time import sleep
      
      if __name__ == "__main__":
          if len (argv) < 2:
              print "Usage : %s plugin1 [plugin2 ... pluginN]" % argv[0]
              exit (2)
          plugins = argv[1:]
          context = compizconfig.Context (basic_metadata = True)
          print "Unloading " + " ".join (plugins)
          for plugin in plugins:
              if plugin not in context.Plugins:
                  print "Warning : %s plugin not found" % plugin
                  plugins.remove (plugin)
                  continue
              context.Plugins[plugin].Enabled = False
          if len (plugins) == 0:
              print "Error : no plugin found"
              exit (1)
          context.Write ()
          print "Waiting for settings update"
          sleep (2)
          print "Loading " + " ".join (plugins)
          for plugin in plugins:
              context.Plugins[plugin].Enabled = True
          context.Write ()
    2. Autorisations de correctifs

      chmod +x compiz_plugin_reloader
      
    3. Courir comme:

      ./compiz_plugin_reloader unityshell
      
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.