Как узнать, какое приложение связано со значком индикатора?

10

Это просто сделать в Ubuntu 10.04. Вопрос специфичен для Ubuntu 12.04.

Композиция с использованием DBUS с деталями реализации в последующем наблюдении отсутствует по какой - то причине так альтер эго написал ответ (тривиальное , но несколько трудоемкий процесс объясняется здесь ).

Этот ответ относительно gdbusполезен, но этот ответ очень полезен - (издержки покоящей системы теперь уменьшены до приемлемых ~ 10%).

некоторые соответствующие ссылки
(src: ответ на Какова разница между индикаторами и системным треем ? :
Вот документация для индикаторов:

Индикаторы применения | Ubuntu App Developer
libindicate Справочное руководство
libappindicator Справочное руководство

также

ref: Как можно идентифицировать приложение, создающее значок индикатора? (Эта ссылка неправильно перенаправляет на закладку /ubuntu/184589/how-can-menu-bars-that-require-a-right-click-be-activation-like-ubuntu-versions )
. Как узнать, какое приложение связано со значком индикатора в Ubuntu 12.04?
является серьезным вопросом по причинам и проблемам, изложенным ниже и для которых были сделаны значительные инвестиции, и они необходимы для исправительных целей.


рецензирование ссылок чтобы найти согласованное разрешение ...
(может потребоваться индикатор ap.


Это не имеет ничего общего (правда?) С правой кнопкой мыши.

Как сопоставить значок индикатора в Ubuntu 12.04 с программой, отвечающей за его отображение на верхней панели?

Список запущенных приложений может включать все процессы, использующие System Monitor.

Как найти правильный процесс сопоставления для индикатора?

Как определяются субиндикаторные приложения? Это aps, связанные с компонентами раскрывающегося меню индикаторов. (Это должен был быть отдельный вопрос, и он вполне естественно следует за ходом процесса. Он включен здесь, поскольку очевидно, что нет никаких средств, позволяющих легко отследить нарушение как вспомогательных, так и индикаторных точек.)

смешивается с некоторыми ожидаемыми демонами и фоновыми задачами, такими как nm-applet - не только Xorg и compiz требуют чрезмерного процессорного времени, но также и их окружение! дальнейшее усугубление проблемы - наши задачи, связанные с вычислениями, больше не работают эффективно в полевых условиях - сокращается время работы от батареи, сокращается время ЦП для пользовательских приложений и т. д. - и все это обусловлено изучением того, что происходит с аккумулятором. индикатор - это было и не является легкомысленным, риторическим или праздным размышлением, но оно имеет последствия для вероятного развертывания 12.04, чтобы уменьшить негативное влияние его накладных расходов в производственной среде) уменьшенное время процессора для пользовательских устройств и т. д. - и все это вызвано изучением того, что происходит с аккумулятором. индикатор - это было и не является легкомысленным, риторическим или праздным размышлением, но оно имеет последствия для вероятного развертывания 12.04, чтобы уменьшить негативное влияние его накладных расходов в производственной среде) уменьшенное время процессора для пользовательских устройств и т. д. - и все это вызвано изучением того, что происходит с аккумулятором. индикатор - это было и не является легкомысленным, риторическим или праздным размышлением, но оно имеет последствия для вероятного развертывания 12.04, чтобы уменьшить негативное влияние его накладных расходов в производственной среде)

(У меня проблема с индикатором батареи - иногда он имеет%, а иногда - чч: мм - необходимо знать значения ap. И v., Чтобы получить больше информации о том же контроле. То же: есть проблемы с другими индикаторами индикатора. : NM против конфликта iwlist / iwconfig, BT aps против радиочастотного переключателя, Battery ap. W / без приостановки / сна для плохой работы батареи, ... список можно продолжить)

Детали из:
Как я могу найти идентификаторы индикатора приложения?

предлагает посмотреть:
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

который решает батарею ап. идентификация, и, предположительно, nm - это NetworkManager для значка rf, но конверт, синий зуб и индикатор динамика. до сих пор загадка. (Кроме того, порядок не коррелирует.)

Имейте в виду, в прошлом было просто щелкнуть правой кнопкой мыши, чтобы получить Aboutвозможность найти AP. & v. информация.

