web-dev-qa-db-ja.com

再起動またはログアウトせずに、変更を適用するかUnity dash / launcher / ...を再起動します

システム全体のファイルを上書きしていたホームディレクトリからカスタム.desktopランチャーファイルを削除した後、Unityアプリケーションレンズで使用できなかったアプリケーションがある状況にありました。

私の問題は、これらの変更を適用し、この場合インストールされた.desktopファイルのデータベースを更新する必要があることでしたが、他の同様のシナリオも考えられます。

それで、Unity構成を更新し、すべての内容をリロードして再初期化するために、再起動またはログアウトしてから再ログインする代わりに、私は何をすることができましたか(そして次回も)?

私は15.10にいるので、 unity --reset &は廃止されているため機能しません。

次に、代わりにunity --replace &を試しましたが、デスクトップがクラッシュし、TTY7が使用できなくなりました。最初は暗く点滅し、Unityを再起動してデスクトップを復元しているように見えましたが、その後は何にも反応しませんでした。 TTY1に切り替えて戻ると、黒い画面とマウスカーソルが残りました。 TTY1ログインとrebootを介して再起動した後、再び機能し、Unityが私のアプリケーションを認識しました。

しかし、再起動またはログアウトが選択できない状況にあったとしたら、どうすればよいでしょうか?

14
Byte Commander

押す Alt+F2 unityと入力して押します Enter

33
padlyuck
  • 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 <[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. 権限を修正

      chmod +x compiz_plugin_reloader
      
    3. として実行:

      ./compiz_plugin_reloader unityshell
      
6
user.dz