Quem usa o netspeed-applet do gnome e atualizou ele para versão 0.15, descobriu que esta versão não permite mais modificar o tamanho da fonte. Para mim isso é essencial (as fontes que vem pode padrão são muito grandes), por isso decidi fazer um patch para dar suporte a isso.

Para quem usa ArchLinux, o PKGBUILD já está no AUR :) .

Para quem não usa ele, esse é o patch:

netspeed-applet with editable font size option

diff -ru netspeed_applet-0.15.2/src/netspeed.c netspeed_applet-0.15.2.fontsize/src/netspeed.c
--- netspeed_applet-0.15.2/src/netspeed.c   2008-09-13 16:59:52.000000000 -0300
+++ netspeed_applet-0.15.2.fontsize/src/netspeed.c  2008-10-23 14:57:41.000000000 -0200
@@ -85,6 +85,7 @@
    gboolean show_sum, show_bits;
    gboolean change_icon, auto_change_device;
    GdkColor in_color, out_color;
+   int font_size;
    int width;

    GtkWidget *inbytes_text, *outbytes_text;
@@ -664,8 +665,11 @@

    /* Refresh the text of the labels and tooltip */
    if (applet->show_sum) {
+       add_markup_size(&applet->devinfo.sum_rate, applet->font_size);
        gtk_label_set_markup(GTK_LABEL(applet->sum_label), applet->devinfo.sum_rate);
    } else {
+       add_markup_size(&applet->devinfo.rx_rate, applet->font_size);
+       add_markup_size(&applet->devinfo.tx_rate, applet->font_size);
        gtk_label_set_markup(GTK_LABEL(applet->in_label), applet->devinfo.rx_rate);
        gtk_label_set_markup(GTK_LABEL(applet->out_label), applet->devinfo.tx_rate);
    }
@@ -891,6 +895,7 @@
    return;
     }
     panel_applet_gconf_set_string(PANEL_APPLET(applet->applet), "device", applet->devinfo.name, NULL);
+    panel_applet_gconf_set_int(PANEL_APPLET(applet->applet), "font_size", applet->font_size, NULL);
     panel_applet_gconf_set_bool(PANEL_APPLET(applet->applet), "show_sum", applet->show_sum, NULL);
     panel_applet_gconf_set_bool(PANEL_APPLET(applet->applet), "show_bits", applet->show_bits, NULL);
     panel_applet_gconf_set_bool(PANEL_APPLET(applet->applet), "change_icon", applet->change_icon, NULL);
@@ -901,6 +906,15 @@
     applet->settings = NULL;
 }

+/* Set the font size to the new value
+ */
+static void
+font_size_adjust_cb(GtkSpinButton *spinbutton, NetspeedApplet *applet)
+{
+   applet->font_size = gtk_spin_button_get_value_as_int(spinbutton);
+   applet->width = 0;
+}
+
 /* Called when the showsum checkbutton is toggled...
  */
 static void
@@ -944,7 +958,12 @@
    GtkWidget *category_header_label;
    GtkWidget *network_device_hbox;
    GtkWidget *network_device_label;
+   GtkWidget *label_font_size_hbox;
+   GtkWidget *label_font_size_hbox2;
+   GtkWidget *label_font_size_label;
+   GtkWidget *label_font_size_spinbutton;
    GtkWidget *indent_label;
+   GtkWidget *points_label;
    GtkWidget *show_sum_checkbutton;
    GtkWidget *show_bits_checkbutton;
    GtkWidget *change_icon_checkbutton;
@@ -1033,6 +1052,31 @@
    gtk_combo_box_set_active(GTK_COMBO_BOX(applet->network_device_combo), active);
    g_object_set_data_full(G_OBJECT(applet->network_device_combo), "devices", devices, (GDestroyNotify)free_devices_list);

