2 votes

Notifier -osd - barre de notification de changement de volume/luminosité

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

Bulle de notification de luminosité avec icône personnalisée

Alors que c'est super, je me demandais s'il était possible de changer l'apparence de la barre (celle qui montre quelle est la valeur de la luminosité / du volume dans la bulle de notification) afin de la rendre plus semblable à l'icône sur la gauche.

Y a-t-il des icônes stockées quelque part pour cette barre? Y a-t-il quelque part un fichier XML qui décrit son apparence?

Merci

1voto

user.dz Points 45060

En regardant le contenu de son package, il semble codé en dur dans le démon. Il s'appelle gauge. 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 ce dont vous avez besoin
    src/default.c, tailles & 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",
                                    "Taille/hauteur (en em) de la jauge/indicateur",
                                    0.5f,
                                    1.0f,
    [...]
            property_gauge_outline_width = g_param_spec_double (
                                    "gauge-outline-width",
                                    "gauge-outline-width",
                                    "Largeur/épaisseur (en em) de la jauge/contour",
                                    0.1f,
                                    0.2f,

    src/bubble.c, fonction qui le dessine.

    // les valeurs des couleurs, alpha, rayon, largeur, hauteur et dégradés ont été déterminées
    // par une observation très étroite d'une fausse image SVG de l'équipe de design
    static void
    _draw_value_indicator (cairo_t* cr,
                           gint     valeur,             // valeur à afficher: 0 - 100
                           gint     start_x,           // haut du rectangle environnant
                           gint     start_y,           // gauche du rectangle environnant
                           gint     largeur,             // largeur du rectangle environnant
                           gint     hauteur,            // hauteur du rectangle environnant
                           gint     épaisseur_contour) // épaisseur du contour
    {
    [...]
  3. Reconstruire le paquet deb

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

    jauge notify-osd modifiée

Exemple :

  1. Couleur, essayez cet exemple rouge discret, points du dégradé : RGB (0.9f,0.6f,0.6f),(0.5f,0.3f,0.3f) & (0.4f,0.2f,0.2f)

    Dans bubble.c, fonction _draw_value_indicator() sous // dessiner la barre de valeur:

            dégradé = cairo_pattern_create_linear (0.0f,
                                                    start_y +
                                                    épaisseur_contour,
                                                    0.0f,
                                                    start_y +
                                                    hauteur_contour -
                                                    2 * épaisseur_contour);
            cairo_pattern_add_color_stop_rgba (dégradé,
                                               0.0f,
                                               0.9f,
                                               0.6f,
                                               0.6f,
                                               1.0f);
            cairo_pattern_add_color_stop_rgba (dégradé,
                                               0.75f,
                                               0.5f,
                                               0.3f,
                                               0.3f,
                                               1.0f);
            cairo_pattern_add_color_stop_rgba (dégradé,
                                               1.0f,
                                               0.4f,
                                               0.2f,
                                               0.2f,
                                               1.0f);
    
            cairo_set_source (cr, dégradé);
            cairo_fill (cr);

    Voir cairo_pattern_add_color_stop_rgba () dans la documentation de Cairo.

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

    // dessiner l'arrière-plan de la barre
    /*
    cairo_set_line_width (cr, épaisseur_contour);
    cairo_set_source_rgba (cr, 0.0f, 0.0f, 0.0f, 0.5f);
    draw_round_rect (cr,
    [...]
    cairo_fill (cr);
    cairo_pattern_destroy (dégradé);
    */
    //bar_radius = rayon_contour;
    bar_radius = hauteur_contour / 2;
    bar_width  = largeur_contour - 2 * rayon_contour;
    //bar_height = hauteurs_contour - rayon_contour;
    
    // dessiner la barre de valeur
  2. Taille à 1.2f, pour bien s'adapter à l'icône

    #define DEFAULT_GAUGE_SIZE           1.2f
    [...]
        property_gauge_size = g_param_spec_double (
                                "gauge-size",
                                "gauge-size",
                                "Taille/hauteur (en em) de la jauge/indicateur",
                                0.5f,
                                5.0f,
  3. Voici pourquoi cela a été coupé, c'est probablement un bug.

    Dans bubble.c, au lieu de EM2PIXELS (defaults_get_icon_size (d), d) / 5.0f cela devrait 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)
    {
    [...]
        // créer une surface temporaire
        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);

    par :

    void
    _refresh_indicator (Bubble* self)
    {
    [...]
        // créer une surface temporaire
        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);

    exemple de jauge personnalisée pour notify-osd

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X