Hoje em dia não é mais novidade que o futuro dos desktop sejam a web, a computação nas nuvens anda mudando tudo de lugar cada vez mais, e você descobre, vasculhando por ai, que quase tudo tem um pé na web. Um bom exemplo é o Qt com seu QML, mas calma, não quer dizer que você usa QML pra criar sites, quer dizer que você usa um pé da web no QML. A linguagem (se é que posso chamar assim) declarativa do Qt (QML) é baseada na sintaxe dos objetos em JavaScript (lembram do JSON?) . Além disso, é possível, por exemplo, usar o QtWebKit e criar uma aplicação com JavaScript + HTML e QML (além de Python e C++). Mas vamos deixar o Qt de lado, afinal o assunto aqui é o Gtk, mais precisamente Gtk + JavaScript.
Vasculhando pela web por uma forma de criar aplicações em JavaScript no linux, e lançá-las no desktop, esbarrei com o Seed. Seed, é um binding (wrapper) do JavaScript usando WebKit e GObject para rodar aplicações no linux, mas precisamente no gnome, já que o projeto é mantido por um cara de lá. Mas, por que raios você iria usar JavaScript aquela linguagem tosca que usam em sites para criar aplicações Desktop; e como raios é esse bicho, JavaScript + Gtk? Pelo que li a grande vantagem de se usar esse binding do JavaScript é o de poder integrar com as diversas libs do projeto gnome, quando falo diversas me refiro a; GLib, GTK, GIO, Gstreamer, Clutter, GObject, etc. Logo de cara você percebe que a integração é larga, mas não bastasse isso criar aplicações em Seed (JavaScript) + Gtk, por exemplo, é muito mais barato (computacionalmente falando) do que criar aplicações em PyGtk, e menos complicado do que criar com C puro (ansi C) e Gtk.
Para vocês não dizerem que estou inventando coisas aqui vai um código exemplo de como criar uma aplicação ‘Hello World’ com Seed + Gtk.
CODE
#!/usr/bin/env seed
Gtk = imports.gi.Gtk;
Gtk.init(null, null);
var window = new Gtk.Window({title:"Core Code Teste"});
window.signal.hide.connect(Gtk.main_quit);
var button = new Gtk.Button({label: "click me"});
button.signal.clicked.connect(function(w) {
Seed.print("Hello World =D");
});
window.add(button);
window.show_all();
Gtk.main();
Viu, fácil né?! Agora observe bem e lembre-se, qual é uma das melhores características que o JavaScript possui? Se você não lembra eu vou te ajudar, aquela coisa de função anônima dentro de função, lembrou? É isso mesmo, os closures. Essa é uma das vantagens, também, de se usar Seed para construir suas aplicações, você vai poder abusar dos closures, e claro, da sua prática em JavaScript. Pra você que achava que ia morrer programando JQuery e JavaScript pra web, que tal se aventurar no mundo do desktop com Gtk, clutter,Gio, Glib…etc. Afinal, segundo os criadores desse binding esse foi um dos propósitos do projeto, atrair desenvolvedores web/JavaScript par ao ambiente Gnome.
Finalizando, para instalar o seed no ubuntu basta usar a força: sudo apt-get install seed =P.
Que a força esteja com vocês padawans!!
Referências
[1] http://developer.gnome.org/seed/stable/
[2] http://live.gnome.org/Seed/Tutorial
Read Full Post »