+   label_font_size_hbox = gtk_hbox_new(FALSE, 6);
+   gtk_box_pack_start(GTK_BOX(controls_vbox), label_font_size_hbox, TRUE, TRUE, 0);
+
+   label_font_size_label = gtk_label_new_with_mnemonic(_("Label _font size:"));
+   gtk_label_set_justify(GTK_LABEL(label_font_size_label), GTK_JUSTIFY_LEFT);
+   gtk_misc_set_alignment(GTK_MISC(label_font_size_label), 0.0f, 0.5f);
+   gtk_size_group_add_widget(category_label_size_group, label_font_size_label);
+   gtk_box_pack_start(GTK_BOX(label_font_size_hbox), label_font_size_label, FALSE, FALSE, 0);
+   
+   label_font_size_hbox2 = gtk_hbox_new(FALSE, 6);
+   gtk_box_pack_start(GTK_BOX(label_font_size_hbox), label_font_size_hbox2, TRUE, TRUE, 0);
+   
+   label_font_size_spinbutton = gtk_spin_button_new_with_range (5.0, 32.0, 1.0);
+   gtk_spin_button_set_value(GTK_SPIN_BUTTON(label_font_size_spinbutton), (double) applet->font_size);
+   gtk_spin_button_set_snap_to_ticks(GTK_SPIN_BUTTON(label_font_size_spinbutton), TRUE);
+   gtk_spin_button_set_digits(GTK_SPIN_BUTTON (label_font_size_spinbutton), 0);
+   gtk_label_set_mnemonic_widget(GTK_LABEL(label_font_size_label), label_font_size_spinbutton);
+   gtk_box_pack_start(GTK_BOX(label_font_size_hbox2), label_font_size_spinbutton, TRUE, TRUE, 0);
+   
+   points_label = gtk_label_new(_("points"));
+   gtk_label_set_justify(GTK_LABEL (points_label), GTK_JUSTIFY_LEFT);
+   gtk_misc_set_alignment(GTK_MISC (points_label), 0.0f, 0.5f);
+   gtk_size_group_add_widget(category_units_size_group, points_label);
+   gtk_box_pack_start(GTK_BOX (label_font_size_hbox2), points_label, FALSE, FALSE, 0);
+   
    show_sum_checkbutton = gtk_check_button_new_with_mnemonic(_("Show _sum instead of in & out"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(show_sum_checkbutton), applet->show_sum);
    gtk_box_pack_start(GTK_BOX(controls_vbox), show_sum_checkbutton, FALSE, FALSE, 0);
@@ -1048,6 +1092,9 @@
    g_signal_connect(G_OBJECT (applet->network_device_combo), "changed",
             G_CALLBACK(device_change_cb), (gpointer)applet);

+   g_signal_connect(G_OBJECT (label_font_size_spinbutton), "value-changed",
+            G_CALLBACK(font_size_adjust_cb), (gpointer)applet);
+
    g_signal_connect(G_OBJECT (show_sum_checkbutton), "toggled",
             G_CALLBACK(showsum_change_cb), (gpointer)applet);

@@ -1343,6 +1390,30 @@
    }
 }  

