Cinnamon: «Включить поддержку индикаторов» не работает должным образом, значок Nextcloud на панели задач не отображается

Созданный на 30 дек. 2016  ·  40Комментарии  ·  Источник: linuxmint/cinnamon

Cinnamon версия 3.2.7

При включении «Включить поддержку индикаторов» значок клиента синхронизации Nextcloud не отображается на панели задач. Однако кнопка есть, и можно открыть меню и т. Д.
image

В журнале Looking Glass вы можете видеть, что Cinnamon снова и снова пытается добавить значок Nextcloud на панели задач. И иногда вы видите эти сообщения об ошибках DBus. Журнал продолжает заполняться этими сообщениями, пока работает клиент Nextcloud. Корица также зависает на долю секунды каждый раз, когда пытается добавить значок.

info t=2016-12-30T09:43:41Z Adding indicator: Nextcloud
info t=2016-12-30T09:43:41Z Adding indicator: Nextcloud
info t=2016-12-30T09:43:42Z Adding indicator: undefined
warning t=2016-12-30T09:43:42Z While reading menu layout: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.StatusNotifierItem-8155-1 was not provided by any .service files
warning t=2016-12-30T09:43:42Z While reading menu layout: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.StatusNotifierItem-8155-1 was not provided by any .service files
warning t=2016-12-30T09:43:42Z Invalid menu: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.StatusNotifierItem-8155-1 was not provided by any .service files
info t=2016-12-30T09:43:42Z Adding indicator: Nextcloud
info t=2016-12-30T09:43:44Z Adding indicator: Nextcloud
info t=2016-12-30T09:43:45Z Adding indicator: Nextcloud
warning t=2016-12-30T09:43:45Z Invalid menu: Gio.DBusError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.StatusNotifierItem-8155-1 was not provided by any .service files
info t=2016-12-30T09:43:45Z Adding indicator: Nextcloud
info t=2016-12-30T09:44:41Z Adding indicator: Nextcloud
info t=2016-12-30T09:45:11Z Adding indicator: Nextcloud
info t=2016-12-30T09:45:41Z Adding indicator: Nextcloud
info t=2016-12-30T09:46:11Z Adding indicator: Nextcloud
info t=2016-12-30T09:46:41Z Adding indicator: Nextcloud

Вышесказанное также верно для клиента синхронизации ownCloud, который в основном является тем же приложением, что и клиент синхронизации Nextcloud.

Если параметр «Включить поддержку индикаторов» отключен, значок на панели задач работает должным образом, но не работает как значок индикатора.

Самый полезный комментарий

Уродливый обходной путь, пока он не будет исправлен в Cinnamon.

В /usr/share/cinnamon/js/ui/indicatorManager.js:

    // updates the base icon
    _updateIcon: function() {
        // remove old icon
        if (this._mainIcon.get_child()) {
            let child = this._mainIcon.get_child();

            if (child.inUse)
                child.inUse = false;
            else if (child.destroy)
                child.destroy();

            this._mainIcon.set_child(null);
        }

        // place to save the new icon
        let newIcon = null;

        // we might need to use the AttentionIcon*, which have precedence over the normal icons
        if (this._indicator.status == SNIStatus.NEEDS_ATTENTION) {
            let [ name, pixmap, theme ] = this._indicator.attentionIcon;

            // workaround due to IconPixmap issue
            if(name == ""){
                if(Gtk.IconTheme.get_default().has_icon(this._indicator.id.toLowerCase())){
                    name = this._indicator.id.toLowerCase();
                } else if(Gtk.IconTheme.get_default().has_icon(this._indicator.id)){
                    name = this._indicator.id;
                } else {
                    name = "error";
                }
            }
            // workaround end

            if (name && name.length)
                newIcon = this._cacheOrCreateIconByName(name, theme, this._iconSize);

            if (!newIcon && pixmap)
                newIcon = this._createIconFromPixmap(pixmap, this._iconSize);
        }

        if (!newIcon) {
            let [ name, pixmap, theme ] = this._indicator.icon;

            // workaround due to IconPixmap issue
            if(name == ""){
                if(Gtk.IconTheme.get_default().has_icon(this._indicator.id.toLowerCase())){
                    name = this._indicator.id.toLowerCase();
                } else if(Gtk.IconTheme.get_default().has_icon(this._indicator.id)){
                    name = this._indicator.id;
                } else {
                    name = "error";
                }
            }
            // workaround end

            if (name && name.length)
                newIcon = this._cacheOrCreateIconByName(name, theme, this._iconSize);

            if (!newIcon && pixmap)
                newIcon = this._createIconFromPixmap(pixmap, this._iconSize);
        }

        this._mainIcon.set_child(newIcon);
    },