просмотр вокруг и около:

Файл: ///usr/share/indicator-application/ordering-override.keyfile

осмотрено:
файл: /// usr / share / Indicators
file: /// usr / share / Indicators / messages / Applications /
...

возможно? / предположительно? запрашиваемая информация может быть скрыта в
файле: /// usr / share / Indicators

Ссылка в комментариях была дана:
Какая разница между индикаторами и системным треем?
цитирование из этого источника ...

К сожалению, настольные индикаторы еще недостаточно хорошо документированы: я не смог найти документацию по спецификации ...

Ну ... фактический документ
https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Summary
не сильно помогает, но его экзистенциальная информация обеспечивает значительную проницательность ...

Amos Annoy
источник
а это приложение ...?
Амос раздражает
«Индикатор BT обычно используется Blueman (или аналогичным)» - но как я точно знаю? может быть, я использую "или подобное"? это не помогает - можете ли вы сказать мне, как именно проверить мою систему, чтобы однозначно определить, какое именно приложение связано с каждым индикатором? Служба Unity-Panel-Service отвечает за проявление указанной среды, но как определяются приложения-заполнители, связанные с каждым индикатором?
Амос раздражает
когда правильные апс. целевые вещи, такие как: bluetooth-applet --help (bluetooth-applet:25165): BluetoothApplet-WARNING **: Applet is already running, exitingможет быть сделано - что такое индикатор сообщений? он предположительно получает свой контент для выпадающего меню из:file:///usr/share/indicators/messages/applications/
Amos Annoy
Ответ, который вы цитируете, устарел, я обновил его, надеюсь, это поможет.
Хорхе Кастро
TQ - надеюсь, что - получить хорошее представление о структуре индикатора
Amos Annoy

Ответы:

3

Служба Application Indicator Service имеет внутренний API, который позволяет получить список всех индикаторов, который включает их адреса DBus. Вы можете сделать это с помощью этой командной строки:

gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications

Вы получите что-то не очень полезное, так как это в формате psuedo-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

После того, как у вас есть PID, вы можете запросить /procинформацию о процессе. Например, если вы хотите узнать, какая команда используется для запуска номера процесса, 1вы можете сделать:

cat /proc/1/cmndline

Удачи!

Тед Гулд
источник
сладкий! - не знал, gdbusнадеялся, что существует интерфейс высокого уровня! - хотя это еще не API (индикатор панели приложений) - не должно быть трудно "сделать это так" - надеюсь, что это будет сделано в скором времени - PS очень мило
Amos Annoy
2

1-я итерация

qdbus --literal   com.canonical.AppMenu.Registrar                  \
                 /com/canonical/Unity/Panel/Service                \
                  com.canonical.Unity.Panel.Service.Sync           \
| sed -e 's/[^{]*{\(.*\)}\]/\1/' | sed -e 's/\[[^"]*/[/g'          \
| sed -e 's/\[\(\(\("[^"]*"\|[^,"]*\), \)\{4\}\)[^]]*,\([^,]*\)\]/[\4, \1]/g' \
| sed -e 's/\[\([^,]*\, \)\("[^"]*",\)/[    \1\2                  /g'  \
| sed -e 's/\[ *\(....,.\{24\}\) */[\1/g'  | sed -e 's/\], \[/]\n[/g'  | sort -n -k2

производство:

[  -1, "libprintersmenu.so",  "", "", "", ]
[   0, "libappmenu.so",       "0x9581b90", "", "_File", ]
[   1, "libappmenu.so",       "0x9582ad0", "", "_Edit", ]
[   2, "libappmenu.so",       "0x9583cf0", "", "_View", ]
[   3, "libappmenu.so",       "0x9585828", "", "_Search", ]
[   4, "libappmenu.so",       "0x9586da8", "", "_Tools", ]
[   5, "libappmenu.so",       "0x96575a0", "", "_Documents", ]
[   6, "libappmenu.so",       "0x96596e0", "", "_Help", ]
[ 200, "libmessaging.so",     "0x9238c7c", "indicator-messages", "", ]
[ 250, "libpower.so",         "0x9346c54", "indicator-power", "", ]
[ 300, "libapplication.so",   "0x86a6368", "bluetooth-manager", "", ]
[ 450, "libapplication.so",   "0x930f650", "nm-applet", "", ]
[ 500, "libsoundmenu.so",     "0x9346cac", "indicator-sound", "", ]
[ 550, "libdatetime.so",      "0x931581c", "indicator-datetime", " 4:59:07 PM", ]
[ 600, "libsession.so",       "0x92ed45c", "indicator-session-devices", "", ]

