是否可以更改指示器小程序中图标的顺序?


49

是否可以更改指示器小程序中显示的图标顺序?除了经典的Messages指示器和Sound Menu指示器外,还具有Tomboy指示器,Weather指示器,剪贴板管理器指示器,Ubuntu One和Dropbox指示器以及Battery Status指示器,而我的Indicator Applet有点混乱,对图标进行排序将很有帮助...


1
不是答案,而是在kde(kubuntu)下,我可以在桌面和面板上放置或删除几乎所有东西,包括指示器。
2012年

Answers:


29

系统指示器在设计上是固定顺序的。尽管您可能不喜欢该订单,但通过使用固定的订单(我们可以无休止地争论该订单),它使支持变得更容易。应用程序指示器的工作原理略有不同,它们的设计目的是存在默认顺序,但应用程序可以调整顺序以实现连续性。例如,如果一个应用程序具有两个彼此相邻的指示符。

由于此系统可能导致应用程序开发人员滥用,因此系统中存在一组替代项。第一个是在系统级别,因此一旦发行版发现存在滥用的应用程序,它便可以由软件包进行管理,并且可以为所有用户修复该应用程序。它位于:

   /usr/share/indicator-application/ordering-override.keyfile

您可以在其中放置任何状态通知者ID,并为其指定新的排序索引,因为该应用程序的新索引是该索引。在您的主目录中也可以存在一个按用户覆盖的文件:

  ~/.local/share/indicators/application/ordering-override.keyfile

希望这对您以自己喜欢的方式调整面板有帮助!


我在第一个文件中列出了系统指标。但是没有~/.local/share/indicators目录。救命!
查理

2
这个答案可能已经过时,我在中没有这样的文件~/.local。的文件/usr/share不包含所有指标应用程序的条目,并且对其进行更改不会产生任何影响。给出14.04的答案会很好。
路易斯·德索萨

1
它可与Ubuntu 14.04一起使用,您只需将要使用的每个指标显式添加到文件中。运行此命令以查找正在使用的命令:dbus-send --type=method_call --print-reply --dest=com.canonical.indicator.application /com/canonical/indicator/application/service com.canonical.indicator.application.service.GetApplications | grep "object path" | sed 's/_/-/g' | cut -d"/" -f5但是,它不适用于Dropbox,因为状态通知程序ID会根据Dropbox的PID进行更改。我在下面添加了一个答案,以基于Dropbox的PID更新ordering-override.keyfile。
Gruzzles 2014年

这对15.04有用吗?我在中创建了文件.local,但看不到它正常工作。/usr/share存在原始的全局文件,这表明它应该可以工作。该文件的解析是否记录在任何地方?如果有任何问题,是否有一种调试方法?
Jean Jordaan 2015年

@ ted-gould能在定位器小程序源中查明代码以使顺序固定吗?
库尔希德·阿拉姆

17

官方的ubuntu文件(天气,ubu-one,电池,消息,我,声音,关机)已硬编码到位。糟透了 其他的则应使用先到先得的规律,左右优先。从这个头脑风暴/功能请求来看,答案是:不,您不能通过gui手动更改图标的顺序。但请参阅@Ted Gould的答案。


1
我-我也有那个错误。好发现。谢谢。
Scaine

11

要更改“应用程序指示器”在Unity面板上的位置,必须编辑ordering-override.keyfile位于下的名为的文件/usr/share/indicator-application。由于编辑此文件将更改所有用户的设置,因此您可以将其复制~/.local/share/indicators/application/ordering-override.keyfile并仅对您的用户进行更改:

mkdir -p ~/.local/share/indicators/application
cp /usr/share/indicator-application/ordering-override.keyfile ~/.local/share/indicators/application/

现在,通过在终端中运行以下命令来打开文件:

gedit ~/.local/share/indicators/application/ordering-override.keyfile

在此文件中,您应该在面板上看到“应用程序指示器”顺序的现有规则。第一个是nm-applet,其值为“ 1”,这意味着它将是第一个从右到左在面板上显示的应用程序指示器。

