应用更改或重新启动Unity dash / launcher /…,而无需重新启动或注销


14

.desktop在我从主目录中删除了一个覆盖了整个系统范围的自定义启动器文件之后,我遇到了Unity应用程序镜头中无法使用的应用程序的情况。

我的问题是,在这种情况下,我需要应用这些更改并更新已安装.desktop文件的数据库,但是其他类似情况也是可以想象的。

那么,除了重新启动或注销并重新登录以更新Unity配置并强制其重新加载并重新初始化其所有内容之外,我还能做些什么(并在下次做)?

我使用的是15.10,因此unity --reset &不起作用,因为它已过时。

然后我试了一下unity --replace &,但是这使我的桌面崩溃了,并导致我的TTY7无法使用。它先是漆黑一片,看上去好像是在重新启动Unity并还原了桌面,但是随后它什么也没反应了。切换到TTY1并返回时,黑屏加鼠标光标使我离开。通过TTY1 login和重启后reboot,它又可以工作了,Unity现在甚至可以识别我的应用程序。

但是,如果我无法重新启动或注销,那我应该走什么路呢?


1
您可以尝试一下setsid unity,它将“刷新”统一。在我的一个安装中,它会这样做,而另一个安装会导致注销。其他人似乎说它重置为默认值,在任何情况下都没有。
2015年

Answers:


33

Alt+ F2类型unity,然后按Enter


3
简单但和ial可亲。我不知道为什么没人早些想到这一点。我不知道有多少Unity重新启动,但这绝对足以识别被覆盖的.desktop文件。谢谢!我会在几天内奖励您赏金,等待进一步的答复。
字节指挥官

1
恭喜您第一次获得赏金@padlyuck!:d
字节指挥官

9
我在16.04中做到了,弄乱了我的窗户,一些应用程序自行关闭(例如,浏览器)。
丹尼尔(Daniel)

您能详细说明一下吗?它到底是做什么的?
乔治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
      
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.