如何找出与指示器图标相关联的应用程序?

Amo*_*noy 10 indicator 12.04

在 Ubuntu 10.04 中这样做很简单。该问题特定于 Ubuntu 12.04。

由于某种原因,缺少使用 dbus 和后续实现细节的组合,因此另一个自我编写了答案此处解释了微不足道但有些费力的过程)。

这种反应对于gdbus是有用的,但这个答案是超级有用- (静态系统开销现在已经减少到可接受〜10%)。

一些中肯的参考
(SRC:回答是什么指标和系统托盘之间的区别?
这里是指标的文档:

应用指标| Ubuntu App Developer
libindicate 参考手册
libappindicator 参考手册

ref:如何识别制作指示器图标的应用程序?(此链接不恰当地重定向到https://askubuntu.com/questions/184589/how-can-menu-bars-that-require-a-right-click-be-activated-like-ubuntu-versions
书签:如何找出哪个应用程序与 Ubuntu 12.04 中的指示器图标相关联?
是一个严重的问题,原因和问题如下所述,并且已经进行了大量投资,并且对于补救目的是必要的。


审查参考文献。找到精心策划的解决方案......
(可能需要一个指标ap。指标)


这与右键单击无关(是吗?)。

Ubuntu 12.04 中的指示器图标如何与负责它在顶部面板上显示的程序相匹配?

正在运行的应用程序列表可以包括所有使用System Monitor.

如何为指标找到正确的匹配过程?

如何识别子指标应用?这些是与指标下拉菜单的组件相关联的应用程序。(这是一个单独的问题,很自然地会跟进进展。它被包含在此处,因为很明显,没有设置可以轻松追踪违规的 sub 或指标 aps。)

与一些预期的守护进程和后台任务(如 nm-applet)混合在一起——不仅 Xorg 和 compiz 需要过多的 CPU 时间,而且他们的随行人员也必须出现!进一步加剧了这个问题——我们的计算绑定任务在现场不再有效地工作——电池寿命缩短,定制 ap.s 的 CPU 时间减少等——所有这些都源于对电池 ap 正在发生的事情的检查。指标 - 这过去和现在都不是轻率的、修辞的或闲散的沉思,但会对 12.04 的可信部署产生影响,以减少其在生产环境中的开销的负面影响)减少自定义 ap.s 等的 CPU 时间 - 所有这些都是从检查电池 ap 发生的事情中沉淀出来的。指标 - 这过去和现在都不是轻率的、修辞的或闲散的沉思,但会对 12.04 的可信部署产生影响,以减少其在生产环境中的开销的负面影响)减少自定义 ap.s 等的 CPU 时间 - 所有这些都是从检查电池 ap 发生的事情中沉淀出来的。指标 - 这过去和现在都不是轻率的、修辞的或闲散的沉思,但会对 12.04 的可信部署产生影响,以减少其在生产环境中的开销的负面影响)

(我的电池指示器有问题 - 它有时有 % 和其他时间 hh:mm - 有必要了解 ap. & v. 以获取有关控制相同的更多信息。同上:其他指示器 aps 存在问题。 : NM 与 iwlist/iwconfig 冲突、BT ap. 与 RF 开关、电池 ap. 没有暂停/睡眠以延长电池运行时间,......列表还在继续)

详细信息来自:
如何找到应用程序指示符 ID?

建议查看:
file:///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
Run Code Online (Sandbox Code Playgroud)

这解决了电池ap。识别,大概 nm 是 rf 图标的 NetworkManager,但包络、蓝牙和扬声器指示器 aps。仍然是个谜。(此外,排序不相关。)

请注意,过去很简单,只需右键单击即可获得About查找 ap的选项。&诉信息。

四处浏览:

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

检查:
file:///usr/share/indicators
file:///usr/share/indicators/messages/applications/
...

也许?/大概?寻求的信息可能隐藏在
file:///usr/share/indicators 中

评论中给出了一个参考:
指标和系统托盘有什么区别?
从那个来源引用...

不幸的是,桌面指标还没有得到很好的记录:我找不到任何规范文档......

嗯……实际文档
https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Summary
没有多大帮助,但它的存在信息提供了相当多的洞察力……

Ted*_*uld 3

应用程序指标服务有一个内部 API,允许获取所有指标的列表,其中包括它们的 DBus 地址。您可以使用此命令行来执行此操作:

gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications
Run Code Online (Sandbox Code Playgroud)

您将返回一些不太有用的内容,因为它是伪 JSON 格式。如果您编写脚本,则可以将其放入解析器中并使用它。如果您想只做一次,请通读文本。您正在寻找如下所示的字段::1.XXX 即指标的 DBus 地址。

一旦您获得了指标的地址,您就可以询问 DBus 该指标的 PID 是什么。您请求的 PID:1.123如下所示:

gdbus call --session --dest org.freedesktop.DBus --object-path / --method org.freedesktop.DBus.GetConnectionUnixProcessID :1.123
Run Code Online (Sandbox Code Playgroud)

获得 PID 后,您可以询问/proc有关该过程的信息。例如,如果您想知道用于启动进程号的命令,1您可以执行以下操作:

cat /proc/1/cmndline
Run Code Online (Sandbox Code Playgroud)

祝你好运!


小智 2

很遗憾 -

gdbus call --session --dest com.canonical.indicator.application                \
             --object-path /com/canonical/indicator/application/service        \
                   --method com.canonical.indicator.application.service.GetApplications
Run Code Online (Sandbox Code Playgroud)

并未详尽列举所有指标图标或其子指标。MI(消息指示器)菜单与多个子指示器通信应用程序连接。未列出。还缺少电源、音量和时钟指示器信息。

