A “Hello World” like example for GTK-VNC in Perl, Python and JavaScript
I have written before about what a great benefit GObject Introspection is, by removing the need to write dynamic language bindings for C libraries. When I ported GTK-VNC to optionally build with GTK3, I did not bother to update the previous manually created Python binding. Instead application developers are now instructed to use GObject Introspection if they ever want to use GTK-VNC from non-C languages. As a nice demo of the capabilities I have written the bare minimum “Hello World” like example for GTK-VNC in Perl, Python and JavaScript. The only significant difference between these examples is syntax for actually importing a particular library. The Perl binding is the most verbose for importing libraries, which is a surprise, since Perl is normally a very concise language. Hopefully they will invent a more concise syntax for importing soon.
Perl “hello world” VNC client
#!/usr/bin/perl use Gtk3 -init; Glib::Object::Introspection->setup(basename => 'GtkVnc', version => '2.0', package => 'GtkVnc'); Glib::Object::Introspection->setup(basename => 'GVnc', version => '1.0', package => 'GVnc'); GVnc::util_set_debug(1); my $win = Gtk3::Window->new ('toplevel'); my $dpy = GtkVnc::Display->new(); $win->set_title("GTK-VNC with Perl"); $win->add($dpy); $dpy->open_host("localhost", "5900"); $win->show_all; Gtk3::main;
Python “hello world” VNC client
#!/usr/bin/python from gi.repository import Gtk; from gi.repository import GVnc; from gi.repository import GtkVnc; GVnc.util_set_debug(True) win = Gtk.Window() dpy = GtkVnc.Display() win.set_title("GTK-VNC with Python") win.add(dpy) dpy.open_host("localhost", "5900") win.show_all() Gtk.main()
JavaScript “hello world” VNC client
#!/usr/bin/gjs const Vnc = imports.gi.GtkVnc; const GVnc = imports.gi.GVnc; const Gtk = imports.gi.Gtk; Gtk.init(0, null); GVnc.util_set_debug(true); var win = new Gtk.Window(); var dpy = new Vnc.Display(); win.set_title("GTK-VNC with JavaScript"); win.add(dpy); dpy.open_host("localhost", "5900"); win.show_all(); Gtk.main();