Cinnamon: `image-path` ํžŒํŠธ์— ์•„์ด์ฝ˜ ์ด๋ฆ„์ด ํฌํ•จ ๋œ ๊ฒฝ์šฐ ์•Œ๋ฆผ ๋ฐ๋ชฌ ์ถฉ๋Œ

์— ๋งŒ๋“  2018๋…„ 04์›” 21์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: linuxmint/cinnamon

```

  • ๊ณ„ํ”ผ ๊ณ„ํ”ผ 3.6.7
  • ๋ฐฐํฌ Linux Mint 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);

์ด ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ถฉ๋Œ์‹œํ‚ต๋‹ˆ๋‹ค. ์ถฉ๋Œ์€ glib์˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฉฐ send_notification () ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. Cinnamon ์•Œ๋ฆผ ๋ฐ๋ชฌ์ด ๋” ์ด์ƒ ์‘๋‹ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜๊ณ  ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์ด ์ถ”์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ˜ธ์ถœ์ž ์ธก (์˜ˆ : glib)์—์„œ GThemedIcon์— ๋Œ€ํ•œ ์ง€์›์ด Bug 745634 ์—์„œ ๋…ผ์˜๋˜๊ณ  glib ec1edef3์— ์ถ”๊ฐ€

์ด์ œ์ด ํŒŒ์ผ์„ ์‚ดํŽด๋ณด๋ฉด ๊ตฌํ˜„์ด ๊ถ๊ทน์ ์œผ๋กœ 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์„ ๋ณด๋‚ด์ฃผ์„ธ์š”. ๊ฑด๋ฐฐ,

Arnaud

BUG BUG REPRODUCED

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@ icarter09 ์˜ˆ, ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. fedora๋Š” @itzexor WIP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

๋ชจ๋“  3 ๋Œ“๊ธ€

@elboulangero ์ด ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

@ icarter09 ์‚ฌ์šฉ์ž๊ฐ€ Cinnamon์—์„œ Goodvibes์™€ ์ถฉ๋Œ์„๋ณด๊ณ  ํ•œ ํ›„ Cinnamon VM์—์„œ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ์— ๋งŒ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ๋‚˜๋ชฌ์„ ์ง์ ‘ ์‹คํ–‰ํ•˜์ง€ ์•Š์•„์„œ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ„์˜ "๋ณต์ œ ๋‹จ๊ณ„"๋ฅผ ์‹œ๋„ํ•˜์—ฌ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ

@ icarter09 ์˜ˆ, ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. fedora๋Š” @itzexor WIP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