闲事休管 无事早归

修改Ubuntu状态栏托盘图标顺序

状态栏托盘图标顺序,在/usr/share/indicator-application/ordering-override.keyfile修改:

直接修改这个文件会在所有用户中生效,如果只要在当前用户改变图标顺序,把这个文件复制到 ~/.local/share/indicators/application 目录下就可以了:

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

我是直接修改:

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

文件的内容类似这样(顺序越大则显示在托盘越左侧):

[Ordering Index Overrides]
nm-applet=1
gnome-power-manager=2
ibus=3
gst-keyboard-xkb=4
gsd-keyboard-xkb=5

可以按自己的需要添加或调整:

[Ordering Index Overrides]
nm-applet=1 #系统图标
gnome-power-manager=2 #电池图标
ibus=3 #ibus输入法
gst-keyboard-xkb=4 
gsd-keyboard-xkb=5
netease-cloud-music=6 #网易云音乐
electronic-wechat1=7 #微信
Shadowsocks-Qt5=8 #SS
fcitx-qimpanel=9 #fcitx输入法
Nylas N11=10 #N1邮件客户端
chrome_app_indicator_3=11 #Chrome图标
indicator-sysmonitor=20 #网速指示器

如果要查看自己的系统有哪些状态栏托盘图标,可以编辑一个脚本:

sudo vim icon.sh

添加:

#!/bin/sh
 
dbus-send --type=method_call --print-reply --dest=com.canonical.indicator.application /com/canonical/indicator/application/service com.canonical.indicator.application.service.GetApplications | grep "string" > /tmp/indicators.txt
 
c=$(wc -l < /tmp/indicators.txt)
i=$((c / 8))
s=6
 
while [ "$i" != "0" ]; do
    echo $(awk -v n=$s '/string/ && !--n {getline; print; exit}' /tmp/indicators.txt)
    s=$(( $s + 8 ))
    i=$(( $i - 1 ))
done

运行:

sudo ./icon.sh

比如我的,结果显示:

string "chrome_app_indicator_4"
string "Nylas N11"
string "indicator-sysmonitor"
string "Shadowsocks-Qt5"
string "fcitx-qimpanel"
string "electronic-wechat1"
string "netease-cloud-music"
string "nm-applet"

需要注意的是,想要将一个托盘图标设置在最左边,只修改该 indicator 的顺序值是不行的,要修改所有在它右边的 indicators 的顺序值。

修改完成后可以直接运行 $restart unity-panel-service 使改变生效,如果命令不可用,注销并重新登入即可。

感谢:http://www.slblog.net/2014/05/change-the-order-of-indicators-in-ubuntu-indicators-applet

  1. 五卡说道:

    没用过,学习了

  2. mashiro说道:

    请问,如果不想显示一个图标,比如ss,应该怎样隐藏呢?

  3. mashiro说道:

    补上图 https://mashirozx.files.wordpress.com/2017/04/2017-04-07-23-52-27e5b18fe5b995e688aae59bbe.png
    单纯想把ss的绿色logo隐藏,阻止其显示有何方法呢?
    谢谢。

    1. 你可以ps一个1x1px的透明图标替换ss的logo

  4. Marv_说道:

    你好,我试了一下那段sh的脚本,就是从!/bin/sh开始到done为止的所有代码,我都复制了进去,但好像会报错:
    ./icon.sh: 1: ./icon.sh: !/bin/sh: not found
    Error org.freedesktop.DBus.Error.ServiceUnknown: The name com.canonical.indicator.application was not provided by any .service files
    如果我用#注释了第一行,也就是在!/bin/sh之前的话,也还是会报错:
    Error org.freedesktop.DBus.Error.ServiceUnknown: The name com.canonical.indicator.application was not provided by any .service files

    请教了~谢啦~

    1. 我更新了一下文章,你看看重新复制一下行不行。

  5. Marv_说道:

    Failed to open connection to "session" message bus: /usr/bin/dbus-launch terminated abnormally with the following error: No protocol specified
    Autolaunch error: X11 initialization failed.
    似乎还是有一些问题,不过是新问题了。哈哈哈哈哈哈哈哈哈

发表评论

电子邮件地址不会被公开, * 为必填项,必须包含中文,不能提交URL。