Cinnamon: `image-path`ヒントにアイコン名が含まれていると通知デーモンがクラッシュする

作成日 2018年04月21日  ·  3コメント  ·  ソース: linuxmint/cinnamon

`` `

  • シナモンシナモン3.6.7
  • ディストリビューションLinuxMint 18.3 Sylvia
  • 64ビット
    `` `

問題

通知デーモンはアイコン名をサポートしていません。

アプリケーション側では、GApplicationを使用して通知を送信します。 この種類のコードを使用してアイコンを設定します。

icon = g_themed_icon_new("edit-copy");
g_notification_set_icon(notif, icon);
g_application_send_notification(app, "notif-id", notif);

このコードは基本的に私のアプリケーションをクラッシュさせます。 クラッシュは、send_notification()がタイムアウトしたためにトリガーされるglibのバグが原因です。 Cinnamon通知デーモンが応答しなくなり、おそらく同様にクラッシュしたため、タイムアウトになります。

私はそれを可能な限り追跡しました。 最初に呼び出し側(つまりglib)で、GThemedIconのサポートがバグ745634で説明され、 わかります。

このファイルを調べると、実装によって最終的にアイコンがimage-pathヒントに保存されることがわかります。 それは私たちを再現するためのステップにつながります...

再現する手順

したがって、 g_application_send_notification()によって送信されるdbus呼び出しを再作成できます。 画像については、フルパス(呼び出し元がGFileIconを使用した場合に取得されるもの)、または単に拡張子のないファイル名(呼び出し元がGThemedIconを使用した場合に取得されるもの)のいずれかを使用できます。

フルパスの設定は機能します:

IMAGE=/usr/share/icons/Adwaita/48x48/actions/edit-copy.png
python -c "import dbus; print dbus.Bus().call_blocking(\
    'org.freedesktop.Notifications', \
    '/org/freedesktop/Notifications', \
    'org.freedesktop.Notifications', \
    'Notify', \
    'susssasa{sv}i', \
    ('appname', 0, '', 'summary', 'body', [], {'image-path': '$IMAGE'}, -1))"

アイコン名を設定しても、通知は表示されません。

IMAGE=edit-copy
python -c ... # copy-paste the snippet above

その他の情報

通知デーモンでテーマアイコンをサポートするかどうかはあなた次第ですが、少なくとも通知デーモンは、 image-pathヒントでアプリケーションから送信されるすべてのジャンク入力を適切に処理する必要があります。

Cinnamon Javascriptにいくつかのログを追加したところ、ファイルjs/ui/notificationDaemon.js

       } else if (hints['image-path']) {
           return textureCache.load_uri_async(GLib.filename_to_uri(hints['image-path'], null), size, size);

GLib.filename_to_uriは処理されない例外を発生させるため、この呼び出しは返されません。 このファイルには、例外が処理されない呼び出しがいくつかあることに気づきました。

try catchステートメントを追加しましたが、通知が表示されません。 私はそれ以上進みませんでした。

これがお役に立てば幸いです。詳細については、遠慮なくpingしてください。 乾杯、

アルノー

BUG BUG REPRODUCED

最も参考になるコメント

@ icarter09はい、まだここでは問題です。fedora

https://github.com/itzexor/Cinnamon/commit/d56f1cca19867dfa44b79e654f729d2f27319e1f

全てのコメント3件

@elboulangeroまだこの問題が発生していますか?

@ icarter09申し訳ありませんが、ユーザーがCinnamonでGoodvibesのクラッシュを報告した後、CinnamonVMでいくつかのテストを行っているときにのみそれがわかりました。 私は自分でシナモンを経営していないので、言えません。

そうは言っても、上記の「再現手順」を試して、それがまだ問題であるかどうかを確認することができます。

乾杯

@ icarter09はい、まだここでは問題です。fedora

https://github.com/itzexor/Cinnamon/commit/d56f1cca19867dfa44b79e654f729d2f27319e1f

このページは役に立ちましたか?
0 / 5 - 0 評価