it-swarm.com.de

Änderungen übernehmen oder Unity dash / launcher / ... neu starten, ohne neu zu starten oder sich abzumelden

Ich befand mich in der Situation, dass eine Anwendung, die ich hatte, nicht im Unity-Anwendungsobjektiv verfügbar war, nachdem ich eine benutzerdefinierte .desktop -Startdatei in meinem Ausgangsverzeichnis entfernt hatte, die die systemweite überschrieben hatte.

Mein Problem war, dass ich diese Änderungen anwenden und in diesem Fall die Datenbank der installierten .desktop -Dateien aktualisieren musste, aber es sind auch andere ähnliche Szenarien vorstellbar.

Was hätte ich tun können (und beim nächsten Mal tun können), anstatt neu zu starten oder mich abzumelden und wieder einzuloggen, um die Unity-Konfiguration zu aktualisieren und das Neuladen und Neuinitialisieren aller Komponenten zu erzwingen?

Ich bin am 15.10, also unity --reset & funktioniert nicht, weil es veraltet ist.

Ich habe dann stattdessen unity --replace & versucht, aber das hat meinen Desktop zum Absturz gebracht und mein TTY7 unbrauchbar gemacht. Es blinkte zuerst dunkel und sah aus, als würde Unity neu gestartet und der Desktop wiederhergestellt, aber dann reagierte es nicht mehr auf irgendetwas. Wenn ich zu TTY1 und zurück wechsle, habe ich einen schwarzen Bildschirm und einen Mauszeiger. Nach dem Neustart über TTY1-Login und reboot hat es wieder funktioniert und Unity hat meine Anwendung jetzt sogar erkannt.

Aber wenn ich in einer Situation gewesen wäre, in der ein Neustart oder Abmelden keine Option gewesen wäre, was wäre mein Weg gewesen?

14
Byte Commander

Drücken Sie Alt+F2 Geben Sie unity ein und drücken Sie Enter.

33
padlyuck
  • Unity ist nur ein Compiz-Plugin. Sie können es mit den folgenden Schritten neu laden:

    compiz --replace
    

    Oder um das Terminal zu schließen

    compiz --replace & disown
    

    Zur Bestätigung können Sie Folgendes überprüfen:

    $ file `which unity`
    /usr/bin/unity: Python script, ASCII text executable
    
    $ more /usr/bin/unity
    
  • Ein anderer Weg, leicht nur das Plugin neu zu laden (sehr schnell)

    1. Erstellen Sie das Skript compiz_plugin_reloader

      Quelle: iXces Blog: Compiz Plugin Reloader

      #!/usr/bin/env python
      
      '''Compiz plugin reloader (through compizconfig)
      Copyright (c) 2007 Guillaume Seguin <[email protected]>
      Licensed under GNU GPLv2'''
      
      import compizconfig
      from sys import argv, exit
      from time import sleep
      
      if __== "__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. Festgelegte Berechtigungen

      chmod +x compiz_plugin_reloader
      
    3. Rennen wie:

      ./compiz_plugin_reloader unityshell
      
6
user.dz