web-dev-qa-db-fra.com

Notify -osd - modifie la barre de notification de volume / luminosité

J'utilise Ubuntu 14.10 et j'ai compris qu'il était possible de changer les icônes par défaut utilisées pour les notifications (essentiellement en ajoutant notification-audio-volume-high.svg etc. à votre thème actuel (voir la capture d'écran)).

Brightness notify-bubble with custom icon

Bien que ce soit formidable, je me demandais s’il était possible de modifier l’aspect de la barre (celle qui indique la valeur de la luminosité/du volume dans la bulle de notification) afin de la rapprocher de l’icône de gauche. .

Y at-il quelque part des icônes stockées pour cette barre? Existe-t-il quelque part un fichier XML décrivant son apparence?

Merci

2
wa4557

En examinant le contenu de son package, il semble codé en dur dans le démon. Cela s'appelle jauge . Vous devez le reconstruire.

  1. Obtenir la source:

    apt-get source notify-osd
    Sudo apt-get build-dep notify-osd
    cd notify-osd-0.9.35+14.04.20140213/
    
  2. Modifier les choses dont vous avez besoin
    src/default.c, tailles et limites de taille

    #define DEFAULT_GAUGE_SIZE           0.625f
    #define DEFAULT_GAUGE_OUTLINE_WIDTH  0.125f
    [...]
            property_gauge_size = g_param_spec_double (
                                    "gauge-size",
                                    "gauge-size",
                                    "Size/height (in em) of gauge/indicator",
                                    0.5f,
                                    1.0f,
    [...]
            property_gauge_outline_width = g_param_spec_double (
                                    "gauge-outline-width",
                                    "gauge-outline-width",
                                    "Width/thickness (in em) of gauge-outline",
                                    0.1f,
                                    0.2f,
    

    src/bubble.c, fonction qui le dessine.

    // color-, alpha-, radius-, width-, height- and gradient-values were determined
    // by very close obvervation of a SVG-mockup from the design-team
    static void
    _draw_value_indicator (cairo_t* cr,
                           gint     value,             // value to render: 0 - 100
                           gint     start_x,           // top of surrounding rect
                           gint     start_y,           // left of surrounding rect
                           gint     width,             // width of surrounding rect
                           gint     height,            // height of surrounding rect
                           gint     outline_thickness) // outline-thickness
    {
    [...]
    
  3. Reconstruire le paquet deb

    debuild -us -uc
    Sudo dpkg --force-depends -i ../notify-osd_0.9.35+14.04.20140213-0ubuntu1_AMD64.deb
    

    modified notify-osd gauge

Exemple:

  1. Couleur, essayez cet exemple, rouge calme, points de dégradé: RVB (0.9f, 0.6f, 0.6f), (0.5f, 0.3f, 0.3f) et (0.4f, 0.2f, 0.2f)

    Dans bubble.c, _draw_value_indicator() fonction ci-dessous // draw value-bar:

            gradient = cairo_pattern_create_linear (0.0f,
                                                    start_y +
                                                    outline_thickness,
                                                    0.0f,
                                                    start_y +
                                                    outline_height -
                                                    2 * outline_thickness);
            cairo_pattern_add_color_stop_rgba (gradient,
                                               0.0f,
                                               0.9f,
                                               0.6f,
                                               0.6f,
                                               1.0f);
            cairo_pattern_add_color_stop_rgba (gradient,
                                               0.75f,
                                               0.5f,
                                               0.3f,
                                               0.3f,
                                               1.0f);
            cairo_pattern_add_color_stop_rgba (gradient,
                                               1.0f,
                                               0.4f,
                                               0.2f,
                                               0.2f,
                                               1.0f);
    
            cairo_set_source (cr, gradient);
            cairo_fill (cr);
    

    Voir cairo_pattern_add_color_stop_rgba () dans la documentation du Caire.

    Commentez les instructions de dessin en utilisant /* & */ donc pas de contour noir, bar_radius = outline_height / 2; pour une barre bien arrondie.

    // draw bar-background
    /*
    cairo_set_line_width (cr, outline_thickness);
    cairo_set_source_rgba (cr, 0.0f, 0.0f, 0.0f, 0.5f);
    draw_round_rect (cr,
    [...]
    cairo_fill (cr);
    cairo_pattern_destroy (gradient);
    */
    //bar_radius = outline_radius;
    bar_radius = outline_height / 2;
    bar_width  = outline_width - 2 * outline_radius;
    //bar_height = outline_height - outline_radius;
    
    // draw value-bar
    
  2. Taille à 1.2f, pour bien paraître avec l'icône

    #define DEFAULT_GAUGE_SIZE           1.2f
    [...]
        property_gauge_size = g_param_spec_double (
                                "gauge-size",
                                "gauge-size",
                                "Size/height (in em) of gauge/indicator",
                                0.5f,
                                5.0f,
    
  3. Voici pourquoi il a été recadré, cela devrait être un bug.

    Dans bubble.c, au lieu de EM2PIXELS (defaults_get_icon_size (d), d) / 5.0f, vous devez utiliser EM2PIXELS (defaults_get_gauge_size (d), d) pour définir la hauteur de la zone de dessin pour la jauge.

    Remplacez cette ligne:

    void
    _refresh_indicator (Bubble* self)
    {
    [...]
        // create temp. scratch surface
        normal = cairo_image_surface_create (
                CAIRO_FORMAT_ARGB32,
                EM2PIXELS (defaults_get_bubble_width (d), d) -
                3 * EM2PIXELS (defaults_get_margin_size (d), d) -
                EM2PIXELS (defaults_get_icon_size (d), d)
                + 2 * BUBBLE_CONTENT_BLUR_RADIUS,
                EM2PIXELS (defaults_get_icon_size (d), d) / 5.0f
                + 2 * BUBBLE_CONTENT_BLUR_RADIUS);
    

    à:

    void
    _refresh_indicator (Bubble* self)
    {
    [...]
        // create temp. scratch surface
        normal = cairo_image_surface_create (
                CAIRO_FORMAT_ARGB32,
                EM2PIXELS (defaults_get_bubble_width (d), d) -
                3 * EM2PIXELS (defaults_get_margin_size (d), d) -
                EM2PIXELS (defaults_get_icon_size (d), d)
                + 2 * BUBBLE_CONTENT_BLUR_RADIUS,
                EM2PIXELS (defaults_get_gauge_size (d), d)
                + 2 * BUBBLE_CONTENT_BLUR_RADIUS);
    

    example of custom notify-osd gauge

1
user.dz