又对awn-applet的通知栏图标hack了一下
曾经写过一篇文章《对awn-applet的notification area的一个小改动》,目的是为了避免高像素图标将notification area这个applet的高度撑破,经过修改,确实能将每个图标的像素给固定住,使得applet保持原大小。今天通过重新解读代码,发现原来的修改步骤并不那么完美,事实上只需要修改一条语句即可,仍旧是在applet.c这个源文件中,看到如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | static void tray_icon_added (EggTrayManager *manager, GtkWidget *icon, TrayApplet *applet) { //gtk_widget_set_size_request (GTK_WIDGET (icon), 24, 24); g_object_set_qdata (G_OBJECT (icon), new_quark, GINT_TO_POINTER (1)); g_object_set_qdata (G_OBJECT (icon), del_quark, GINT_TO_POINTER (0)); applet->icons = g_list_append (applet->icons, icon); gtk_widget_set_size_request (icon, icon_size, icon_size); tray_applet_refresh (applet); } |
其中的11行的gtk_widget_set_size_request函数,在
因此不用我以前那么麻烦的修改,只需要在第11行上将后一个icon_size指定好大小即可。
但是有些细节还是不尽完美。比如grnotify这个软件在notification area上的高宽比不是1:1,图标右侧有未读订阅数显示,效果如下图:

而经过我修改的新applet中,grnotify这个软件的高宽比变成是1:1,也就是它图标右侧的未读订阅数不能显示,如下图:

我是个偏向完美主义的人,自然要继续修改代码。
弄了半天之后发现,原来将第11行代码上的24改成22就可以了。因为以前修改过pidgin的图标,知道trayicon一般有三种分辨率:18x18,22x22,48x48。为什么修改成22就可以显示真实的宽高比了呢?估计和图标的显示机制有关。
不猜了,反正我现在用着正常就好,嗯。



















不错啊,自动动手改东西。。。