+/* Tries to get the desktop font size out of gconf
+ * database
+ */
+static int
+get_default_font_size(void)
+{
+   int ret = 12;
+   char *buf, *ptr;
+   
+   GConfClient *client = NULL;
+   client = gconf_client_get_default();
+   if (!client)
+       return 12;
+   buf = gconf_client_get_string(client, "/desktop/gnome/interface/font_name", NULL);
+   if (!buf)
+       return 12;
+   ptr = strrchr(buf, ' ');
+   if (ptr)
+       sscanf(ptr, "%d", &ret);
+   g_free(buf);
+       
+   return ret;
+}
+
 static gboolean
 applet_button_press(GtkWidget *widget, GdkEventButton *event, NetspeedApplet *applet)
 {
@@ -1526,6 +1597,7 @@
    applet->show_sum = FALSE;
    applet->show_bits = FALSE;
    applet->change_icon = TRUE;
+   applet->font_size = -1;
    applet->auto_change_device = TRUE;

    /* Set the default colors of the graph
@@ -1553,6 +1625,9 @@
        applet->show_bits = panel_applet_gconf_get_bool(applet_widget, "show_bits", NULL);
        applet->change_icon = panel_applet_gconf_get_bool(applet_widget, "change_icon", NULL);
        applet->auto_change_device = panel_applet_gconf_get_bool(applet_widget, "auto_change_device", NULL);
+       applet->font_size = panel_applet_gconf_get_int(applet_widget, "font_size", NULL);
+       if (!applet->font_size)
+           applet->font_size = -1;

        tmp = panel_applet_gconf_get_string(applet_widget, "device", NULL);
        if (tmp && strcmp(tmp, "")) 
@@ -1587,6 +1662,9 @@
        }
    }

+   if (applet->font_size < 1)
+       applet->font_size = get_default_font_size();
+   
    if (!applet->devinfo.name) {
        GList *ptr, *devices = get_available_devices();
        ptr = devices;

O Camelo da Sibéria voltou à ativa!

Leia a seguir duas matérias excepcionais by Eugeni e Buzon, que vão transformar o mundo como o conhecemos! :)

Camelo da Sibéria » O futuro da leitura

Descobertas (by Buzon)

Agora nois vai que vai! :)


First HDR attempt, originally uploaded by eugeni_dodonov.

Hoje no lifehacker.com saiu uma matéria sobre criação de HDR. Curiosamente, eles citaram link para uma tag no flickr. E, curiosamente, a minha foto aparecia em primeiro lugar na página linkada.

Como conclusão – em menos de 1 dia a foto recebeu mais de 1300 visitas! Mais de que todas as outras fotos juntas em um período de 1 ano!

:)

Sem comentários! Reuters diz que não é montagem! Achei aqui!

Mais um exemplo do poder de python + gtk. Para tirar um screenshot da tela, salvando-o em formato JPEG, o seguinte código é suficiente:

from gtk.gdk import *
screenshot = Pixbuf(COLORSPACE_RGB, False, 8, screen_width(), screen_height())
screenshot.get_from_drawable(get_default_root_window(), colormap_get_system(), \
    0, 0, 0, 0, screen_width(), screen_height())
screenshot.save("tela.jpg", "jpeg", {"quality": "75"})

(Tá certo, dividi em 5 linhas para melhorar a legibilidade, mas no fundo são só 4 linhas mesmo).

Uma das maiores vantagens do python para mim é a legibilidade do código, facilidade de programação, e eficiência. Com quantas linhas de código seria possível fazer esse exemplo em qualquer outra linguagem? (Não vale apelar para import -window root tela.jpg porque aí é ImageMagick que faz toda a mágica!) :)


First HDR attempt, originally uploaded by eugeni_dodonov.

…e agora, primeira tentativa de criar um HDR.

Na verdade, não sei se isso é um HDR de verdade, ou somente um tone-mapping.. Mas a gama de cores ficou muito superior à da imagem original.

Hoje decidi gastar um tempo para aprender a fazer panoramas (em outras palavras, fotos compostas de forma contínua a partir de fotos menores). Por exemplo, você quer tirar foto da paisagem inteira, mas.. a sua camera só consegue pegar 1/3 dela. Solução? Tirar 3 fotos e juntar todas elas depois.

Para fazer isso, usei o Hugin. Usei 2 fotos que eu tirei no fim da semana, juntando-as para formar uma paisagem só.

Para a minha surpresa, foi absurdamente fácil o processo. Demorou menos de 5 minutos, sendo que o Hugin conseguiu fazer tudo sozinho (encontrar os pontos comuns entre as figuras, juntar elas, ajustar a exposição, etc).

Dá para ver o resultado da brincadeira no flickr.

Ahh, e tutorial que ensina a fazer tudo isso está aqui.

Bem, hoje saiu nova versão “estável” de Mandriva – Mandriva 2009. Aproveitando que estava com conexão rápida, baixei o CD de instalação (Mandriva ONE, versão que vem com Gnome) e instalei no meu note.

Concluindo em poucas palavras – essa versão de Mandriva não se deu bem com o meu notebook (ASUS G1S). Logo após a instalação, na hora de reiniciar o micro, o notebook travou de vez. Ao bootar, ele pediu para adicionar usuários (eu já tinha montado o meu /home antigo na instalação), e decidi usar o mesmo UID para o meu usuário, para continuar com os arquivos que eu tenho. Assim que eu adicionei um usuário, ele ficou mexendo sem parar no disco, rodando algum comando gigante com um grep e consumindo 100% de CPU. Aparentemente, ele quis mudar todos os arquivos do meu $HOME (tem 100GB.. hehehe) para.. para.. para algo o que eu não consegui descobrir :) . Quando matei o grep, tudo continuo normalmente, até carregar o gnome.

Carregando o gnome, a tela tornou-se pouca usável – ao mexer o mouse, o display fica cheio de pequenos pixels pretos (algo parecido acontecia com antigas placas de vídeo da S3, onde o driver de video corrompia a memória de vídeo das placas). Pelo que eu vi, Mandriva usa o driver beta de Nvidia, o que causa este problema. Entretanto, no meu notebook eu usei todos os drivers beta também (173.08, 173.14.09, 177.13, 177.67, 177.70, 177.78 e 177.80), e nunca deu esse problema.

Também por algum motivo ele detectou 2 bluetooth’es e não detectou placa de wireless (iwl4965). Durante o boot, dá a impressão de que ele fica se divertindo com o sistema – a tela apaga e acende, e depois fica com menos brilho (será que é o notebook mode?), a webcam integrada pisca, liga e desliga…

Enfim, a primeira impressão que eu tive é que o mandriva 2009 não gostou do meu notebook. Vou esperar alguns dias para sair updates, aí eu tento atualizar, para ver se melhora alguma coisa. No entanto, continuo com o meu querido Arch Linux já faz 1 ano e meio! Até então o recorde foi do Slackware (4 anos consecutivos), mas ele perdeu justamente para o Arch Linux.

Trains of Russia – uma coleção impressionante de diversos tipos de trens que tem na Rússia.

Quando morava lá, tinha várias ferrovias perto da casa.. Lembro até agora!

Linus Torvalds, o criador de Linux, também tem um blog.

E, logo neste blog, ele anunciou mais um software que ele fez nos últimos tempos – tracker, um sistema para monitorar o tempo que as crianças ficam na internet, desconectando-as depois de um tempo determinado.

O cara realmente é demais.. Faz o kernel do Linux, num fim da semana faz o GIT, e no outro desenvolve mais um software simples e eficiente como esse..

Além disso, lá tem uma bom review dos novos discos SSD de Intel, falando bem a verdade sobre o estado dos SSDs hoje em dia. Realmente, até Intel entrar neste mercado, discos SSD eram mais “moda” de que tecnologia. Agora as coisas estão diferente – só acompanhar as notícias dos novos lançamentos que grandes empresas logo depois do lançamento dos modelos da Intel. Só esperar abaixar o preço agora (umas 10x :) ).

© 2012 Eugeni's blog Suffusion theme by Sayontan Sinha