2-я итерация

(со значками, подтверждающими связь)

qdbus --literal   com.canonical.AppMenu.Registrar                  \
                 /com/canonical/Unity/Panel/Service                \
                  com.canonical.Unity.Panel.Service.Sync           \
| sed -e 's/[^{]*{\(.*\)}\]/\1/' | sed -e 's/\[[^"]*/[/g'          \
| sed -e 's/\[\(\(\("[^"]*"\|[^,"]*\), \)\{4\}\)\([^,]*, \)\{3\}\("[^"]*"\)[^]]*,\([^,]*\)\]/[\6, \1 <\5>]/g' \
| sed -e 's/<"">\]/]/g'  | sed -e 's/<"\([^"]*">\]\)/<img src="data:image\/png;base64,\1/g'    \
| sed -e 's/\], \[/<\/td><\/tr>\n<tr><td>/g'  | sort -n -k2 | sed -e 's/, /<\/td><td>/g'        \
| sed -e 's/\[/<html><table>\n<tr><td>/' | sed -e 's/\]/<\/td><\/tr>\n<\/table><\/html>/' >hapi.html

производство:

hapi.png

вот hapi.html (без ячейки на черном фоне):

<tr><td> -1</td><td>"libprintersmenu.so"</td><td>""</td><td>""</td><td>""</td><td> </td></tr>   /*  oops  */
<html><table>
<tr><td> 0</td><td>"libappmenu.so"</td><td>"0x8b12b38"</td><td>""</td><td>"_File"</td><td> </td></tr>
<tr><td> 1</td><td>"libappmenu.so"</td><td>"0x8a1cd30"</td><td>""</td><td>"_Edit"</td><td> </td></tr>
<tr><td> 2</td><td>"libappmenu.so"</td><td>"0x8b01b28"</td><td>""</td><td>"_View"</td><td> </td></tr>
<tr><td> 3</td><td>"libappmenu.so"</td><td>"0x8b35700"</td><td>""</td><td>"_Search"</td><td> </td></tr>
<tr><td> 4</td><td>"libappmenu.so"</td><td>"0x8b11350"</td><td>""</td><td>"_Terminal"</td><td> </td></tr>
<tr><td> 5</td><td>"libappmenu.so"</td><td>"0x8b142f0"</td><td>""</td><td>"Ta_bs"</td><td> </td></tr>
<tr><td> 6</td><td>"libappmenu.so"</td><td>"0x8b37528"</td><td>""</td><td>"_Help"</td><td> </td></tr>
<tr><td> 200</td><td>"libmessaging.so"  </td><td>"0x85c8c7c"</td><td>"indicator-messages"   </td><td>""</td><td> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAd9JREFUOI3t0UFP02AcBvDnfRvMSDzwBUy2CpZwwCN6Mc4FE8iQs9/BCzOytWxzm4EYMWEQMMHExE+gF+JxnuwYRtcWNlrcIurttRuY7WLCeD0V6+iE4cmEJ2nS9/n3/0ubAuf5b0Ocm92KkeEcUQAXzmj9BMFioH84CgDUaTnnSqlsrtXre9vdirVafbtUNt/wQz7ldPT3mAii6B9MpWYV9t02TosyZusPU7MxUfRLhJAeDxjo9fmGstknsWR6TrHtk3HGbF1OpOWlxXml1+cbcs9o+8OU0pGVpadxOfHorzhjth6dScaeP8smKKUjxxyvJYHSa6vLC8q0kpK9cMZsfSoiT79YXX4gCMJ1L8MTBoBms3kxErm3lc48ju/v/7Ccvl7bKyczczNy/H6p0Wj0ddo/yudPBneuwrucFgrdDFctbb1qaevB4I077/NvjT/6Hf1DeOz2xIaaK7p3O8IFNaePjgbHK5aWd7qKWVQlSbolSVKwYhbVo97SPk6GxyYKak5vh4kbBgBrp/pyoD9wiVIaOvEzAbRarfyXr992xYD/LgAEBoZJG6wfAEQ4DdYpnPMD8crVHsD184zN8ivOcfgPbMvY3HrtnIhrMgjgclvXlQygCsA8+8udp5v8AnS3+yjTJl0RAAAAAElFTkSuQmCC"></td></tr>
<tr><td> 250</td><td>"libpower.so"      </td><td>"0x86da454"</td><td>"indicator-power"      </td><td>""</td><td> <img src="data:image/png;base64,. GThemedIcon battery-charged battery-full-charged-symbolic battery-full-charged gpm-battery-charged gpm-battery-100-charging "></td></tr>
<tr><td> 300</td><td>"libapplication.so"</td><td>"0x86a6368"</td><td>"bluetooth-manager"    </td><td>""</td><td> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAWCAYAAAAW5GZjAAAABHNCSVQICAgIfAhkiAAAAchJREFUKJHNkc9LVFEUx7/3YUJF5EhgM6+GoBiEaNEy8g8ogihI2rSXYDIQNxW0EHEROdIsJkwEJ19kDWXRrjSKBgNzHO4d6um7b7xji9RZyFNxMVPvnjYpPXSyRYu+y3M+fL/nB/B/SjlipuTyW9v1jC0VhhgR61aycGNnGKTfZycGAeqplbCpOYd/N00z9jwz/FhJoZXkVwPOSoqEcvkZACAisizr64PBoUS1Ul354eubAdjzvOOk8bLkFM4BoKamfaHUvUSKGUZdMnm/OxBtmuapieybyTmHV4qzvFp0+JS082vxeNs1APu3LBqJRFo+ZscmlRTk2vn19njbdQAN211Dp9Ppwt49u+sBgBnGrtZLF74B8H6HGQDMz4uQX6FxX/tHGYz6crkswuGDJxljl48cOzEacPYr+gmRbh4YSHdprf2unju3FxaXuNZ6pOSKs4GBRzNWX2dHeweARsfOrQ7394ej0WjLTOFTuTjLFza4OgC42HolCWAFwDIAagyF6N3Yq/OMsQOvx9/erfE/wPmS86SdSygpdCrZ2wfgUE3YtfPrSgrKjDy0AByuCQLA9NSHzy+ePXoKIPZH8JdOA2j+G/Df6SfH0s58lIXOZQAAAABJRU5ErkJggg=="></td></tr>
<tr><td> 450</td><td>"libapplication.so"</td><td>"0x869f258"</td><td>"nm-applet"            </td><td>""</td><td> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAvJJREFUOI3tkk9sVFUUxn/n3XmP6WBk/gBCojDTMJPSocNURJSV2qW6EKIkBaRRE5WYsCAahJCMbtREjEkTEzHRhmJFYnRhZGFMmhIWTUmpxVJDZpipmbSdMm1RoH2vnb53XTA11NSWrQm/3T0n35fvnHPhPv9bZLFiNptd4fPsmChvPaJCrqv9BlgAKGPGc+dmDNGTniEjjmMOJZPJ2SWNi8Ur4YrtbTPE26hFDIDKTGV22rFtd9atAChLmYHAyhrTVBaA1tozxJfXKnApFov9ucA4k8kYLXtfSAOPahFjfHxisr9vYLTtq/byhZ6eaWAO8KoaA/A1NTUFDjTvWlu/Jbk+EgmHRIurtdEbjdf3i4gWgKFc/zMa2XTr1tTUF1+2DbS2fl4CpgC7UCiYWt9OaI2lPNd1DXOitra+KCIKqAEC7x8/8vCePbuTln+FX/Cy0U3pTgEY6O/eXSpdnznwypu/Dg8Pl4cGB8NYbrPWulkgpcH3rxXe1JqLhkhHBf938Xi8kk7XPfTpiU8aIpFQTUP6ybPzO14HVDKZzI2X9+06aGg+0PCA57n2WHl8oDQ6VnAcx1bKp4LBVeE1qyPRYHBVQkR8CKN4HI0lUqeAMHdClBYcL5/9bb+gTzm2ff2Xzq6vT3zcen6oWBwB/qru2QD8wIONjakNh946+NTOJ7a/ZFpmUDR7o4lUx7zXghHPfHM2X7c5ceadd9/ryOVyfedOn765+fGGZ0XkaY1s0KLnxGNYoOuHn74/1/LqG92PNTb+fOzY4Rd/H7xa+M/vBgSAR4Brf2SvJDzcH4FaFidvoJ7fGE/mgBhQBKYXTVxtXAUolcfS4VAw0nupr729/duuzvNdZaUsY8eO7aHXX2tpSm/d8tzkjfE0MDivWSrx3awDUkAeGAHsat1fnSoKXAZKi4mXMv6HQvbyh8Dbd176o1h869HlNOpejH2WMusS8Z2O40ycPNn2WXfPxWvLae4pMbAS2AZooJe7jnSfZfkbe1wfX9DFYSoAAAAASUVORK5CYII="></td></tr>
<tr><td> 500</td><td>"libsoundmenu.so"  </td><td>"0x86da4ac"</td><td>"indicator-sound"      </td><td>""</td><td> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAWCAYAAADafVyIAAAABHNCSVQICAgIfAhkiAAAAudJREFUSIntkF1ok1cYx38njTW1rSkOZGjFK52fbKCCzsgWkIF4sV0IAxljIIiyi+mFCOLdwJuJn5tuQ7AVh1VX2Vjpqq6aZc5araZ5bWOak7dvl5W1YtOPtE1i3o+zC410Npoh1St/V+c8zzn/3zkPvOZVYEjtdyOunVRKuZ7uTSq8CP39900Unxmx9u1TkQdAT1z7skdqnwP4fKvfj3a0Depd4ZSut3knnnvmD/rD4XIjrgUNqQUK9dPjmQ0Kjuh6u+/atRt/trTerHW5RKWTc20pKlBKudIefkCxDnhPqXMlAIYMb++Wdz8A+O5E7RFQysra+wDzZG3d947j5EzT3FxU0KN3HBAu8WF+HwhEBIBp2rtQTn0iemfO4aPHfurru3+7tHTa2kT0zpxgMCiTyWSHx+N5W0o5fZKgO6b9ZkhNGVJTKPVFIfGVwB91QoiKtGV/AqT+SvReAlypdHY9YI2OjXcKIdy58eElhX7gLxQ6kWis6xxAOpNZCWA6uRDAWDq9CMAyzV6AgcGBec8d0bOIROISQCBmA1SWlQ8CWLZVCSBEyQiAbVtVLyQ4dGjfTIBMNpMC8FbN8gJksw9HATye0hkAIyOj2UmCZDIZKSZQtrXh0dnBKEBlxYxlAAPJ4e5HAs+bAGOZ8b78HXd+sWqNfyvwBsCvDfXbFr21YOPTglL39L22bWUaG5ouAFSUl3/kOE6usakxCFBW5lnuOI5VU1P35LHuCfdb8otNH3+aaGr4saq6eu7aiYLW1ps/9yQSyeMnakKGDK8GsaL3n77rp06dNXS9zYvlXjk0NHyvubl5qNg0xNKFC323Wq7ebbsRiADicX0+MBtARkPt3THN3rN752YAGQntMKSmzp+p+apYeJ4SYA3wbqHmxcYLp7/9+uBBwPt3Z+eseDT0IHbvdsrv9y/9v4JiLAbmAehd7fWG1NTxbw7s579jnxo6Qi2dVy//cgWonvLwx/iAd15W+HP5F1PVVGkwY49EAAAAAElFTkSuQmCC"></td></tr>
<tr><td> 550</td><td>"libdatetime.so"   </td><td>"0x86a581c"</td><td>"indicator-datetime"   </td><td>" 5:25:55 PM"</td><td> </td></tr>
<tr><td> 600</td><td>"libsession.so"    </td><td>"0x867cc5c"</td><td>"indicator-session-devices"</td><td>""</td><td> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAlZJREFUOI3tlE9IVFEUxr/z/tgkKBHpJhEkRF4LV1GOIC2yRcxEEmGLJHAIhXCjCzdu3BVBC3VTi9rr2iwt9Q0ElTmO8yZtnOv4JKHIHi7m5XvlDJ4WOTA8549uow/u4p7znd89F869wH8dV6Yw2BQGH9UvFQomEokqIZZqyhWvr8dqE4lE1ZHAQojqCun3tMSKLkSsblPEQ16PmTS6hYjVSfvQVfr1SghRXRacTEYrHcepkQjnFdAmg58daofwXAFtEpHmum5tMhmtLAsOBDp3+geGBpk5C0B2XPe71+O47jYAmZmz/QNDg4FA505ZMIC9sZGH9USkOLvO1zt37/V6Dd3d93udXecbESmjIw/qAOwdBQxmdAHAm/nwk+Xl+JQ3vxCJTM3Nh58CAIO6CjGU/I13nCLRpXEAGQBoaGy+nn+r2NKniWDw2vBJn+9irq6hsZlKdpxTS8vlH3nbyYMFAGhrb98uVetVEEAw8iG8agqDP8cXbhYzrsYXbpvC4MX3+mquLj/v7XgSwGQqtfESABRVeWSa0VNe6NbKyukKVX0MAKnUxgvvbQqBAQBzs2/HmTmryMo5zsgfzXWj4+9rFNUbInYrq2YNWZbPMnM2rL+bKMQgb2BtbfGMSuosETUzY5+o6OTsE0FiZiPDmStNTReskh3regTptC3Z9s8voZ6+0PTr2THLsoxc3rIsY2ZmbjTU0xeybXsrnbZJ1yOFzj4kRdO0q62tl24A8AGoB+DP+938BzFfW5u/Q9O0dnjGtiQcQEV+oMi3eeI40GI6NFL/lv4A7ogQZ4Yx+nYAAAAASUVORK5CYII="></td></tr>
</table></html>