qdbus使用起来更简单,并d-feet提供一个 GUI 来执行相同的操作,并且可以轻松列出属性值。

使用qdbus方法如下:

qdbus  --literal | sort
Run Code Online (Sandbox Code Playgroud)

三击以选择com.canonical.indicator.application输出中的 w/ nl

...  
:1.97  
:1.98  
 ca.desrt.dconf  
 com.canonical.AppMenu.Registrar  
 com.canonical.hud  
 com.canonical.indicator.application  
 com.canonical.indicator.datetime  
 com.canonical.indicator.messages  
 com.canonical.indicator.printers
 com.canonical.indicator.session
 com.canonical.indicator.sound
 com.canonical.Unity
 ...  
Run Code Online (Sandbox Code Playgroud)

使用向上箭头bash history重复命令编写下一个命令(删除| sort 仅留下qdbus --literal),然后按鼠标中键完成命令:

qdbus  --literal  com.canonical.indicator.application
Run Code Online (Sandbox Code Playgroud)

三次单击最后一行

/
/org
/org/ayatana
/org/ayatana/indicator
/org/ayatana/indicator/service
/com
/com/canonical
/com/canonical/indicator
/com/canonical/indicator/application
/com/canonical/indicator/application/service
Run Code Online (Sandbox Code Playgroud)

按重复历史向上箭头、空格键和鼠标中键来撰写:

qdbus  --literal  com.canonical.indicator.application  /com/canonical/indicator/application/service
Run Code Online (Sandbox Code Playgroud)

双击在输出中选择所需的方法,然后按向上箭头、空格键和鼠标中键创建命令,然后按 Enter 运行它。(为了清楚起见,在此示例中添加了续行符):

qdbus  --literal  com.canonical.indicator.application                \
                 /com/canonical/indicator/application/service        \
                  com.canonical.indicator.application.service.GetApplications
Run Code Online (Sandbox Code Playgroud)

输出BT 和 NM 指示符信息(此处打印得很漂亮以供说明)

[Argument: a(sisossssss)
  {[Argument: (sisossssss)
    "bluetooth-active", 
    0, 
    ":1.155",
    [ObjectPath: /org/ayatana/NotificationItem/bluetooth_manager/Menu],
    "",
    "",
    "",
    "Bluetooth: On",
    "bluetooth-manager",
    "Bluetooth"],
    [Argument: (sisossssss) 
    "nm-signal-75", 
    1, 
    ":1.21", 
    [ObjectPath: /org/ayatana/NotificationItem/nm_applet/Menu], 
    "", 
    "", 
    "", 
    "Wireless network connection 'office WiFi 1' active: office WiFi (77%)", 
    "nm-applet", 
    "Network"]
  }
]
Run Code Online (Sandbox Code Playgroud)

其他指示器被引用为其他com.canonical.indicator. ...接口(在开头列出),但这可能是必须使用的,但子菜单指示器 aps 仍然未识别:

qdbus --literal   com.canonical.AppMenu.Registrar               \
                 /com/canonical/Unity/Panel/Service             \
                  com.canonical.Unity.Panel.Service.Sync
Run Code Online (Sandbox Code Playgroud)

虽然有很多脏东西(可能是图标图像位),但修剪和漂亮的输出是:

[Argument: a(ssssbbusbbi) {
[Argument: (ssssbbusbbi) "libappmenu.so", "0x9733fe0", "", "_File", true, true, 0, "", false, false, 0],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x97352e0", "", "_Edit", true, true, 0, "", false, false, 1],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x9737868", "", "_View", true, true, 0, "", false, false, 2],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x9738920", "", "_Search", true, true, 0, "", false, false, 3],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x9739e10", "", "_Terminal", true, true, 0, "", false, false, 4],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x973c070", "", "Ta_bs", true, false, 0, "", false, false, 5],
[Argument: (ssssbbusbbi) "libappmenu.so", "0x973d6a0", "", "_Help", true, true, 0, "", false, false, 6],
[Argument: (ssssbbusbbi) "libapplication.so", "0x90cdcd0", "bluetooth-manager",  "", false, false, 1, "<... crud ...>", true, true, 300],
[Argument: (ssssbbusbbi) "libapplication.so", "0x8e861a8", "nm-applet",          "", false, false, 1, "<... crud ...>", true, true, 450],
[Argument: (ssssbbusbbi) "libprintersmenu.so", "", "", "", false, false, 0, "", false, false, -1],
[Argument: (ssssbbusbbi) "libmessaging.so",   "0x8dabc7c", "indicator-messages", "", false, false, 1, "<... crud ...>", true, true, 200],
[Argument: (ssssbbusbbi) "libpower.so",       "0x8f0405c", "indicator-power",    "", true, false, 6,
   ". GThemedIcon battery-charged battery-full-charged-symbolic battery-full-charged gpm-battery-charged gpm-battery-100-charging ", true, true, 250],
[Argument: (ssssbbusbbi) "libsoundmenu.so",   "0x8f040b4", "indicator-sound",    "", false, false, 1, "<... crud ...>", true, true, 500],
[Argument: (ssssbbusbbi) "libdatetime.so",    "0x8e8881c", "indicator-datetime", " 1:16:10 AM", true, true, 0, "", false, false, 550],
[Argument: (ssssbbusbbi) "libsession.so",     "0x8e6045c", "indicator-session-devices", "", false, false, 1, "<... crud ...>", true, true, 600]}]
Run Code Online (Sandbox Code Playgroud)

注意:终止号码 600、550、500、450、300、250、200 从右到左关联,将 ap 与其指示器图标相匹配。