以该示例为例,您可以添加自己的应用程序指示器并通过输入名称和数字来指定其位置,例如,如果出现以下情况,transmission=6则传输应用程序指示器将显示为面板上的第六个指示器(从右到左)。其他5个指标存在。

资料来源:http : //www.webupd8.org/2011/06/how-to-change-application-indicators.html

现在,就您而言,ordering-override.keyfile文件应如下所示:

[Ordering Index Overrides]
nm-applet=1
My_Weather_Indicator=2
lang_indicator=3
bluetooth_manager=4
indicator_sysmonitor=5
transmission=6

1
@James这显然也适用于应用程序提供的指示器,因为以传输为例。
Lao Lam

这对15.04有用吗?我在中创建了文件.local,但看不到它正常工作。/usr/share存在原始的全局文件,这表明它应该可以工作。该文件的解析是否记录在任何地方?如果有任何问题,是否有一种调试方法?
让·乔丹

kill $(pgrep unity-panel-service)此工作正常后:-)创建之后ordering-override.keyfile,我已经重新启动,所以我不知道为什么在此面板重新启动后它“被占用”。
Jean Jordaan 2015年

重新启动面板的这种方式root@laptop:~# restart unity-panel-service不再起作用:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan

4

启用对Dropbox指标排序的说明

按照Ted Gould的说明进行操作,然后,如果您想对Dropbox指示器进行排序,请执行以下几个步骤:

注意:如果您在其中编辑文件,/usr/share/...则必须将脚本放入/etc/rc.local(查找注意以下)

由于Dropbox会将PID附加到指标名称,并且每次Dropbox启动时都会更改,因此您需要在ordering-override.keyfile每次Dropbox启动时进行更新。

为此,您可以打开一个文本编辑器,复制并粘贴以下脚本,并将其命名为start-dropbox.sh。然后右键单击,选择“属性”,转到“权限”选项卡,然后选中“允许以程序方式执行文件”框,或打开终端,导航到放置脚本的文件夹,然后运行运行sudo chmod 755 ./start-dropbox.sh

#!/bin/bash
#Disclaimer: This script is intended for use with Ubuntu 14.04. You alone are responsible any consequence resulting from its use.
#The purpose of this script is to start dropbox, update the keyfile, and restart the indicator panel.

#Start dropbox if not already started (for some reason pgrep didn't work)
[[ $(ps aux | grep dropbox | grep dist | awk '{print $2 }') = "" ]] && dropbox start -i

#If the override file exists
if [[ -e ~/.local/share/indicators/application/ordering-override.keyfile ]]
then
    while [ "$(ps aux | grep dropbox | grep dist | awk '{print $2 }')" = "" ]; do
        sleep 1s
    done
    sleep 5s #dropbox creates several PIDs, so wait a bit before continuing
    sed -e "s/dropbox-client-.*=/dropbox-client-$(ps aux | grep dropbox | grep dist | awk '{print $2 }')=/g" -i ~/.local/share/indicators/application/ordering-override.keyfile
    restart unity-panel-service
fi

现在您可以打开“启动应用程序,并输入新内容,并以脚本的完整路径作为”命令”(使用〜/ start-dropbox.sh无效,您必须执行/ home / yourname / start -dropbox.sh)。

**注意:这是将完整脚本路径添加到末尾的位置/etc/rc.local

一个可选步骤是打开保管箱设置,然后取消选中“系统启动时启动保管箱”。您不能仅更改“启动应用程序”列表中已经存在的Dropbox命令,因为Dropbox每次启动时都会覆盖该命令。

你完成了!

这是我的~/.local/share/indicators/application/ordering-override.keyfile样子:

[Ordering Index Overrides]
multiload=13
My-Weather-Indicator=12
redshift=11
Diodon=10
Chars=9
indicator-brightness=8
dropbox-client-24651=7
nm-applet=6
gnome-power-manager=5
ibus=4
gst-keyboard-xkb=3
gsd-keyboard-xkb=2
chrome-app-indicator-1=1

root@laptop:~# restart unity-panel-service restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
让·乔丹
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.