Подтверждено: [crud] - это данные изображения значка согласно data:image/png;base64,[crud]

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAWCAYAAADafVyIAAAABHNCSVQICAgIfAhkiAAAAudJREFUSIntkF1ok1cYx38njTW1rSkOZGjFK52fbKCCzsgWkIF4sV0IAxljIIiyi+mFCOLdwJuJn5tuQ7AVh1VX2Vjpqq6aZc5araZ5bWOak7dvl5W1YtOPtE1i3o+zC410Npoh1St/V+c8zzn/3zkPvOZVYEjtdyOunVRKuZ7uTSq8CP39900Unxmx9u1TkQdAT1z7skdqnwP4fKvfj3a0Depd4ZSut3knnnvmD/rD4XIjrgUNqQUK9dPjmQ0Kjuh6u+/atRt/trTerHW5RKWTc20pKlBKudIefkCxDnhPqXMlAIYMb++Wdz8A+O5E7RFQysra+wDzZG3d947j5EzT3FxU0KN3HBAu8WF+HwhEBIBp2rtQTn0iemfO4aPHfurru3+7tHTa2kT0zpxgMCiTyWSHx+N5W0o5fZKgO6b9ZkhNGVJTKPVFIfGVwB91QoiKtGV/AqT+SvReAlypdHY9YI2OjXcKIdy58eElhX7gLxQ6kWis6xxAOpNZCWA6uRDAWDq9CMAyzV6AgcGBec8d0bOIROISQCBmA1SWlQ8CWLZVCSBEyQiAbVtVLyQ4dGjfTIBMNpMC8FbN8gJksw9HATye0hkAIyOj2UmCZDIZKSZQtrXh0dnBKEBlxYxlAAPJ4e5HAs+bAGOZ8b78HXd+sWqNfyvwBsCvDfXbFr21YOPTglL39L22bWUaG5ouAFSUl3/kOE6usakxCFBW5lnuOI5VU1P35LHuCfdb8otNH3+aaGr4saq6eu7aiYLW1ps/9yQSyeMnakKGDK8GsaL3n77rp06dNXS9zYvlXjk0NHyvubl5qNg0xNKFC323Wq7ebbsRiADicX0+MBtARkPt3THN3rN752YAGQntMKSmzp+p+apYeJ4SYA3wbqHmxcYLp7/9+uBBwPt3Z+eseDT0IHbvdsrv9y/9v4JiLAbmAehd7fWG1NTxbw7s579jnxo6Qi2dVy//cgWonvLwx/iAd15W+HP5F1PVVGkwY49EAAAAAElFTkSuQmCC
джордж роуэлл
источник
В идеале, вместо HTML, bash-скрипт, заполняющий индикаторную панель встроенным идентификатором значка HAPI ap, который включает версию резидентного aps, будет способствовать выделению информации о конкретной версии, нюансов и уникальных функциональных возможностей.
Джордж Роуэлл
Скользящие ранты проявляются двумя способами - второй путь здесь с искусственным языком, основанным на 1-м, с естественным языком и вызванным последующим раздражением, раздражением или раздражением, обычно анонимно (раздражающе) (т.е. плохо обусловленные, неопознанные версии и версии раздражать анонимно) таким образом, альтер эго - Амос раздражает (ред.)
Джордж Роуэл
Примечание: поле со значком индикатора питания немного шаткое и нетрадиционное? по сравнению с полевым использованием w / icon данных других аппов - даже тех, у которых меняются иконки, такие как NM
george rowell
2