Все 40 Комментарий

Посмотрите, поможет ли это:
https://forum.owncloud.org/viewtopic.php?f=14&t=17243

Привет @lestcape , проблема, обсуждаемая на форумах

Однако моя текущая проблема заключается в том, что кнопка находится в трее, но значок не отображается. То же самое происходит независимо от того, при запуске или при запуске приложения вручную. Как вы можете видеть на скриншоте, доступ к меню возможен, даже если значок не отображается, а ширина кнопки очень мала + в журнале Looking Glas есть сообщения об ошибках.

Хорошо, но в сообщении об ошибке говорится, что служба не была предоставлена ​​... Таким образом, такие вещи могут быть связаны со временем запуска службы. Есть мастер-сервис, который локализовал конкретный сервис для определенного индикатора. Затем эта процедура выполняется автоматически, и тогда нет конкретного определения того, как должна быть вызвана служба или где она находится. Скорее всего, это не будет связано с процедурой индикаторов корицы, так как сервис локализован точно так же, как и другие индикаторы в главном сервисе, где все индикаторы регистрируются. Если клиент не будет работать как другие клиенты, в первую очередь, это должно быть ошибкой самого клиента. Это не означает, что мы ничего не можем сделать, но означает, что нам нужно делать разные вещи для конкретного индикатора, и, конечно, это не лучший вариант.

@guzzard, ты это делаешь:

Теперь мы меняем нижний «n» на верхний «N», иначе на панели управления Ubuntu не появится значок:

sed -i 's / Icon = nextcloud / Icon = Nextcloud / g' src / gui / nextcloud.desktop
sed -i 's / Icon [(. *)] = nextcloud / Icon [1] = Nextcloud / g' src / gui / nextcloud.desktop
сделать && сделать установку

Источник: https://www.c-rieger.de/how-to-install-nextcloud-desktop-client-for-ubuntu/

У них видимо разные названия иконок ... В windows это не проблема, в linux - нет.

Посмотрите, что они делают: https://github.com/nextcloud/client_theming/commit/99841e9a4030a24d8487bdbae48bf69e8206e613

Вам нужно будет отменить эту фиксацию, а затем установить Nextcloud

Смотрите также это: https://github.com/owncloud/client/issues/4693

«Корица также зависает на долю секунды каждый раз, когда пытается добавить значок».

