Zastosuj zmiany lub uruchom ponownie Unity dash / launcher /… bez restartu lub wylogowania

14

Byłem w sytuacji, gdy aplikacja, którą miałem, nie była dostępna w obiektywie aplikacji Unity po usunięciu niestandardowego .desktoppliku uruchamiającego w moim katalogu domowym, który zastąpił cały system.

Mój problem polegał na tym, że musiałem zastosować te zmiany i zaktualizować w tym przypadku bazę danych zainstalowanych .desktopplików, ale można sobie wyobrazić inne podobne scenariusze.

Co więc mogłem zrobić (i zrobić następnym razem) zamiast restartu lub wylogowania i ponownego zalogowania, aby zaktualizować konfigurację Unity i zmusić ją do ponownego załadowania i ponownej inicjalizacji wszystkich jej elementów?

Mam 15.10, więc unity --reset &nie działa, ponieważ jest przestarzałe.

Następnie spróbowałem unity --replace &zamiast tego, ale to spowodowało awarię pulpitu i uniemożliwiło korzystanie z mojego TTY7. Najpierw błysnęło ciemno i wyglądało, jakby ponownie uruchamiało Unity i przywracało pulpit, ale potem już na nic nie reagowało. Przejście na TTY1 i powrót opuściło mnie z czarnym ekranem i kursorem myszy. Po ponownym uruchomieniu przez login TTY1 i rebootzadziałało ponownie, a Unity rozpoznało teraz moją aplikację.

Ale gdybym znalazł się w sytuacji, w której ponowne uruchomienie lub wylogowanie nie byłoby możliwe, jaka byłaby moja droga?

Bajt Dowódca
źródło
1
możecie spróbować setsid unity, to „odświeży” jedność. W przypadku jednej z moich instalacji robi to, w drugiej kończy się wylogowanie. Inni twierdzą, że resetuje się do wartości domyślnych, w żadnym wypadku nie ma tego.
doug

Odpowiedzi:

33

Naciśnij Alt+ F2typ unityi naciśnij Enter.

padlyuck
źródło
3
Prosty, ale genialny. Nie mam pojęcia, dlaczego nikt wcześniej o tym nie pomyślał. Nie wiem, ile z Unity zostanie zrestartowane, ale na pewno wystarczy rozpoznać zastąpione pliki .desktop. Dziękuję Ci! Przyznam ci nagrodę za kilka dni, czekając na dalsze odpowiedzi.
Bajt Dowódca
1
Gratulacje dla twojej pierwszej nagrody @padlyuck! : D
Bajt Dowódca
9
Zrobiłem to w 16.04 i pomieszałem moje okna, a niektóre aplikacje się zamknęły (np. Przeglądarka).
Daniel
Czy możesz to rozwinąć? Co to dokładnie robi?
George D
1
Uwaga - zrobiłem to 14.04 i zamknąłem X (i wszystkie aplikacje) i musiałem się ponownie zalogować.
davidA
6
  • Unity to tylko wtyczka Compiz, możesz ją ponownie załadować za pomocą:

    compiz --replace
    

    Lub pozwolić ci zamknąć terminal

    compiz --replace & disown
    

    Aby potwierdzić, możesz sprawdzić:

    $ file `which unity`
    /usr/bin/unity: Python script, ASCII text executable
    
    $ more /usr/bin/unity
    
  • Innym sposobem, lekkie przeładowanie tylko wtyczki (bardzo szybko)

    1. Utwórz compiz_plugin_reloaderskrypt

      Źródło: Blog iXce : moduł ładujący wtyczki Compiz

      #!/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. Napraw uprawnienia

      chmod +x compiz_plugin_reloader
      
    3. Uruchom jako:

      ./compiz_plugin_reloader unityshell
      
user.dz
źródło