Übernehmen Sie die Änderungen oder starten Sie Unity dash / launcher /… neu, ohne neu zu starten oder sich abzumelden

14

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

Mein Problem war, dass ich diese Änderungen anwenden und in diesem Fall die Datenbank der installierten .desktopDateien 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, unity --reset &funktioniert also nicht, weil es veraltet ist.

Ich habe es dann unity --replace &stattdessen 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 reboothat 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?

Byte Commander
quelle
1
Sie können versuchen setsid unity, es wird Einheit "erfrischen". Bei einer meiner Installationen führt dies zu einer Abmeldung, bei der anderen zu einer Abmeldung. Andere scheinen zu sagen, es wird auf die Standardeinstellungen zurückgesetzt, nicht hier in jedem Fall.
Doug

Antworten:

33

Drücken Sie Alt+ F2Typ unityund drücken Enter.

Padlyuck
quelle
3
Einfach aber freundlich. Ich habe keine Ahnung, warum niemand früher daran gedacht hat. Ich weiß nicht, wie viel von Unity neu gestartet wird, aber es reicht definitiv aus, überschriebene .desktop-Dateien zu erkennen. Vielen Dank! Ich werde Ihnen das Kopfgeld in ein paar Tagen überreichen und auf weitere Antworten warten.
Byte Commander
1
Herzlichen Glückwunsch zu Ihrer ersten Prämie @padlyuck! : D
Byte Commander
9
Ich habe dies im 16.04 getan und meine Fenster durcheinander gebracht und einige Apps haben sich geschlossen (zB Browser).
Daniel
Können Sie das bitte näher erläutern? Was genau macht es?
George D
1
Achtung - ich habe dies am 14.04 getan und es hat X (und alle Apps) heruntergefahren und ich musste mich erneut anmelden.
DavidA
6
  • Unity ist nur ein Compiz-Plugin. Sie können es neu laden, indem Sie Folgendes verwenden:

    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
    
  • Eine andere Möglichkeit, nur das Plugin neu zu laden (sehr schnell)

    1. Erstellen Sie das compiz_plugin_reloaderSkript

      Quelle: iXce's 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 __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. Festgelegte Berechtigungen

      chmod +x compiz_plugin_reloader
      
    3. Rennen wie:

      ./compiz_plugin_reloader unityshell
      
user.dz
quelle