К сожалению -

gdbus call --session --dest com.canonical.indicator.application                \
             --object-path /com/canonical/indicator/application/service        \
                   --method com.canonical.indicator.application.service.GetApplications

не исчерпывающе перечисляет все значки индикаторов или их подиндикаторы. Меню MI (индикатор сообщений) взаимодействует с несколькими субиндикаторами связи. не перечислены Также отсутствуют данные о мощности, громкости и индикаторах часов.

qdbusпроще в использовании и d-feetпредоставляет графический интерфейс для того же, а также легко перечисляет значения свойств.

Используйте qdbusследующим образом:

qdbus  --literal | sort

тройной щелчок, чтобы выбрать com.canonical.indicator.applicationw / 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
 ...  

Составьте следующую команду с помощью bash historyкоманды повтора вверх (удалите, | sort чтобы оставить просто qdbus --literal) и нажмите среднюю кнопку мыши, чтобы завершить команду:

qdbus  --literal  com.canonical.indicator.application

Тройной клик по последней строке

/
/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

Нажмите стрелку повторения истории, пробел и среднюю кнопку мыши, чтобы составить:

qdbus  --literal  com.canonical.indicator.application  /com/canonical/indicator/application/service

Дважды щелкните, чтобы выбрать нужный метод в выходных данных и нажмите клавишу со стрелкой вверх, пробел и среднюю кнопку мыши, чтобы создать команду, и нажмите Enter, чтобы запустить ее. (для ясности в этом примере добавлено продолжение строки):

qdbus  --literal  com.canonical.indicator.application                \
                 /com/canonical/indicator/application/service        \
                  com.canonical.indicator.application.service.GetApplications

Это выводит только информацию об индикаторах 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"]
  }
]

Другие индикаторы упоминаются как другие com.canonical.indicator. ...интерфейсы (перечислены в начале), однако это, вероятно, необходимо, но индикаторы подменю все еще не определены:

qdbus --literal   com.canonical.AppMenu.Registrar               \
                 /com/canonical/Unity/Panel/Service             \
                  com.canonical.Unity.Panel.Service.Sync

хотя есть много грубого (вероятно, биты изображения значка), сокращенный и prettied вывод:

[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]}]

Примечание: конечные числа 600, 550, 500, 450, 300, 250, 200 соотносятся справа налево, сопоставляя апы с их значками индикатора.

джордж роуэлл
источник
к сожалению, aps не имеют соответствующих номеров версий для идентификации некорректно установленных установок и последующей деградации системы - вручную трудоемко выявлять поврежденные индикаторные aps с их конкретными версиями на скомпрометированных системах. Кто-нибудь знает, как найти способ их идентификации? когда их О меню отсутствуют?
Джордж Роуэлл