如何在顶部订购 Gnome3 shell 扩展?

kla*_*usi 22 gnome gnome-shell-extension 14.04 gnome-shell

shell 扩展小部件的顺序似乎是随机的,我该如何更改?例如,我想在左侧显示日期/时间信息。

我的外壳面板:

我的外壳面板

Jib*_*bow 24

一般的方法:

首先,您必须找到要更改的扩展名的相应文件。
你通常可以在这里找到它:~/.local/share/gnome-shell/extensions
如果扩展是通过包管理器安装的,你可以在这里找到它:(/usr/share/gnome-shell/extensions/感谢AB

然后进入扩展的目录并extension.js使用任何文本编辑器打开“ ”。

转到以下行:(function enable()使用编辑器中的搜索功能 - 如果找不到它,请转到下方的“更新”部分)。
在这个函数里面通常是一行Main.panel.addToStatusArea('NAME', _OTHERNAME, NUMBER, LEFT/CENTER/RIGHT);(同样:如果你找不到它,请转到Update)。可能会发生最后两个参数 (NUMBERPOSITION) 丢失的情况;看起来像这样:(Main.panel.addToStatusArea('NAME', _OTHERNAME);
别担心!您的计算机将解释较短的版本:('NAME', _OTHERNAME, 0, right);随意添加缺少的参数。但始终按照显示的顺序!!!

POSITION定义,其中面板上的图标应。有三个区域:leftcenterright。您可能不想更改此值,但可以随意更改。以下是POSITION面板上的三种可能状态:

------------------------------------------------------------------
Activities                 Date                        Other icons
------------------------------------------------------------------
   left                   center                          right 
Run Code Online (Sandbox Code Playgroud)

您可能想要更改的更重要的值是NUMBER. 它定义了子面板内图标的顺序。可能的值为:

  • 0:我不在乎图标在哪里。

  • 负值:位置;从右侧开始(可能很重要,因为所有扩展图标都在系统图标之后加载)

  • 正值:位置;从左侧开始。较高的值将位于更靠右侧的位置。

您必须在所有扩展中使用这些值,因为相同的值相互冲突(位置 2 上的两个不同扩展没有任何意义)。有时甚至以下价值观会发生冲突。

每次更改值时,请确保保存文件。然后点击Alt+ F2,输入rEnter。面板将使用新排序的图标刷新。这是处理这些值的快速选项。


最后引用Mathematical Coffee 的一段话:

使用 Main.panel.addToStatusArea(unique_name_of_indicator, inidicator, position, box) 将 SystemStatusButton 或 PanelButton 添加到面板。这会为您处理将其菜单添加到菜单管理器中(框是 Main.panel._{left, right, center}Box,省略 box 参数默认给出右框,省略位置给出位置 0)。如果您的按钮只是一个 ButtonBox(即没有菜单),那么坚持使用。_{左,右,中}Box.insert_child_at_index。

如果您对这种方法有任何问题,请告诉我。


更新:

我环顾四周,发现这种方式不适用于所有扩展(主要仅适用于简单/新扩展)。在这种情况下经常使用的扩展是“系统监视器”。修改图标位置的方式应该(一般)一样(我没有测试过。所以一定要创建一个备份文件)。但是“系统监视器”存在一些差异:

  1. 您必须搜索的函数称为var enable = function ()。所以最好enable在文件中搜索这个词。
  2. 定义图标位置的地方称为Main.panel._addToPanelBox('system-monitor', tray, 1, panel);。更改数字应具有与上述相同的效果。为了改变整个区域,您有两个选择:

    • 通过将同一行更改为Main.panel._addToPanelBox('system-monitor', tray, 1, Main.panel._rightBox);(注意:扩展程序设置菜单中的位置将不再起作用)。

    • 或者通过将行let panel = Main.panel._rightBox;(再次使用搜索功能)更改为您想要的位置(_leftBox, _centerBox, _rightBox)。

(这些步骤可以应用于任何其他扩展。但名称会略有不同。但仍然:在我对这个答案的第一次尝试中描述了通用方法)


简而言之,整个过程:

搜索相应的文件。然后enable在这个文件里面搜索。然后搜索任何类似的东西Main.panel...并更改值(非常不言自明)。


最后我注意到你提到了时间面板。我没有找到修改它的位置的好方法,但这里有一些别的东西:

您已安装“系统监视器”。很好 :)
打开相应extension.js并将这两行中的“右”一词更改为“左”:
Main.panel._addToPanelBox('dateMenu', dateMenu, -1, Main.panel._rightBox);Main.panel._rightBox.insert_child_at_index(dateMenu.actor, -1);
最后,您必须在此扩展的设置中检查“移动时钟”。你去吧!我还没有测试过,但它应该可以工作。如果没有,请写评论:)

啊!忘了提:每次更改值时,保存文件并使用Alt+ F2- type r- hit刷新面板Enter。并确保创建备份文件!!!:D

  • 通过包管理器安装的扩展放在`/usr/share/gnome-shell/extensions/` (2认同)