应用程序在 Ubuntu 16.04 中始终显示在第三位置

应用程序在 Ubuntu 16.04 中始终显示在第三位置

在我将 ubutu 更新到 16.04 后,Unity 启动器出现了问题。每当我打开启动器中未列出的应用程序时,它都会占据第三个位置而不是最后一个位置。有人遇到过同样的问题吗?

在此处输入图片描述

答案1

有一个特殊的隐形启动器项目,称为“正在运行的应用程序”,它始终存在于您的启动器收藏夹中,并决定未固定的正在运行的应用程序的图标出现在哪个位置。就您而言,它显然不知何故出现在一个奇怪的位置,但很容易修复。

有两种方法,一种是简单的方法,当然还有命令行方法 ;-)


我希望它容易做并且容易记住!

最简单的方法就是按照正确的顺序拖放启动器图标。

因此,请打开一个未固定到启动器的应用程序,例如屏幕截图中的外观设置。它必须未被固定,否则将不起作用。

然后你请勿拖动取消固定的图标,因为这不会影响特殊“正在运行的应用程序”项的位置,而只是将拖动的图标固定到新位置。
相反,将所有图标从未固定图标的下方/右侧(适用于两种启动器方向)拖动到其正上方/左侧。这样,您就可以将未固定的图标移动到底部/右侧而无需触摸它。

当它到达您希望所有未固定的应用程序图标出现的位置时,您就完成了。您现在可以关闭该窗口并再次打开它或打开新窗口来测试它是否有效。


我今天心情很烦躁,让我们通过终端来破解它吧!

您固定的启动器项目称为“收藏夹”,并作为 dconf 设置存储在您的用户配置文件中。您可以通过打开终端并运行来查看收藏夹列表

gsettings get com.canonical.Unity.Launcher favorites

这看起来像下面的例子(我添加的输出格式):

$ gsettings get com.canonical.Unity.Launcher favorites
['application://gnome-terminal.desktop', 
 'application://org.gnome.Nautilus.desktop', 
 'application://firefox.desktop', 
 'unity://running-apps', 
 'unity://desktop-icon',
 'unity://devices']

此输出表示一个极简启动器,其中只有一个终端、Nautilus 和 Firefox 图标被固定。下一个项目是'unity://running-apps'重要的特殊项目,它充当所有未固定的正在运行的应用程序的图标的占位符。之后还有更多特殊项目,即“显示桌面”图标和另一个占位符项目,它定义插入的可移动设备的图标将出现在何处。

我们唯一感兴趣的项目是“正在运行的应用程序”项目。要解决您的问题,您必须将其移动到项目列表中的所需位置。

您可以通过输入命令来执行此操作

gsettings set com.canonical.Unity.Launcher favorites []

但不是空列表[],你需要传递您修改后的列表当然,这是最后一个论点。

例如,给定上面描述的启动器,为了使正在运行的应用程序图标出现在“显示桌面”下方但仍位于设备图标上方,请运行以下命令:

$ gsettings set com.canonical.Unity.Launcher favorites "['application://gnome-terminal.desktop', 'application://org.gnome.Nautilus.desktop', 'application://firefox.desktop', 'unity://desktop-icon', 'unity://running-apps', 'unity://devices']"

更改将立即生效,因此请启动一些未固定的应用程序以验证您已将项目放在正确的位置并享受。

答案2

正如 ByteCommander 所解释的那样, gsettings 架构unity://running-apps列表中的位置com.canonical.Unity.Launcher确实会影响正在运行的应用程序出现的位置,因此他的答案是正确的。为了演示和测试这一点,我编写了一个小脚本,您可以在下面的屏幕截图中看到其结果。

请注意,使用索引 1 和索引 2 调用的脚本显示两个终端应用程序一起移动到启动器中的相应位置(即,正在运行的应用程序 不是在当前列表中被分组在一起)。请注意,列表以索引 0 开始,该索引被铬图标适当地采用。

在此处输入图片描述 在此处输入图片描述

注意:如果您希望最后运行应用程序,则使用它-1作为参数就足够了。

脚本

from gi.repository import Gio
import sys

def gsettings_get(schema, path, key):
    """Get value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    return gsettings.get_value(key)

def gsettings_set(schema, path, key, value):
    """Set value of gsettings schema"""
    if path is None:
        gsettings = Gio.Settings.new(schema)
    else:
        gsettings = Gio.Settings.new_with_path(schema, path)
    if isinstance(value, list):
        return gsettings.set_strv(key, value)
    if isinstance(value, int):
        return gsettings.set_int(key, value)

def main():
    schema='com.canonical.Unity.Launcher' 
    key='favorites'
    current_list = list(gsettings_get(schema,None,key))
    running_index = current_list.index('unity://running-apps')

    position = int(sys.argv[1])

    temp = current_list[position]
    current_list[position] = current_list[running_index]
    current_list[running_index] = temp
    gsettings_set(schema,None,key,current_list)
if __name__ == '__main__': main()

相关内容