Ubuntu 14.10を実行していますが、通知に使用されるデフォルトのアイコンを変更できることがわかりました(基本的にnotification-audio-volume-high.svg
などを現在のテーマに追加(スクリーンショットを参照)
これは素晴らしいことですが、左側のアイコンのようにするために、バーの外観(通知バブル内の明るさ/音量の値を示すもの)を変更できるかどうか疑問に思っていました。
このバーに保存されているアイコンはどこかにありますか?その外観を記述したXMLファイルはどこかにありますか?
ありがとう
パッケージの内容を見ると、デーモンでハードコードされているようです。 gauge と呼ばれます。再構築する必要があります。
ソースを取得:
_apt-get source notify-osd
Sudo apt-get build-dep notify-osd
cd notify-osd-0.9.35+14.04.20140213/
_
必要なものを変更する
_src/default.c
_、サイズとサイズ制限
_#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
_、それを描く関数。
_// 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
{
[...]
_
Debパッケージを再構築します
_debuild -us -uc
Sudo dpkg --force-depends -i ../notify-osd_0.9.35+14.04.20140213-0ubuntu1_AMD64.deb
_
例:
色、この例の静かな赤、グラデーションポイントを試してください:RGB(0.9f、0.6f、0.6f)、(0.5f、0.3f、0.3f)&(0.4f、0.2f、0.2f)
_bubble.c
_、_// draw value-bar
_の下の_draw_value_indicator()
関数:
_ 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);
_
Cairoドキュメントの cairo_pattern_add_color_stop_rgba() を参照してください。
_/*
_&_*/
_を使用してアウトライン描画命令にコメントを付けてください。黒のアウトラインはありません。丸いバーの場合は_bar_radius = outline_height / 2;
_です。
_// 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
_
サイズが_1.2f
_になり、アイコンでよく見える
_#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,
_
ここでなぜ切り取られたのかは、バグに違いありません。
_bubble.c
_では、代わりにEM2PIXELS (defaults_get_icon_size (d), d) / 5.0f
を使用して、EM2PIXELS (defaults_get_gauge_size (d), d)
を使用してゲージの描画領域の高さを設定する必要があります。
その行を置き換えます:
_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);
_