Применить изменения или перезапустить Unity Dash / Launcher /… без перезагрузки или выхода из системы

14

Я находился в ситуации, когда приложение, которое у меня было недоступно в объективе приложений Unity, после того, как я удалил .desktopв моем домашнем каталоге файл пользовательского запуска, который переопределил общесистемный.

Моя проблема заключалась в том, что мне нужно было применить эти изменения и обновить в этом случае базу данных установленных .desktopфайлов, но возможны и другие подобные сценарии.

Итак, что я мог сделать (и сделать в следующий раз) вместо перезагрузки или выхода из системы и обратно, чтобы обновить конфигурацию Unity и заставить его перезагрузить и повторно инициализировать все свои вещи?

Я на 15.10, поэтому unity --reset &не работает, потому что это устарело.

Затем я попытался unity --replace &вместо этого, но это разбило мой рабочий стол и сделало мой TTY7 непригодным для использования. Сначала он мелькнул и выглядел так, как будто перезапускал Unity и восстанавливал рабочий стол, но потом он больше не реагировал ни на что. Переключение на TTY1 и обратно оставило меня с черным экраном плюс курсор мыши. После перезагрузки через TTY1 reboot, он снова заработал, и теперь Unity даже распознала мое приложение.

Но если бы я попал в ситуацию, когда перезагрузка или выход из системы были бы невозможны, каким был бы мой путь?

Byte Commander
источник
1
вы можете попробовать setsid unity, это «освежит» единство. На одной из моих инсталляций это происходит, а на другой происходит выход из системы. Другие, кажется, говорят, что он сбрасывается обратно к значениям по умолчанию, не здесь в любом случае.
Даг

Ответы:

33

Нажмите Alt+ F2тип unityи нажмите Enter.

padlyuck
источник
3
Простой, но гениальный. Я понятия не имею, почему никто не думал об этом раньше. Я не знаю, сколько Unity будет перезапущено, но этого достаточно для распознавания переопределенных файлов .desktop. Спасибо! Я назначу вам награду через несколько дней, ожидая дальнейших ответов.
Byte Commander
1
Поздравляем вас с первой премией @padlyuck! : D
Byte Commander
9
Я сделал это в 16.04 и испортил мои окна, и некоторые приложения закрылись (например, браузер).
Даниэль
Можете ли вы уточнить это? Что именно это делает?
Джордж D
1
Осторожно - я сделал это 14.04, и он закрыл X (и все приложения), и мне пришлось снова войти в систему.
Давид А
6
  • Unity - это просто плагин Compiz, вы можете перезагрузить его, используя:

    compiz --replace
    

    Или позволить вам закрыть терминал

    compiz --replace & disown
    

    Для подтверждения вы можете проверить:

    $ file `which unity`
    /usr/bin/unity: Python script, ASCII text executable
    
    $ more /usr/bin/unity
    
  • Другой способ - перезагрузить только плагин (очень быстро)

    1. Создать compiz_plugin_reloaderскрипт

      Источник: блог iXce: перегрузчик плагинов 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. Исправить разрешения

      chmod +x compiz_plugin_reloader
      
    3. Беги как:

      ./compiz_plugin_reloader unityshell
      
user.dz
источник