Answers:
系统指示器在设计上是固定顺序的。尽管您可能不喜欢该订单,但通过使用固定的订单(我们可以无休止地争论该订单),它使支持变得更容易。应用程序指示器的工作原理略有不同,它们的设计目的是存在默认顺序,但应用程序可以调整顺序以实现连续性。例如,如果一个应用程序具有两个彼此相邻的指示符。
由于此系统可能导致应用程序开发人员滥用,因此系统中存在一组替代项。第一个是在系统级别,因此一旦发行版发现存在滥用的应用程序,它便可以由软件包进行管理,并且可以为所有用户修复该应用程序。它位于:
/usr/share/indicator-application/ordering-override.keyfile
您可以在其中放置任何状态通知者ID,并为其指定新的排序索引,因为该应用程序的新索引是该索引。在您的主目录中也可以存在一个按用户覆盖的文件:
~/.local/share/indicators/application/ordering-override.keyfile
希望这对您以自己喜欢的方式调整面板有帮助!
~/.local/share/indicators
目录。救命!
~/.local
。的文件/usr/share
不包含所有指标应用程序的条目,并且对其进行更改不会产生任何影响。给出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。
.local
,但看不到它正常工作。/usr/share
存在原始的全局文件,这表明它应该可以工作。该文件的解析是否记录在任何地方?如果有任何问题,是否有一种调试方法?
要更改“应用程序指示器”在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
.local
,但看不到它正常工作。/usr/share
存在原始的全局文件,这表明它应该可以工作。该文件的解析是否记录在任何地方?如果有任何问题,是否有一种调试方法?
kill $(pgrep unity-panel-service)
此工作正常后:-)创建之后ordering-override.keyfile
,我已经重新启动,所以我不知道为什么在此面板重新启动后它“被占用”。
root@laptop:~# restart unity-panel-service
不再起作用:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
启用对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