Они это знают (https://github.com/owncloud/client/issues/4990) и работают над этим, см.:
https://github.com/owncloud/client/issues/5389#issuecomment -268467712

Nextcloud использует тот же код owncloud. Они изменяют только некоторые вещи из кода owncloud.

И не думайте, что это связано только с корицей: https://github.com/owncloud/client/issues/5074

Привет, @lestcape , я очень признателен за то, что вы уделили время

https://github.com/nextcloud/client_theming/commit/99841e9a4030a24d8487bdbae48bf69e8206e613, похоже, не связаны. Файл .desktop имеет правильное название "Nextcloud".

https://github.com/owncloud/client/issues/5311 относится к другому DE (Budgie Desktop).

https://github.com/owncloud/client/issues/4693 установка QT_QPA_PLATFORMTHEME = generic не имеет значения. Значок все еще отсутствует, как на моем скриншоте.

https://github.com/owncloud/client/issues/4990 / https://github.com/owncloud/client/issues/5389#issuecomment -268467712 Я думаю, что это может быть другая проблема, потому что я не вижу никаких скачки или высокая загрузка процессора. Дело только в том, что Cinnamon визуально зависает примерно на 0,1 секунды, когда значок пытается добавить.

Однако я думаю, что проблема связана с ownCloud / Nextcloud, поскольку при создании меню появляются сообщения об ошибках. Я также сделаю отчет о проблеме в Nextcloud и дам ссылку на этот отчет.

изменить: я тестировал с набором OWNCLOUD_MINIMAL_TRAY_MENU = 1. При таком значении переменной индикатор добавляется только один раз, все еще без видимого значка, как на моем скриншоте, но в журнале Looking Glas нет ошибок.

@guzzard Что я

Вы ошибаетесь, когда говорите: « https://github.com/nextcloud/client_theming/commit/99841e9a4030a24d8487bdbae48bf69e8206e613 кажется не связанным. Файл .desktop имеет правильное название« Nextcloud ».

Это не имеет ничего общего с файлом рабочего стола. Это должно быть связано с тем, что код индикатора находится на стороне owncloud, и если вы измените имя значка на стороне Nextcloud и ничего не сделаете на стороне owncloud, у вас будут непревзойденные имена значков ...

@guzzard An также видит, что вы сообщаете о 2 вещах, об отсутствующем значке и «Корица также зависает на долю секунды каждый раз, когда пытается добавить значок».

Зависания не имеют ничего общего с иконками, поэтому, конечно, я обращаюсь к проблемам с зависаниями, а не с иконками ... Итак, им нечего делать, и вы не можете найти там решение для иконок.

Решение проблемы с иконками содержится в моем предыдущем комментарии.

@lestcape Я тестировал в gnome-shell 3.22 с включенной поддержкой appindicator, чтобы увидеть, было ли поведение таким же. Проблема в том, что все работает нормально. Так что я немного запутался. Вы говорите, что изменения, внесенные в код клиента Nextcloud, сломали значок и заставили его перестать работать (если я правильно понимаю), но в этом случае клиент Nextcloud также должен быть сломан при запуске в gnome-shell? Но это не то, что видно на скриншоте. Значок / меню Appindicator работает нормально.

nextcloud_gnome_shell_appindicator

@guzzard, извините, я полагаю, что это проблема, потому что то же самое должно произойти и с gnome-shell ... Просто я не хочу устанавливать Nextcloud, мне это не нравится и у меня много требований, но я нужно будет сделать это сейчас, когда я немного уверен в проблеме ...

@guzzard, я не могу воспроизвести проблему, о которой вы упомянули, из главного брана Nextcloud ...
nextcould
nextcould-2

captura de pantalla de 2017-01-06 19-09-48

Конечно, если вы перезапустите Cinnamon, вы потеряете значок, но это также произойдет с передачей и другими индикаторами ... Вероятно, вы не видите значок на первом изображении, но он есть ...

captura de pantalla de 2017-01-06 22-41-51

Я вижу, что у меня вообще нет значков, если "Включить поддержку индикаторов", он не активен ... Я ничего не знаю о значках состояния ...

@lestcape, спасибо, что потратили время на тестирование nextcloud. Я вижу, что значок присутствует на всех скриншотах.

Я пробовал несколько разных версий клиента nextcloud и owncloud, бинарных пакетов и собранных из исходников. Я получаю одинаковый результат для всех. Appindicator не работает в Cinnamon, но он работает в gnome-shell. Я предполагаю, что это должно быть связано с чем-то в моей конкретной установке / конфигурации Cinnamon, которая вызывает проблемы, поскольку она отлично работает для вас, и она отлично работает для меня в gnome-shell на том же компьютере.

Я не знаю, что еще я могу протестировать на данный момент. Если у Вас есть предложения, пожалуйста, дайте мне знать. Благодаря!

Я думаю, что есть проблемы с обеих сторон, и разные версии имеют разные проблемы ... Совершенно непросто заставить его работать в этом контексте. Они работают над этим, поэтому будет больше изменений. Так что, пожалуйста, немного, может быть, они найдут способ заставить его работать лучше для большего количества окружений рабочего стола ... С моей точки зрения, индикаторы / значки состояния, вероятно, сейчас самая проблемная вещь в Cinnamon. @clefebvre также подумает о форке appindicator, потому что на самом деле сложно попытаться исправить то, что вы не можете изменить код ... Вероятно, это произойдет, и мы сможем больше контролировать, что хочет клиент, но также это не будет полное решение, потому что решение будет исправлять всех клиентов и, конечно, это невозможно. Но это мое мнение.

некоторые для Telegram и TeamSpeak 3 - иконки в трее не видны!
Также проблемы с меню со Steam, но не подтверждены, если клиент Steam или корица, потому что отображается значок, просто меню не отображается.

Значок Nextcloud появился, когда я его впервые установил. Сейчас его не видно, но демон точно работает.
Та же проблема с dropbox, кстати.

[обновление] Я включил задержку запуска 10 секунд, теперь отображается значок dropbox, но не nextcloud = (

Linuxmint 18.01, cinnamon 3.2.7, nextcloud 2.3.1, dropbox 26.4.24

@lestcape , @guzzard : я не знаю, https://github.com/nextcloud/client_theming/issues/57 , но если это так, https://github.com/nextcloud/client_theming/commit / 99841e9a4030a24d8487bdbae48bf69e8206e613 определенно виноват

Индикатор @ Fjodor42 отлично работает в Gnome Shell и т. Д. Если вы посмотрите на предыдущие комментарии, @lestcape также, похоже, думает, что имя значка не является проблемой после того, как я подтвердил, что он отлично работает в Gnome Shell, но не в Cinnamon.

В любом случае, я «решил» проблему, отключив поддержку индикаторов в Cinnamon и установив апплет Colapsible Systray, чтобы значки в трее отображались красиво с правильным размером и т. Д.

@guzzard Я все еще не уверен, что клиент Nextcloud действительно ведет себя должным образом, но разница, которую вы видите, может быть связана с тем, что у Cinnamon нет определенных стандартных значков, как видно из вывода

strace nextcloud 2>&1 |grep hicolor | grep png | grep apps
nextcloud-strace.txt

Хммм, я пробовал client_theming HEAD без и с возвратом https://github.com/nextcloud/client_theming/commit/99841e9a4030a24d8487bdbae48bf69e8206e613 - без разницы.

Кажется, Корица все-таки может быть виновата ...

Здесь та же проблема, что и у @guzzard .

Это может быть проблема с упаковкой, связанная с именами файлов, хотя и не такая, как nextcloud / client_theming @ 99841e9 .

Начиная с dpkg-query -L nextcloud-client , имена файлов не заканчиваются на -icon :

/.
/usr
/usr/bin
/usr/bin/nextcloud
/usr/bin/nextcloudcmd
/usr/share
/usr/share/applications
/usr/share/applications/nextcloud.desktop
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/nextcloud-client
/usr/share/doc
/usr/share/doc/nextcloud-client
/usr/share/doc/nextcloud-client/copyright
/usr/share/doc/nextcloud-client/changelog.Debian.gz
/usr/share/doc/nextcloud-client/changelog.gz
/usr/share/icons
/usr/share/icons/hicolor
/usr/share/icons/hicolor/32x32
/usr/share/icons/hicolor/32x32/apps
/usr/share/icons/hicolor/32x32/apps/Nextcloud.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_error.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/32x32/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/128x128
/usr/share/icons/hicolor/128x128/apps
/usr/share/icons/hicolor/128x128/apps/Nextcloud.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_error.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/128x128/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/22x22
/usr/share/icons/hicolor/22x22/apps
/usr/share/icons/hicolor/22x22/apps/Nextcloud.png
/usr/share/icons/hicolor/16x16
/usr/share/icons/hicolor/16x16/apps
/usr/share/icons/hicolor/16x16/apps/Nextcloud.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_error.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/16x16/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/256x256
/usr/share/icons/hicolor/256x256/apps
/usr/share/icons/hicolor/256x256/apps/Nextcloud.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_error.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/256x256/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/512x512
/usr/share/icons/hicolor/512x512/apps
/usr/share/icons/hicolor/512x512/apps/Nextcloud.png
/usr/share/icons/hicolor/64x64
/usr/share/icons/hicolor/64x64/apps
/usr/share/icons/hicolor/64x64/apps/Nextcloud.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_error.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/64x64/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/48x48
/usr/share/icons/hicolor/48x48/apps
/usr/share/icons/hicolor/48x48/apps/Nextcloud.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_error.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/48x48/apps/Nextcloud_ok.png
/usr/share/icons/hicolor/72x72
/usr/share/icons/hicolor/72x72/apps
/usr/share/icons/hicolor/72x72/apps/Nextcloud_sync.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_error_shared.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_error.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_warn_shared.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_sync_shared.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_warn.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_ok_shared.png
/usr/share/icons/hicolor/72x72/apps/Nextcloud_ok.png
/etc
/etc/sysctl.d
/etc/sysctl.d/101-sync-inotify.conf

В частности, кажется, что в /usr/share/icons/hicolor/symbolic/ и /usr/share/icons/hicolor/scalable/ не устанавливаются образы.

И часть головоломки, которая действительно не имеет для меня смысла: запуск Nexcloud с sudo дает значок в трее. Возможно, поэтому @lestcape так сложно воспроизвести это - это может быть неприятное взаимодействие с некоторые другие пользовательские настройки в Cinnamon.

Та же проблема. Значок на панели задач Nextcloud работает, а индикатор - нет.

Корица 3.4.6, база Ubuntu 16.04.3

Интересно, что у меня есть ноутбук и настольный компьютер, на которых установлена ​​одна и та же база Ubuntu-Mate 16.04.3 с Cinnamon из того же PPA, но на настольном компьютере проблема возникает, а на ноутбуке - нет!

Я попытался определить источник проблемы, но единственное, что я видел, это то, что запуск с sudo с терминала позволит индикатору показывать, как это видели другие, и что насколько поскольку я могу сказать, что все затронутые приложения основаны на QT (возможно, только> = QT5) ...

У меня было это с Owncloud, Nextcloud, Skype, и совсем недавно radeon-profile все демонстрировали такое поведение ...

Если у кого-то есть что-то, что они хотели бы, чтобы я сравнил между этими двумя системами, спросите, и я с радостью изучу это, было бы здорово, если бы эта проблема была решена.

Привет, @clefebvre и @mtwebster!

Может ли кто-нибудь из вас рассмотреть эту проблему, поскольку, насколько я понимаю,

Я немного покопался в этом ..

Проблема не связана с проблемами именования или путями. Nextcloud / ownCloud упаковывает файлы значков в исполняемый файл, используя систему ресурсов Qt .

В indicatorManager.js такая информация, как 'iconName' и 'iconPixmap' среди прочего, выбирается через dbus. Если доступно 'iconName', оно используется для получения соответствующего значка из / usr / share / icons / ( _createIconByName ). Если «iconName» пусто, вместо него используется «iconPixmap» ( _createIconFromPixmap ). Для Nextcloud / ownCloud «iconName» пусто, поскольку они используют значки, упакованные в исполняемый файл.

Проблема возникает в строке 1249 при попытке получить байты, представляющие значок, из iconPixmap. Это потому, что байты пусты.

Проблема может быть прослежена до строки 822 в функции _getPropertyCallback .

При попытке получить свойство IconPixmap из ответа dbus с let newValue = conn.call_finish(result).deep_unpack()[0].deep_unpack(); возвращаются только ширина и высота, фактические массивы байтов, представляющие значки, не возвращаются.

Однако, используя dbus-monitor, вы можете увидеть, что байтовые массивы возвращаются в ответ от Nextcloud.

method return time=1505897775.678100 sender=:1.580 -> destination=:1.570 serial=36 reply_serial=1203
   variant       array [
         struct {
            int32 32
            int32 32
            array of bytes [
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               ff 3e ff ff ff 19 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00
               --- cut ---
               ff ff ff ff ff fa ff ff ff fb ff ff ff fb ff ff ff fb ff ff ff
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               00
            ]
         }
         struct {
            int32 64
            int32 64
            array of bytes [
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               ff 00 00 00 00 00 00 00 00 00 00 00 00 0d ff ff ff b2 ff ff ff
               --- cut --- 
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               00 00 00 00
            ]
         }
         struct {
            int32 22
            int32 22
            array of bytes [
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
               --- cut ---
               ff f8 ff ff ff ac ff ff ff 88 ff ff ff a9 ff ff ff f6 ff ff ff
               00 00 00 00
            ]
         }
      ]

Я думаю, что проблема заключается потенциально в функции deep_unpack() . Как-то теряется байтовый массив?

Gnome-shell-extension-appindicator также использует dbus для получения значков и успешно это делает. Я кратко посмотрел на реализацию, но единственное, что я заметил, это то, что они используют схему XML для определения интерфейсов dbus и т. Д., Тогда как реализация Cinnamon делает это без схемы XML.

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

Уродливый обходной путь, пока он не будет исправлен в Cinnamon.

В /usr/share/cinnamon/js/ui/indicatorManager.js:

    // updates the base icon
    _updateIcon: function() {
        // remove old icon
        if (this._mainIcon.get_child()) {
            let child = this._mainIcon.get_child();

            if (child.inUse)
                child.inUse = false;
            else if (child.destroy)
                child.destroy();

            this._mainIcon.set_child(null);
        }

        // place to save the new icon
        let newIcon = null;

        // we might need to use the AttentionIcon*, which have precedence over the normal icons
        if (this._indicator.status == SNIStatus.NEEDS_ATTENTION) {
            let [ name, pixmap, theme ] = this._indicator.attentionIcon;

            // workaround due to IconPixmap issue
            if(name == ""){
                if(Gtk.IconTheme.get_default().has_icon(this._indicator.id.toLowerCase())){
                    name = this._indicator.id.toLowerCase();
                } else if(Gtk.IconTheme.get_default().has_icon(this._indicator.id)){
                    name = this._indicator.id;
                } else {
                    name = "error";
                }
            }
            // workaround end

            if (name && name.length)
                newIcon = this._cacheOrCreateIconByName(name, theme, this._iconSize);

            if (!newIcon && pixmap)
                newIcon = this._createIconFromPixmap(pixmap, this._iconSize);
        }

        if (!newIcon) {
            let [ name, pixmap, theme ] = this._indicator.icon;

            // workaround due to IconPixmap issue
            if(name == ""){
                if(Gtk.IconTheme.get_default().has_icon(this._indicator.id.toLowerCase())){
                    name = this._indicator.id.toLowerCase();
                } else if(Gtk.IconTheme.get_default().has_icon(this._indicator.id)){
                    name = this._indicator.id;
                } else {
                    name = "error";
                }
            }
            // workaround end

            if (name && name.length)
                newIcon = this._cacheOrCreateIconByName(name, theme, this._iconSize);

            if (!newIcon && pixmap)
                newIcon = this._createIconFromPixmap(pixmap, this._iconSize);
        }

        this._mainIcon.set_child(newIcon);
    },

Позвольте мне также прокомментировать, что следующий обходной путь исправил все отсутствующие значки на панели задач в Linux mint 18.3 Sylvia.

Исправлено это для меня в Debian Stretch с пакетами cinnamon * в версии 3.2.x.

@guzzard Думали ли вы о том, чтобы предложить этот патч в качестве запроса на

@proximous , мое "исправление" - просто уродливый обходной путь. Тем не менее, я предоставил довольно много подробностей о проблеме выше, поэтому для кого-то из команды Cinnamon, например @clefebvre , @mtwebster и т. Д. , Должно быть довольно легко и быстро исправить ее.

@proximous Попробуйте "dbus-launch dropbox stop" и "dbus-launch dropox start" из командной строки, и вы увидите, что теперь должен появиться значок (уродливый обходной путь, но он работает). Этот хак также работал с viber.

@ nem0nxt Я обнаружил, что "dbus-launch XXX" исправляет и Dropbox, и Jetbrains Toolbox. Кто-нибудь знает почему? Означает ли это, что приложения неправильно используют dbus, или это означает, что у Cinnamon есть ошибка с dbus?

@guzzard Понятно. Мне бы хотелось, чтобы это было исправлено, но я придерживаюсь своего утверждения, что ваш «уродливый обходной путь» намного лучше, чем существующий код, даже для таких случаев, как мой, когда он не решает проблему, поскольку, по крайней мере, он выходит из строя изящно. Так что твое «уродливое» для меня «симпатичное» :)

@guzzard @proximous @ nem0nxt @mtwebster @clefebvre Просто

при запуске "sudo goldendict" будет отображаться индикатор приложения в трее ?? !! ?? ТАКЖЕ, при запуске "dbus-launch goldendict" индикатор приложения будет отображаться на панели задач ?? !! ??

Итак, сейчас я собираюсь отредактировать программу запуска goldendict.desktop, чтобы добавить «dbus-launch goldendict» в качестве оператора exec.

Я понимаю, что это устарело, но для записи, он работает только с вышеуказанным патчем от @guzzard для меня на одной машине (cinnamon 3.8.8). На другой машине (Cinnamon 4.0.10-2) без разницы, иконка все равно не видна.

кроме того, там, где он виден, он не меняется в зависимости от состояния приложения.

US$0.02++

Была ли эта страница полезной?
0 / 5 - 0 рейтинги