Cinnamon: рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдбреЗрдореЙрди рдХреНрд░реИрд╢ рдЬрдм `рдЫрд╡рд┐-рдкрде` рд╕рдВрдХреЗрдд рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: linuxmint/cinnamon

```

  • рджрд╛рд▓рдЪреАрдиреА рджрд╛рд▓рдЪреАрдиреА 3.6.7
  • рд╡рд┐рддрд░рдг рд▓рд┐рдирдХреНрд╕ рдЯрдХрд╕рд╛рд▓ резрео.рей рд╕рд┐рд▓реНрд╡рд┐рдпрд╛
  • 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 () рдЯрд╛рдЗрдо рдЖрдЙрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рджрд╛рд▓рдЪреАрдиреА рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдбреЗрдореЙрди рдЕрдм рдФрд░ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рднреА рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЬрд┐рддрдирд╛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ рдирдЬрд╝рд░ рд░рдЦреАред рдХреЙрд▓рд░ рд╕рд╛рдЗрдб рдкрд░ рдкрд╣рд▓реЗ (рдпрд╛рдиреА рдЧреНрд▓рд┐рдм), рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ GThemedIcon рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкрд░ рдмрдЧ 745634 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рдФрд░ рдЧреНрд▓рд┐рдм 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 рд╣рд┐рдВрдЯ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЬрдВрдХ рдЗрдирдкреБрдЯ рдХреЛ рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рджрд╛рд▓рдЪреАрдиреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреБрдЫ рд▓реЙрдЧ рдЬреЛрдбрд╝реЗ, рдФрд░ рдореИрдВ рдпрд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реБрдЖ 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 рдХрдерди рдЬреЛрдбрд╝рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдореИрдВ рдЖрдЧреЗ рдирд╣реАрдВ рдЧрдпрд╛ред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдЪреАрдпрд░реНрд╕,

рдЕрд░рдиреЙрдб

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ icarter09 рд╣рд╛рдБ рдпрд╣ рдЕрднреА рднреА рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдлреЗрдбреЛрд░рд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @itzexor WIP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

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

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@elboulangero рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@ icarter09 рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреЗрд╡рд▓ рджрд╛рд▓рдЪреАрдиреА рд╡реАрдПрдо рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рджрд╛рд▓рдЪреАрдиреА рдкрд░ рдЧреБрдбрд╡рд┐рдмреНрд╕ рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реВрдЪрдирд╛ рджреАред рдореИрдВ рдЦреБрдж рджрд╛рд▓рдЪреАрдиреА рдирд╣реАрдВ рдЪрд▓рд╛рддрд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ред

рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмрд╛рдд рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЖрдк рдКрдкрд░ "рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг" рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдЪрд┐рдпрд░реНрд╕

@ icarter09 рд╣рд╛рдБ рдпрд╣ рдЕрднреА рднреА рдпрд╣рд╛рдБ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдлреЗрдбреЛрд░рд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @itzexor WIP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Cloudwalk9 picture Cloudwalk9  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ch3pjw picture ch3pjw  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

damian101 picture damian101  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dirent1 picture dirent1  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

FreedomFighterSparrow picture FreedomFighterSparrow  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