Ao examinar o conteúdo do pacote, ele parece estar codificado no daemon. É chamado de medidor . Você precisa reconstruí-lo.
-
Obter fonte:
apt-get source notify-osd sudo apt-get build-dep notify-osd cd notify-osd-0.9.35+14.04.20140213/
-
Modifique as coisas de que você precisa em
src/default.c
, tamanhos e amp; limites de tamanho#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
, função que o desenha.// 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 { [...]
-
Reconstrua o pacote deb
debuild -us -uc sudo dpkg --force-depends -i ../notify-osd_0.9.35+14.04.20140213-0ubuntu1_amd64.deb
Exemplo:
-
Cor, experimente este exemplo em vermelho, pontos de gradiente: RGB (0,9f, 0,6f, 0,6f), (0,5f, 0,3f, 0,3f) & amp; (0.4f, 0.2f, 0.2f)
Na função
bubble.c
,_draw_value_indicator()
abaixo de// 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);
Veja cairo_pattern_add_color_stop_rgba () em Cairo doc's.
Comente as instruções de desenho de contorno usando
/*
& amp;*/
, então não há contorno preto,bar_radius = outline_height / 2;
para barra bem arredondada.// 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
-
Tamanho para
1.2f
, para ter boa aparência com o ícone#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,
-
Aqui porque foi cortado, deve ser um bug.
Em
bubble.c
, em vez deEM2PIXELS (defaults_get_icon_size (d), d) / 5.0f
, deve usarEM2PIXELS (defaults_get_gauge_size (d), d)
para definir a altura da área de desenho para o medidor.Substitua essa linha:
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);
para:
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);